This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于5509的语音芯片AIC23的问题

下面是 codec部分示例代码,我通过 单步调试发现 每次到

/*设置AIC23的数字接口*/
 i2c_status = I2C_write( digital_audio_inteface_format,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                      );

这里时就开始播放声音了,根本还没运行到主函数,还有是否 aic23data 就是定义的语音芯片所播放的数据内容?我能否通过指定aic23data来让他播放dma xmt[]里面存储的数据?

/*reset AIC23*/
    i2c_status = I2C_write( reset,          //pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                   );
 delay(1000);
    /*设置AIC23各部分均工作*/
    i2c_status = I2C_write( power_down_control,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                   );           
 /*设置AIC23的数字接口*/
 i2c_status = I2C_write( digital_audio_inteface_format,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                      );
  /*设置AIC23模拟通路*/
/* i2c_status = I2C_write( analog_aduio_path_control,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                   );*/
 /*设置数字通路*/
 i2c_status = I2C_write( digital_audio_path_control,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                     );     
 /*设置AIC23的采样率*/
 i2c_status = I2C_write( sample_rate_control,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                      );
 /*设置耳机音量*/
 i2c_status = I2C_write( left_headphone_volume_control,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                      );
 i2c_status = I2C_write( right_headphone_volume_control,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                      ); 
 /*设置Line输入的音量*/
 i2c_status = I2C_write( left_line_input_volume_control,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                      );
 i2c_status = I2C_write( right_line_input_volume_control,//pointer to data array
                      2,    //length of data to be transmitted
                      1,    //master or slaver
                      CODEC_ADDR,     //slave address to transmit to
                      1,    //transfer mode of operation
                      30000   //time out for bus busy
                      );
 /*启动AIC23*/
 i2c_status = I2C_write( digital_interface_activation,//pointer to data array
         2,    //length of data to be transmitted
         1,    //master or slaver
         CODEC_ADDR,     //slave address to transmit to
         1,    //transfer mode of operation
         30000   //time out for bus busy
         );
        
 /*回放音频*/
 while(TRUE)
 {


 
 if(play_mode==1)  //record and play
 {
  while(!MCBSP_xrdy(hMcbsp)){};
  aic23data = MCBSP_read16(hMcbsp);
  for(temp=3000;temp>0;temp--);
  while(!MCBSP_rrdy(hMcbsp)){};
  MCBSP_write16(hMcbsp,aic23data);
 }