i2s.c

来自「优龙YLP270开发板 光盘自带的BIOS和实验例程源码 强烈推荐」· C语言 代码 · 共 488 行 · 第 1/2 页

C
488
字号
    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 + =
减小字号Ctrl + -
显示快捷键?