📄 camera.c
字号:
return(value);
}
//------------------------------------------------------------------
//NAME : CAMIF_SetGpioRegister
//------------------------------------------------------------------
void CAMIF_SetGpioRegister(CAMIF_GPIOEnable_T GPIOEnable)
{
UWORD32 value = 0;
// set corresponding parts of register
value |= GPIOEnable << CAMIF_GPIO_CAMSER_POS;
// write register
REG32(CAMIF_GPIO_REG) = value;
}
//------------------------------------------------------------------
//NAME : CAMIF_SetPeakCounterRegister
//------------------------------------------------------------------
void CAMIF_SetPeakCounterRegister(UWORD8 PeakCounter)
{
UWORD32 value = 0;
// set corresponding parts of register
value |= PeakCounter << CAMIF_FIFO_PC_POS;
// write register
REG32(CAMIF_GPIO_REG) = value;
}
//------------------------------------------------------------------
//NAME : CAMIF_Disable
//------------------------------------------------------------------
// the parameter CAMERA_IF_Base_Address has been added to switch
// between 2 different base addresses in Persues2.5
void CAMIF_DisableIf(UWORD32 CAMERA_IF_Base_Address)
{
UWORD32 value;
//Read Control Clock register
value = REG32(CAMERA_IF_Base_Address + CAMIF_CCR_REG_OFFSET);
// Clear all unused bits
value &= CAMIF_CCR_REG_MASK;
// Clear the enable bit
value &= ~(1 << CAMIF_CCR_CAMEXCLKEN_POS);
// write register
REG32(CAMERA_IF_Base_Address + CAMIF_CCR_REG_OFFSET) = value;
}
void CAMIF_DisableLClk(void)
{
UWORD32 value;
//Read Control Clock register
value = REG32(CAMIF_CCR_REG);
// Clear all unused bits
value &= CAMIF_CCR_REG_MASK;
// Clear the enable bit
value &= ~(1 << CAMIF_CCR_LCLKEN_POS);
// write register
REG32(CAMIF_CCR_REG) = value;
}
void CAMIF_EnableLClk(void)
{
UWORD32 value;
//Read Control Clock register
value = REG32(CAMIF_CCR_REG);
// Clear all unused bits
value &= CAMIF_CCR_REG_MASK;
// set bit
value |= (1 << CAMIF_CCR_LCLKEN_POS);
// write register
REG32(CAMIF_CCR_REG) = value;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_AssertReset()
{
// Output Low
REG32(CAMIF_GPIO_REG) = 0 ;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_DeassertReset()
{
// Output High
REG32(CAMIF_GPIO_REG) = 1 ;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_EnableExclk()
{
// Set bit CAMEXCLK_EN
REG32(CAMIF_CCR_REG) |= CAMIF_CCR_CAMEXCLKEN_MASK;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_DisableExclk()
{
// Set bit CAMEXCLK_EN
REG32(CAMIF_CCR_REG) &= ~(CAMIF_CCR_CAMEXCLKEN_MASK);
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_EnableIntToStart()
{
// Enable Interrupt on VS Rising
REG32(CAMIF_MD_REG) |= (CAMIF_MD_ENVUP_MASK) ;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_DisableIntToStart()
{
// Disable Interrupt on VS Rising
REG32(CAMIF_MD_REG) &= ~(CAMIF_MD_ENVUP_MASK) ;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_EnableIntToReadFifo()
{
// Enable Interrupt on exceed FIFO threshold
REG32(CAMIF_MD_REG) |= (CAMIF_MD_THRESHOLD_MASK) ;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_DisableIntToReadFifo()
{
// Disable Interrupt on exceed FIFO threshold
REG32(CAMIF_MD_REG) &= ~(CAMIF_MD_THRESHOLD_MASK) ;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_CleanFifo()
{
WORD32 i;
// Read DATA register 128 times :(
for(i=0; i<128; i++)
CAMIF_ReadDataRegister() ;
// Clear Peak counter
REG32(CAMIF_FIFO_REG)=0;
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
WORD32 CAM_ReadPeakCounter()
{
return REG32(CAMIF_FIFO_REG);
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
WORD32 CAM_ReadStatus()
{
return REG32(CAMIF_SR_REG);
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_EnableIntToDebug()
{
REG32(CAMIF_MD_REG) |= ((CAMIF_MD_ENVUP_MASK) |
(CAMIF_MD_ENHUP_MASK) |
(CAMIF_MD_ENVDOWN_MASK) |
(CAMIF_MD_ENHDOWN_MASK) |
(CAMIF_MD_ENIRQ_MASK) |
(CAMIF_MD_FIFOFULL_MASK)
);
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_DisableIntToDebug()
{
REG32(CAMIF_MD_REG) &= ~((CAMIF_MD_ENVUP_MASK) |
(CAMIF_MD_ENHUP_MASK) |
(CAMIF_MD_ENVDOWN_MASK) |
(CAMIF_MD_ENHDOWN_MASK) |
(CAMIF_MD_ENIRQ_MASK) |
(CAMIF_MD_FIFOFULL_MASK)
);
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_EnableIntDma()
{
REG32(CAMIF_MD_REG) |= ((CAMIF_MD_ENVUP_MASK) |
(CAMIF_MD_ENHUP_MASK) |
(CAMIF_MD_ENVDOWN_MASK) |
(CAMIF_MD_ENHDOWN_MASK) |
(CAMIF_MD_DMA_MASK) |
(CAMIF_MD_FIFOFULL_MASK)
);
}
//******************************************************************************
// FUNCTION :
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAM_DisableIntDma()
{
REG32(CAMIF_MD_REG) &= ~((CAMIF_MD_ENVUP_MASK) |
(CAMIF_MD_ENHUP_MASK) |
(CAMIF_MD_ENVDOWN_MASK) |
(CAMIF_MD_ENHDOWN_MASK) |
(CAMIF_MD_DMA_MASK) |
(CAMIF_MD_FIFOFULL_MASK)
);
}
//******************************************************************************
// FUNCTION : FIFO Reset control
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAMIF_RazFifo() {
UWORD32 _CAMIF_MD_RAZ_FIFO;
// Read Control Clock register
_CAMIF_MD_RAZ_FIFO = REG32(CAMIF_MD_REG);
// Clear all unused bits
_CAMIF_MD_RAZ_FIFO &= CAMIF_MD_REG_MASK;
// Set bit
_CAMIF_MD_RAZ_FIFO |= (1 << CAMIF_MD_RAZ_FIFO_POS);
// Write register
REG32(CAMIF_MD_REG) = _CAMIF_MD_RAZ_FIFO;
}
//******************************************************************************
// FUNCTION : FIFO Reset control
// DESCRIPTION :
// PARAMETERS :
// RETURN VALUE:
//******************************************************************************
void CAMIF_NoRazFifo() {
UWORD32 _CAMIF_MD_RAZ_FIFO;
// Read Control Clock register
_CAMIF_MD_RAZ_FIFO = REG32(CAMIF_MD_REG);
// Clear all unused bits
_CAMIF_MD_RAZ_FIFO &= CAMIF_MD_REG_MASK;
// Set bit
_CAMIF_MD_RAZ_FIFO &= ~(1 << CAMIF_MD_RAZ_FIFO_POS);
// Write register
REG32(CAMIF_MD_REG) = _CAMIF_MD_RAZ_FIFO;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -