⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsel-56xx.h

📁 GM5621原代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#define gm_WriteNVRAMBlock_d              gm_WriteNVRAMBlock
#define gm_ReadNVRAMAbsolute_d            gm_ReadNVRAMAbsolute
#define gm_WriteNVRAMAbsolute_d           gm_WriteNVRAMAbsolute

#define gm_SetBrightnessMainPWM_d			gm_SetBrightnessMainPWM

#define gm_DecompressLoadGammaTableMain_d	gm_DecompressLoadGammaTableMain

#define gm_UartInit_d							gm_UartInit
#define gm_SerialHandler_d						gm_SerialHandler
#define gm_Ddc2biHandler_d						gm_Ddc2biHandler
#define gm_CommsGetMessage_d					gm_CommsGetMessage
#define gm_CommsSendReply_d					gm_CommsSendReply
#define gm_Print_d								gm_Print
#define gm_Printf_d								gm_Printf


#define gmi_ReadRegDWord                  gm_ReadRegDWord
#define gmi_WriteRegDWord                 gm_WriteRegDWord
#define gm_WriteRegBlock_d                gm_WriteRegBlock
#define gmi_StartRcvMsg                   gm_StartRcvMsg
#define gm_SystemInit_d						   gm_SystemInit

//**************************************************************
//	 SELECT FLAVOR OF PRIVATE FUNCTIONS
//**************************************************************

#define gmp_WidthHtotal_WID		gmp_WidthHtotal
#define gmp_ReadIBDHWidth_d		gmp_ReadIBDHWidth

//**************************************************************
//	 MAKE MULTI-CHANNEL FUNCTION INTO SINGLE CHANNEL
//**************************************************************

// GSEL functions
#define gm_AutoGeometry(B_Channel, AutoMode)									gm_AutoGeometry_S(AutoMode)

// The flavor chosen above must be commented out here
#define gm_AutoGeometry_FT(B_Channel, AutoMode)								gm_AutoGeometry_FT_S(AutoMode)
//#define gm_AutoGeometry_IA3(B_Channel, AutoMode)							gm_AutoGeometry_IA3_S(AutoMode)
#define gm_AutoGeometry_IA3S(B_Channel, AutoMode)							gm_AutoGeometry_IA3S_S(AutoMode)
#define gm_AutoGeometry_IA3K(B_Channel, AutoMode)							gm_AutoGeometry_IA3K_S(AutoMode)
#define gm_AutoGeometry_IA3SK(B_Channel, AutoMode)						gm_AutoGeometry_IA3SK_S(AutoMode)
#define gm_AutoGeometry_IA3KF(B_Channel, AutoMode)							gm_AutoGeometry_IA3KF_S(AutoMode)
#define gm_AutoGeometry_IA3SKF(B_Channel, AutoMode)						gm_AutoGeometry_IA3SKF_S(AutoMode)

#define gm_AutoPosition(B_Channel)												gm_AutoPosition_S()
#define gm_AutoColorBalance(B_Channel)											gm_AutoColorBalance_S()
#define gm_AutoADCInit(B_Channel)												gm_AutoADCInit_S()
#define gm_AutoCalibrateOffset1(B_Channel)									gm_AutoCalibrateOffset1_S()
#define gm_SetInputWindow(B_InputChannel)										gm_SetInputWindowMain()
#define gm_SetInputHTotal(B_InputChannel, W_Htotal)						gm_SetInputHTotalMain(W_Htotal)
#define gm_SetAdcPhase(B_InputChannel, B_Phase)								gm_SetAdcPhaseMain(B_Phase)
#define gm_WaitInputVSync(B_InputChannel, B_NumFrames)					gm_WaitInputVSyncMain(B_NumFrames)
#define gm_SetAdcGain(B_InputChannel, B_RGain, B_GGain, B_BGain)		gm_SetAdcGain_S(B_RGain, B_GGain, B_BGain)
#define gm_SetAdcOffset2(B_InputChannel, B_ROff2, B_GOff2, B_BOff2)	gm_SetAdcOffset2_S(B_ROff2, B_GOff2, B_BOff2)
#define gm_GetSclkFrequency(B_InputChannel)									gm_GetSclkFrequencyMain()
#define gm_SetPhaseSkew(B_InputChannel, W_PhaseSkew)				      gm_SetPhaseSkew_S(W_PhaseSkew)
#define gm_SetInputFiltering(B_InputChannel, W_Filter)				   gm_SetInputFiltering_S(W_Filter)

