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

📄 camera.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 2 页
字号:
  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 + -