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

📄 tb_regs.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
/********************************************************************************
   Description    	: test bench configuration functions                  
   Project        	: Perseus                                             
   Author         	: JL MASSEAU                                          
********************************************************************************/
#include "tb_regs.h"


/************************/
/* MCBSP stub functions */
/************************/
volatile UWORD16 TB_MCBSP_register_value;


void  TBREG_McbspRegisterReset(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= TB_MCBSP_RESET_VALUE;

  if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_RESET_VALUE; 

}


void TBREG_EnableCodec(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value
			     & ~TB_REG_MCBSP_MASTER_EN_MASK) | MCBSP_CODEC_MASTER_ENABLE);

  if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 

}

void TBREG_DisableCodec(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value 
			     & ~TB_REG_MCBSP_MASTER_EN_MASK) | MCBSP_CODEC_MASTER_DISABLE);
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}

void TBREG_EnableDxdrLoopback(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value
			     & ~TB_REG_MCBSP_DXDR_LOOPBACK_EN_MASK) | MCBSP_DXDR_LOOPBACK_ENABLE);
    
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}

void TBREG_DisableDxdrLoopback(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value
			     & ~TB_REG_MCBSP_DXDR_LOOPBACK_EN_MASK) | MCBSP_DXDR_LOOPBACK_DISABLE);
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}

void TBREG_EnableClks(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value          
			     & ~TB_REG_MCBSP_CLKS_EN_MASK) | MCBSP_CLKS_ENABLE);
    
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}

void TBREG_DisableClks(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value      
			     & ~TB_REG_MCBSP_CLKS_EN_MASK) | MCBSP_CLKS_DISABLE);
    
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}

void TBREG_CodecFreq32k(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value    
			     & ~TB_REG_MCBSP_FREQ_SEL_MASK) | MCBSP_CODEC_FREQ_32K);
    
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}

void TBREG_CodecFreq441k(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value    
			     & ~TB_REG_MCBSP_FREQ_SEL_MASK) | MCBSP_CODEC_FREQ_44_1K);
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}


void TBREG_CodecFreq48k(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value    
			     & ~TB_REG_MCBSP_FREQ_SEL_MASK) | MCBSP_CODEC_FREQ_48K);
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}

void TBREG_EnablePcmMode(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value
			     & ~TB_REG_MCBSP_PCM_EN_MASK) | MCBSP_CODEC_PCM_ENABLE);

  if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 

}

void TBREG_DisablePcmMode(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value 
			     & ~TB_REG_MCBSP_PCM_EN_MASK) | MCBSP_CODEC_PCM_DISABLE);
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}

void TBREG_EnableClks_44_1K(TB_REG_action_t action_type)
{
  // clks enable
  TB_MCBSP_register_value= ((TB_MCBSP_register_value          
			     & ~TB_REG_MCBSP_CLKS_EN_MASK) | MCBSP_CLKS_ENABLE);
  // codec master disable
  TB_MCBSP_register_value= ((TB_MCBSP_register_value
			     & ~TB_REG_MCBSP_MASTER_EN_MASK) | MCBSP_CODEC_MASTER_DISABLE);
  // freq selector 44.1 Khz 
  TB_MCBSP_register_value= ((TB_MCBSP_register_value    
			     & ~TB_REG_MCBSP_FREQ_SEL_MASK) | MCBSP_CODEC_FREQ_44_1K);

  if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value;   
}

void TBREG_EnableWord32Mode(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value
			     & ~TB_REG_MCBSP_WORD32_EN_MASK) | MCBSP_CODEC_WORD32_ENABLE);

  if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 

}

void TBREG_DisableWord32Mode(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value 
			     & ~TB_REG_MCBSP_WORD32_EN_MASK) | MCBSP_CODEC_WORD32_DISABLE);
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}


void TBREG_EnableArmBootCs3(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value
			     & ~TB_REG_MCBSP_ARM_BOOT_CS3_MASK) | MCBSP_CODEC_ARM_BOOT_CS3_ENABLE);

  if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 

}

void TBREG_DisableArmBootCs3(TB_REG_action_t action_type)
{
  TB_MCBSP_register_value= ((TB_MCBSP_register_value 
			     & ~TB_REG_MCBSP_ARM_BOOT_CS3_MASK) | MCBSP_CODEC_ARM_BOOT_CS3_ENABLE);
    
    if (action_type == LOAD) REG16(TB_REG_MCBSP_ADDR)=TB_MCBSP_register_value; 
  
}


/************************/
/* LCD stub functions */
/************************/

void TBREG_EnableLcdStubInTftMode(void)
{
// start lcd stub and select stub in TFT mode
REG16(TB_REG_LCD_ADDR) = (TB_REG_LCD_STUB_ENABLE | TB_REG_LCD_STUB_IN_TFT_MODE) ;
}

void TBREG_EnableLcdStubInStnMode(void)
{
// start lcd stub and select stub in STN mode
REG16(TB_REG_LCD_ADDR) = (TB_REG_LCD_STUB_ENABLE | TB_REG_LCD_STUB_IN_STN_MODE) ;
}

void TBREG_SwicthLocalbusAddress(void)
{
REG16(TB_REG_LB_MODULE_ADDR) = TB_REG_LB_MODULE_SWITCH_ADDRESS ;
}


// CAMIF stub functions
void TBREG_EnableCamifStub(TB_REG_CAMIF_StubEnable_t StubEnable,
                              TB_REG_CAMIF_StubPolarityClock_t StubPolarityClock,
                              TB_REG_CAMIF_StubImageType_t StubImageType,
                              TB_REG_CAMIF_StubExternalClock_t StubExternalClock,
			      TB_REG_CAMIF_Restart_t StubRestartEnable,
			      TB_REG_CAMIF_FrameNumber_t StubNumberOfFrame)
{
  UWORD16 registre_value=0;
  registre_value |= (StubEnable | ( StubPolarityClock << StubPolarityClockPos)
		 | (StubImageType << StubImageTypePos) 
		 | (StubExternalClock << StubExternalClockPos)
                 | (StubRestartEnable << StubRestartTransfertPos)
		 | (StubNumberOfFrame << StubImageNumberPos));
  
  REG16(TB_REG_CAMIF_ADDR) = registre_value;
}

void TBREG_DisableCamifStubTransfert(void)
{
  REG16(TB_REG_CAMIF_ADDR) &= 0xFF7F;
}

void TBREG_DisableCamifStub(void)
{
  REG16(TB_REG_CAMIF_ADDR) &= 0xFFFE;
}

//----------------------------------------------------------------
// MS I/F STUB Functions
//----------------------------------------------------------------

void TBREG_MsStubReset(void)
{
	//Force reset signal to low
	REG16(TB_REG_MS_ADDR) &= ~TB_REG_MS_RESET_RELEASE;
        //Release reset signal
	REG16(TB_REG_MS_ADDR) |= TB_REG_MS_RESET_RELEASE;
}

void TBREG_MsSetMsIns(void)
{
	REG16(TB_REG_MS_ADDR) |= TB_REG_MSINS_HIGH;
}

void TBREG_MSResetMsIns(void)
{
	REG16(TB_REG_MS_ADDR) &= ~TB_REG_MSINS_HIGH;
}

void TBREG_MsSetMsRemove(void)
{
	REG16(TB_REG_MS_ADDR) |= TB_REG_MSREMOVE_HIGH;
}

void TBREG_MsResetMsRemove(void)
{
	REG16(TB_REG_MS_ADDR) &= ~TB_REG_MSREMOVE_HIGH;
}




⌨️ 快捷键说明

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