// Private funtions
#define gmp_WidthHtotal(B_Channel)					gmp_WidthHtotal_S()
#define gm_AutoIBDThresh(Channel, Color, Stealth)	gm_AutoIBDThresh_d()
#define gmp_GrabPixel(B_Channel, W_X, W_Y)		gmp_GrabPixel_S(W_X, W_Y)
#define gmp_GrabPixelColor_m(B_Channel, W_X, W_Y, B_Color)		gmp_GrabPixelColor_S(W_X, W_Y, B_Color)
#define gmp_AutoPositionNoIBD_GF						gmp_AutoPositionNoIBD
#define gmp_AutoPositionNoIBD(B_Channel)			gmp_AutoPositionNoIBD_S()
#define gmp_ReadIBDHWidth(B_Channel)				gmp_ReadIBDHWidth_S()

//**************************************************************
//	 PROTOTYPE MULTI-CHANNEL FUNCTIONS THAT ARE CONVERTED TO SINGLE CHANNEL
//**************************************************************

// GSEL functions
gmt_RET_STAT gm_AutoGeometry_S(BYTE AutoMode);
gmt_RET_STAT gm_AutoPosition_S(void);
gmt_RET_STAT gm_AutoColorBalance_S(void);
void gm_AutoCalibrateOffset1_S(void);
gmt_RET_STAT gm_AutoADCInit_S(void);
void gm_SetAdcOffset2_S(BYTE B_Roff, BYTE B_Goff, BYTE B_Boff);
void gm_SetAdcGain_S(WORD B_RGain, WORD B_GGain, WORD B_BGain);
void gm_SetPhaseSkew_S(WORD W_PhaseSkew);
void gm_SetInputFiltering_S(WORD W_Filter);
gmt_RET_STAT gm_AutoIBDThresh_d(void);

// Private funtions
gmt_RET_STAT gmp_WidthHtotal_S(void);
BYTE gmp_GrabPixel_S(WORD W_X, WORD W_Y);
BYTE gmp_GrabPixelColor_S(WORD W_X, WORD W_Y, BYTE B_Color);
gmt_RET_STAT gmp_AutoPositionNoIBD_S(void);
WORD gmp_ReadIBDHWidth_S(void);

//**************************************************************
//	 CONVERT OLD-STYLE FUNCTION NAMES
//**************************************************************

// GSEL functions
#define gm_AutoGeometryMain		gm_AutoGeometry_S
#define gm_AutoPositionMain		gm_AutoPosition_S
#define gm_AutoColorBalanceMain	gm_AutoColorBalance_S
#define gm_AutoADCInitMain			gm_AutoADCInit_S
#define gm_SetAdcOffset2Main		gm_SetAdcOffset2_S
#define gm_SetAdcGainMain			gm_SetAdcGain_S

// Private funtions
//#define gmp_GrabPixelColor(W_X, W_Y, B_Color)		gmp_GrabPixelColor_S(W_X, W_Y, B_Color)  // fix
#define gmp_GrabPixelColor		gmp_GrabPixelColor_m

//**************************************************************

DWORD far gm_ReadRegDWord(WORD W_RegAddr);
void  far gm_WriteRegDWord(WORD W_RegAddr, DWORD D_Data);
void  far gm_WriteRegBlock(const gmt_REG_BLOCK far * Wp_DataTable);
void  far gm_DisableInterrupts(void);

#if NVRAM_USE_FLASH
	extern gmt_RET_STAT pp_InitNVRAM(void);
	extern gmt_BLOCKINFO pp_GetNVRAMBlockInfo(BYTE B_BlockType, BYTE B_BlockIndex);
	extern gmt_RET_STAT pp_ReadNVRAMBlock(BYTE B_BlockType, BYTE B_Index, BYTE * Bp_Buffer, WORD W_Offset, WORD W_Length);
	extern gmt_RET_STAT pp_WriteNVRAMBlock(BYTE B_BlockType, BYTE B_Index, BYTE *Bp_Buffer, WORD W_Offset, WORD W_Length);
	extern gmt_RET_STAT pp_ReadNVRAMAbsolute(WORD Address, BYTE * Bp_Buffer, WORD W_Length);
	extern gmt_RET_STAT pp_WriteNVRAMAbsolute(WORD Address, BYTE * Bp_Buffer, WORD W_Length);

	// redefine EEPROM NVRAM functions to FLASH versions..
	#define gm_GetNVRAMBlockInfo			pp_GetNVRAMBlockInfo
	#define gm_ReadNVRAMBlock			pp_ReadNVRAMBlock
	#define gm_WriteNVRAMBlock			pp_WriteNVRAMBlock
	#define gm_ReadNVRAMAbsolute			pp_ReadNVRAMAbsolute
	#define gm_WriteNVRAMAbsolute			pp_WriteNVRAMAbsolute

	// Added function to clear blocks of a same type more efficiently (especially for page-write type of flash like PMC).
	gmt_RET_STAT pp_ClearNVRAMBlockWithSameType(BYTE B_BlockType, BYTE B_StartIndex, BYTE B_MaxEntry, BYTE *Bp_Buffer, WORD W_Length);
	#define gm_ClearNVRAMBlock   			pp_ClearNVRAMBlockWithSameType
