📄 i2s.c
字号:
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_DAC, 5);
i2s_codec.data_len = sizeof(RightLineIN);
i2s_codec.data=RightLineIN;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_DACWRITE, RIGHTLINEIN, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_DAC, 6);
i2s_codec.data_len = sizeof(AAPathControl);
i2s_codec.data=AAPathControl;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_DACWRITE, AAPATHCONTROL, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_DAC, 7);
i2s_codec.data_len = sizeof(DAPathControl);
i2s_codec.data=DAPathControl;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_DACWRITE, DAPATHCONTROL, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_DAC, 8);
// reactivating the codec for use
i2s_codec.data_len = sizeof(ActiveControlOn);
i2s_codec.data=ActiveControlOn;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_DACWRITE, ACTIVECONTROLON, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_DAC, 9);
return(errorLog);
}
/*
*******************************************************************************
*
* FUNCTION: I2S_ADCSetup
*
* DESCRIPTION: putting the codec into analog - to - Digital state
*
* INPUT PARAMETERS: None
*
* RETURNS: XLLP_UINT32_T
*
* GLOBAL EFFECTS: None
*
* ASSUMPTIONS:
*
* CALLS:
*
* CALLED BY: I2S_Test()
*
* PROTOTYPE: XLLP_UINT32_T I2S_ADCSetup (void);
*
*******************************************************************************
*/
XLLP_UINT32_T I2S_ADCSetup(void)
{
INT errorLog=0;
INT status=0;
I2C_TX i2s_codec;
volatile P_POST_I2C_T i2c_regs = (P_POST_I2C_T)STD_I2C_BASE;
volatile P_XLLP_INTC_T intReg = (P_XLLP_INTC_T)0x40d00000;
// these are standard value recommended by wolfson for DAC
XLLP_UINT8_T LeftLineIn[]= {(LeftLineInAddr), (ADC_LeftLineInData)};
XLLP_UINT8_T RightLineIN[]={(RightLineINAddr), (ADC_RightLineINData)};
XLLP_UINT8_T AAPathControl[]= {(AAPathControlAddr), (ADC_AAPathControlData)};
XLLP_UINT8_T DAPathControl[]={(DAPathControlAddr), (ADC_DAPathControlData)};
XLLP_UINT8_T DAInterfaceFormat[]={(DAInterfaceFormatAddr), (ADC_DAInterfaceFormatData)};
XLLP_UINT8_T PowerDownControl[]= {(PowerDownControlAddr), (ADC_PowerDownControlData)};
XLLP_UINT8_T ActiveControlOn[]={(ActiveControlAddr), (ActiveControlOnData)};
XLLP_UINT8_T ActiveControlOff[]={(ActiveControlAddr), (ActiveControlOffData)};
// this value (I2SCODEC_ID) is gotten from the codec spec and is how the I2C bus communicates with
// the codec
i2s_codec.dev_id = I2SCODEC_ID;
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 1);
// must deactivate the codec before writing to it to ensure no noise occurs when changing
// the register settings
i2s_codec.data_len = sizeof(ActiveControlOff);
i2s_codec.data=ActiveControlOff;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_ADCWRITE, ACTIVECONTROLOFF, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 2);
i2s_codec.data_len = sizeof(PowerDownControl);
i2s_codec.data=PowerDownControl;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_ADCWRITE, PWRDWN, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 3);
i2s_codec.data_len = sizeof(LeftLineIn);
i2s_codec.data=LeftLineIn;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_ADCWRITE, LEFTLINEIN, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 4);
i2s_codec.data_len = sizeof(RightLineIN);
i2s_codec.data=RightLineIN;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_ADCWRITE, RIGHTLINEIN, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 5);
i2s_codec.data_len = sizeof(DAInterfaceFormat);
i2s_codec.data=DAInterfaceFormat;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_ADCWRITE, DAINTERFACEFORMAT, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 6);
i2s_codec.data_len = sizeof(AAPathControl);
i2s_codec.data=AAPathControl;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_ADCWRITE, AAPATHCONTROL, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 7);
i2s_codec.data_len = sizeof(DAPathControl);
i2s_codec.data=DAPathControl;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_ADCWRITE, DAPATHCONTROL, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 8);
// reactivating the codec for use
i2s_codec.data_len = sizeof(ActiveControlOn);
i2s_codec.data=ActiveControlOn;
if((status= i2c_write(i2c_regs, intReg, &i2s_codec))!= ERR_T_NONE)
{
LOGERRORX(errorLog,
ERR_L_I2SCODEC, ERR_TS_I2C_ADCWRITE, ACTIVECONTROLON, ERR_T_NOTRANSMIT,
0, 0, 0);
XllpUtilityOutputError(errorLog);
return(errorLog);
}
DM_WaitMs(1);
PostDisplayProgress(ERR_L_I2SCODEC, ERR_TS_ADC, 9);
return(errorLog);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -