📄 tb_regs.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 + -