#endif //NVRAM_USE_FLASH

void  far gm_SystemInit(void);

// Read or Write to a given register
#define gm_ReadRegByte(W_RegAddr)				\
	(*(BYTE volatile* volatile)(W_RegAddr))

#define gm_WriteRegByte(W_RegAddr, RegValue)	\
	(*(BYTE volatile* volatile)(W_RegAddr) = (BYTE)(RegValue))

#define gm_ReadRegWord(W_RegAddr)				\
	(*(WORD volatile* volatile)(W_RegAddr))

#define gm_WriteRegWord(W_RegAddr, W_RegValue)	\
	(*(WORD volatile* volatile)(W_RegAddr) = (WORD)(W_RegValue))

#define gm_ReadRegTriBytes(W_RegAddr)  \
	 (gmi_ReadRegDWord(W_RegAddr) & 0x00ffffffUL)

#define gm_WriteRegTriBytes(W_RegAddr, D_RegValue)                         \
	(*(WORD volatile* volatile)(W_RegAddr)   = (WORD)(D_RegValue));  \
	(*(BYTE volatile* volatile)(W_RegAddr+2) = (BYTE)(D_RegValue >> 16))

//
// Set or clear specified bits in given register
//
#define gm_SetRegBitsWord(W_RegAddr, W_RegValue)	\
 	((*(WORD volatile* volatile)(W_RegAddr)) = (*(WORD volatile* volatile)(W_RegAddr)) | ((WORD volatile)(W_RegValue)))

#define gm_ClearRegBitsWord(W_RegAddr, W_RegValue)	\
 	((*(WORD volatile* volatile)(W_RegAddr)) = (*(WORD volatile* volatile)(W_RegAddr)) & (~((WORD volatile)(W_RegValue))))

#define gm_SetRegBitsByte(W_RegAddr, W_RegValue)	\
 	((*(BYTE volatile* volatile)(W_RegAddr)) = (*(BYTE volatile* volatile)(W_RegAddr)) | ((BYTE volatile)(W_RegValue)))

#define gm_ClearRegBitsByte(W_RegAddr, W_RegValue)	\
 	((*(BYTE volatile* volatile)(W_RegAddr)) = (*(BYTE volatile* volatile)(W_RegAddr)) & (~((BYTE volatile)(W_RegValue))))

#define gm_ClearAndSetBitsByte(W_RegAddr, B_AndData, B_OrData)	\
 	((*(BYTE volatile* volatile)(W_RegAddr)) = ((*(BYTE volatile* volatile)(W_RegAddr)) & (~((BYTE volatile)(B_AndData)))) | ((BYTE volatile)(B_OrData)))

// defines for the input filtering gm_SetInputFiltering()
#define MAX_EQ 				(0x5000 + 500/5)	// used by htotal algo to sharpen edges
#define DEFAULT_FILTER 		(0 + 500/5)   			// whatever is normal
#define COLOR_BAL_FILTER 	(0 + 120/5)				// a filter suitable for doing auto color balance (reduced bandwidth)

// define which filter setting to use if auto filter option is selected in auto adjust
#define NUM_AUTO_FILTERS 5
#define AUTO_FILTERS		const WORD AutoFilters[NUM_AUTO_FILTERS]
#define AUTO_FILTER_VALUES  = {{500/5}, {200/5}, {140/5}, {0x2000 + 500/5}, {0x5000 + 500/5}};

#define AUTO_MSGS		// enables auto adjust messages.
//#define USE_ADAPTIVE_SDDS //enable adaptive sdds for sclk setup

#define IA_DATA_ERROR_STUCK	// phoenix has to do a soft reset to clear a data error

#define HTOTAL_PHASE 0x1c     // phase shift to get samples 1/3 pixel apart in IA htotal mode
#define HTOTAL_SKEW 0x000		// rgb phase delay for htotal

#define ZERO_K_MAIN							// when defined, gives cleaner display sometimes
#ifdef ZERO_K_MAIN
extern WORD  ROM gmc_EnableKMainOfZero;	// min sclk freq to use ZERO_K_MAIN (units 100KHz) 0=disable feature
void gmp_SetKMainToZero(gmt_PHY_CH Channel);
void gmp_RestoreKMain(gmt_PHY_CH Channel);
#endif

#if ENSURE_SYSTEMTIME
	#ifdef gm_ReadSystemTime
	#undef gm_ReadSystemTime
	#endif

	#define gm_ReadSystemTime		ReadSystemTime
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -