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

📄 gsel-52xx.h

📁 GM5621原代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#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
// Functions marked "fix" are single channel & need modifying
//**************************************************************

#ifdef FORCE_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_IA(B_Channel, AutoMode)								gm_AutoGeometry_IA_S(AutoMode)
#define gm_AutoGeometry_IAS(B_Channel, AutoMode)							gm_AutoGeometry_IAS_S(AutoMode)
#define gm_AutoGeometry_IAK(B_Channel, AutoMode)							gm_AutoGeometry_IAK_S(AutoMode)
//#define gm_AutoGeometry_IASK(B_Channel, AutoMode)							gm_AutoGeometry_IASK_S(AutoMode)
#define gm_AutoGeometry_IAKF(B_Channel, AutoMode)							gm_AutoGeometry_IAKF_S(AutoMode)
#define gm_AutoGeometry_IASKF(B_Channel, AutoMode)							gm_AutoGeometry_IASKF_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()		// fix
#define gm_SetInputHTotal(B_InputChannel, W_Htotal)						gm_SetInputHTotalMain(W_Htotal)		// fix
#define gm_SetAdcPhase(B_InputChannel, B_Phase)								gm_SetAdcPhaseMain(B_Phase)		// fix
#define gm_WaitInputVSync(B_InputChannel, B_NumFrames)					gm_WaitInputVSyncMain(B_NumFrames)		// fix
#define gm_SetAdcGain(B_InputChannel, B_RGain, B_GGain, B_BGain)		gm_SetAdcGain_S(B_RGain, B_GGain, B_BGain)		// fix
#define gm_SetAdcOffset2(B_InputChannel, B_ROff2, B_GOff2, B_BOff2)	gm_SetAdcOffset2_S(B_ROff2, B_GOff2, B_BOff2)		// fix
#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 gmp_GrabPixel_m(B_Channel, W_X, W_Y)		gmp_GrabPixel_S(W_X, W_Y)		

#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)  // fix
#define gmp_AutoPositionNoIBD_GF(B_Channel)		gmp_AutoPositionNoIBD_GFS()
#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);

// 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_GFS(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
#else

//**************************************************************
//	 PROTOTYPE TRULY MULTI-CHANNEL FUNCTIONS
//**************************************************************

// GSEL functions
gmt_RET_STAT gm_AutoGeometry(gmt_PHY_CH B_Channel, BYTE AutoMode);
gmt_RET_STAT gm_AutoPosition(gmt_PHY_CH B_Channel);
gmt_RET_STAT gm_AutoColorBalance(gmt_PHY_CH B_Channel);
void gm_AutoCalibrateOffset1_S(gmt_PHY_CH B_Channel);
gmt_RET_STAT gm_AutoADCInit_S(gmt_PHY_CH B_Channel);
void gm_SetAdcOffset2_S(gmt_PHY_CH B_Channel, BYTE B_Roff, BYTE B_Goff, BYTE B_Boff);
void gm_SetAdcGain_S(gmt_PHY_CH B_Channel, WORD B_RGain, WORD B_GGain, WORD B_BGain);

// Private funtions
gmt_RET_STAT gmp_WidthHtotal(gmt_PHY_CH B_Channel);
BYTE gmp_GrabPixel(gmt_PHY_CH B_Channel, WORD W_X, WORD W_Y);
BYTE gmp_GrabPixelColor(gmt_PHY_CH B_Channel, WORD W_X, WORD W_Y, BYTE B_Color);
gmt_RET_STAT gmp_AutoPositionNoIBD_GF(B_Channel);
WORD gmp_ReadIBDHWidth(void);
#endif


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

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);
gmt_RET_STAT far gm_readI2C_DMA(BYTE B_DevAddress, BYTE *Bp_Buffer, BYTE B_Length );
gmt_RET_STAT far gm_writeI2C_DMA(BYTE B_DevAddress, BYTE *Bp_Buffer,BYTE B_Length );
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_SetFiltering()
#define NUMB_FILTERS 4
#define MAX_EQ 3				// used by htotal algo to sharpen edges
#define DEFAULT_FILTER 0   // whatever is normal
#define COLOR_BAL_FILTER 1 // a filter suitable for doing auto color balance (reduced bandwidth)

#define AUTO_MSGS		// enables auto adjust messages.

⌨️ 快捷键说明

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