📄 camera.h
字号:
//Pos values
#define CAMIF_GPIO_CAMSER_POS 0x0
//Reset values
#define CAMIF_GPIO_CAMSER_RES_VAL 0x0
//FIFO pk counter
//================
#ifdef __ES20__
#define CAMIF_FIFO_REG_OFFSET SET32BITS(0x18)
#else
#define CAMIF_FIFO_REG_OFFSET SET32BITS(0x06)
#endif
#define CAMIF_FIFO_REG (CAMIF_BASE_ADDRESS + CAMIF_FIFO_REG_OFFSET )
//Mask values
#define CAMIF_FIFO_PC_MASK 0x0000007F
#define CAMIF_FIFO_REG_MASK 0x0000007F
// building of CAMIF_FIFO_MASK (= 0x0000007F)
#define CAMIF_FIFO_MASK \
(((2<<(CAMIF_FIFO_PC_NUMB-1))-1)<<CAMIF_FIFO_PC_POS)
#define CAMIF_FIFO_RES_VAL \
(CAMIF_FIFO_PC_RES_VAL<<CAMIF_FIFO_PC_POS)
//Length values
#define CAMIF_FIFO_PC_NUMB 7
//Pos values
#define CAMIF_FIFO_PC_POS 0x0
//Reset values
#define CAMIF_FIFO_PC_RES_VAL 0x00
// cam external clock value
#define CAMIF_ExternalClock12MHz 0x00000000
#define CAMIF_ExternalClock6MHz 0x00000002
#define CAMIF_ExternalClock9_6MHz 0x00000004
#define CAMIF_ExternalClock24MHz 0x00000005
#define CAMIF_ExternalClock8MHz 0x00000006
// BURSTDATA0 Register (Read Only)
//=================================
//#define CAMIF_BURSTDATA0_REG_OFFSET SET32BITS(0x20)
#define CAMIF_BURSTDATA0_REG_OFFSET 0x20
#define CAMIF_BURSTDATA0_REG (CAMIF_BASE_ADDRESS + CAMIF_BURSTDATA0_REG_OFFSET )
// BURSTDATA1 Register (Read Only)
//=================================
//#define CAMIF_BURSTDATA1_REG_OFFSET SET32BITS(0x24)
#define CAMIF_BURSTDATA1_REG_OFFSET 0x24
#define CAMIF_BURSTDATA1_REG (CAMIF_BASE_ADDRESS + CAMIF_BURSTDATA1_REG_OFFSET )
// BURSTDATA2 Register (Read Only)
//=================================
//#define CAMIF_BURSTDATA2_REG_OFFSET SET32BITS(0x28)
#define CAMIF_BURSTDATA2_REG_OFFSET 0x28
#define CAMIF_BURSTDATA2_REG (CAMIF_BASE_ADDRESS + CAMIF_BURSTDATA2_REG_OFFSET )
// BURSTDATA3 Register (Read Only)
//=================================
//#define CAMIF_BURSTDATA3_REG_OFFSET SET32BITS(0x2C)
#define CAMIF_BURSTDATA3_REG_OFFSET 0x2C
#define CAMIF_BURSTDATA3_REG (CAMIF_BASE_ADDRESS + CAMIF_BURSTDATA3_REG_OFFSET )
typedef enum { CAMIF_PolarityClockRising = 0,
CAMIF_PolarityClockFalling = 1
} CAMIF_PolarityClock_T;
typedef enum { CAMIF_ExternalClockEnable = 1,
CAMIF_ExternalClockDisable = 0
} CAMIF_ExternalClockEnable_T;
typedef enum { CAMIF_Enable = 1,
CAMIF_Disable = 0
} CAMIF_Enable_T;
typedef enum { CAMIF_DPLLClockEnable = 1,
CAMIF_DPLLClockDisable = 0
} CAMIF_DPLLClockEnable_T;
typedef enum { CAMIF_LCLKClockEnable = 1,
CAMIF_LCLKClockDisable = 0
} CAMIF_LCLKClockEnable_T;
typedef enum { CAMIF_Synchronous = 0,
CAMIF_Asynchronous = 1
} CAMIF_Synchronous_T;
typedef enum { CAMIF_ImageCIF = 0,
CAMIF_ImageQCIF,
CAMIF_ImageVGA,
CAMIF_ImageQVGA
} CAMIF_ImageType_T;
typedef enum { CAMIF_Swap = 1,
CAMIF_NoSwap = 0
} CAMIF_SwapEnable_T;
typedef enum { CAMIF_VerticalSyncRisingEnable = 1,
CAMIF_VerticalSyncRisingDisable = 0
} CAMIF_VerticalSyncRisingEnable_T;
typedef enum { CAMIF_VerticalSyncFallingEnable = 1,
CAMIF_VerticalSyncFallingDisable = 0
} CAMIF_VerticalSyncFallingEnable_T;
typedef enum { CAMIF_HorizontalSyncRisingEnable = 1,
CAMIF_HorizontalSyncRisingDisable = 0
} CAMIF_HorizontalSyncRisingEnable_T;
typedef enum { CAMIF_HorizontalSyncFallingEnable = 1,
CAMIF_HorizontalSyncFallingDisable = 0
} CAMIF_HorizontalSyncFallingEnable_T;
typedef enum { CAMIF_DMAEnable = 1,
CAMIF_DMADisable = 0
} CAMIF_DMAEnable_T;
typedef enum { CAMIF_CPUIrqEnable = 1,
CAMIF_CPUIrqDisable = 0
} CAMIF_CPUIrqEnable_T;
typedef enum { CAMIF_FifoFullEnable = 1,
CAMIF_FifoFullDisable = 0
} CAMIF_FifoFullEnable_T;
typedef enum { CAMIF_GPIOEnable = 1,
CAMIF_GPIODisable = 0
} CAMIF_GPIOEnable_T;
//----------------------------------------------------
//-----------------------MACROS-----------------------
//----------------------------------------------------
//=================================================================================
// All the followings are macro. They were used as they are faster than functions
//=================================================================================
//-------------------------------------------------------------------
// NAME : FIFO_COUNTER
// DESCRIPTION : Returns the 7 bits of the FIFO word counter
// PARAMETERS : None
// RETURN VALUE: Returns the 7 bits of the FIFO word counter
// LIMITATIONS : None
//-------------------------------------------------------------------
#define FIFO_COUNTER() (REG32(CAMIF_FIFO_REG) & CAMIF_FIFO_REG_MASK)
//-------------------------------------------------------------------
// NAME : CAMIF_FIFO_FUNCTION_RESET
// DESCRIPTION : Reset the fifo functionnality (pointers,fifo,...)
// FIFO function is unactiv until we set the functionnality
// with CAMIF_FIFO_FUNCTION_SET
// PARAMETERS : None
// RETURN VALUE: None
// LIMITATIONS : None
//-------------------------------------------------------------------
#define CAMIF_FIFO_FUNCTION_RESET() REG32(CAMIF_MD_REG) |= CAMIF_MD_RAZ_FIFO_MASK
//-------------------------------------------------------------------
// NAME : CAMIF_FIFO_FUNCTION_SET
// DESCRIPTION : Set the fifo functionnality
// PARAMETERS : None
// RETURN VALUE: None
// LIMITATIONS : None
//-------------------------------------------------------------------
#define CAMIF_FIFO_FUNCTION_SET() REG32(CAMIF_MD_REG) &= ~CAMIF_MD_RAZ_FIFO_MASK
//----------------------------------------------------
//-----------------------FUNCTIONS--------------------
//----------------------------------------------------
//------------------------------------------------------------------
//NAME : CAMIF_SetClockCtrlRegister
//DESCRIPTION : Set Clock Control Register
//PARAMETERS : All Clock Control Register bit fields
//RETURN VALUE : None
//------------------------------------------------------------------
void CAMIF_SetClockCtrlRegister(UWORD32 ExternalClock,
CAMIF_PolarityClock_T PolarityClock,
CAMIF_ExternalClockEnable_T ExternalClockEnable,
CAMIF_Enable_T ClockEnable,
CAMIF_LCLKClockEnable_T LCLKClockEnable,
UWORD32 CAMERA_IF_Base_Address);
//------------------------------------------------------------------
//NAME : CAMIF_ReadInterruptStatusRegister
//DESCRIPTION : Read Interrupt Status register
//PARAMETERS : All Interrupt Status register bit fields
//RETURN VALUE : None
//------------------------------------------------------------------
void CAMIF_ReadInterruptStatusRegister(BOOL * const VerticalSynchRising,
BOOL * const VerticalSynchFalling,
BOOL * const HorizontalSynchRising,
BOOL * const HorizontalSynchFalling,
BOOL * const FifoFull,
BOOL * const CPUIrq,
UWORD32 CAMERA_IF_Base_Address);
//------------------------------------------------------------------
//NAME : CAMIF_SetModeRegister
//DESCRIPTION : Set Mode Register
//PARAMETERS : All Mode Register bit fields
//RETURN VALUE : None
//------------------------------------------------------------------
void CAMIF_SetModeRegister(CAMIF_SwapEnable_T SwapMode,
CAMIF_VerticalSyncRisingEnable_T VerticalSyncRisingEnable,
CAMIF_VerticalSyncFallingEnable_T VerticalSyncFallingEnable,
CAMIF_HorizontalSyncRisingEnable_T HorizontalSyncRisingEnable,
CAMIF_HorizontalSyncFallingEnable_T HorizontalSyncFallingEnable,
CAMIF_DMAEnable_T DMAEnable,
UWORD8 Threshold,
CAMIF_CPUIrqEnable_T CPUIrqEnable,
CAMIF_FifoFullEnable_T FifoFullEnable,
UWORD32 CAMERA_IF_Base_Address);
//------------------------------------------------------------------
//NAME : CAMIF_ReadStatusRegister
//DESCRIPTION : Read Status register
//PARAMETERS : All Status register bit fields
//RETURN VALUE : None
//------------------------------------------------------------------
void CAMIF_ReadStatusRegister(BOOL * const VerticalSynch,
BOOL * const HorizontalSynch);
//------------------------------------------------------------------
//NAME : CAMIF_ReadDataRegister
//DESCRIPTION : Read Data register
//PARAMETERS : None
//RETURN VALUE : Image data from Fifo
//------------------------------------------------------------------
UWORD32 CAMIF_ReadDataRegister(void);
//------------------------------------------------------------------
//NAME : CAMIF_SetGpioRegister
//DESCRIPTION : Set GPIO register
//PARAMETERS : All GPIO register bit fields
//RETURN VALUE : None
//------------------------------------------------------------------
void CAMIF_SetGpioRegister(CAMIF_GPIOEnable_T GPIOEnable);
//------------------------------------------------------------------
//NAME : CAMIF_SetPeakCounterRegister
//DESCRIPTION : Set Peak Counter register
//PARAMETERS : All Peak Counter register bit fields
//RETURN VALUE : None
//------------------------------------------------------------------
void CAMIF_SetPeakCounterRegister(UWORD8 PeakCounter);
//------------------------------------------------------------------
//NAME : CAMIF_DisableIf
//DESCRIPTION : Disable Output clock (ExClk) of Camera Interface
//PARAMETERS : None
//RETURN VALUE : None
//------------------------------------------------------------------
void CAMIF_DisableIf(UWORD32 CAMERA_IF_Base_Address);
//------------------------------------------------------------------
//NAME : CAMIF_DisableLClk
//DESCRIPTION : Disable incoming cam lclk of Camera Interface
//PARAMETERS : None
//RETURN VALUE : None
//------------------------------------------------------------------
void CAMIF_DisableLClk(void);
void CAM_AssertReset();
void CAM_DeassertReset();
void CAM_EnableExclk();
void CAM_DisableExclk();
void CAM_EnableIntToStart();
void CAM_DisableIntToStart();
void CAM_EnableIntToReadFifo();
void CAM_DisableIntToReadFifo();
void CAM_CleanFifo();
WORD32 CAM_ReadPeakCounter();
WORD32 CAM_ReadStatus();
void CAM_EnableIntToDebug();
void CAM_DisableIntToDebug();
void CAM_EnableIntDma();
void CAM_DisableIntDma();
void CAMIF_EnableLClk(void);
// FIFO reset control
void CAMIF_NoRazFifo();
void CAMIF_RazFifo();
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -