我有个例程是关于5416和TLV320AIC23B芯片相连,并且通过5416的McBSP1口在I2S协议下向TLV320AIC23B芯片的DIN中写入数据到DAC输出到耳机的。(控制字是由McBSP0口通过SPI协议写入的)。main函数如下:
void main()
{
unsigned int i,temp;
//int codeccode[]={20000,15000,10000,7500, 5000,2500,0,-2500,-5000,-7500,-10000,-15000,-20000};
/*初始化系统*/
cpu_init();
/*打开codec数据接口*/
codec_data = codec_open(CODEC_DATA);
/*打开codec命令接口*/
codec_command = codec_open(CODEC_COMMAND);
while(1)
{
for(temp=5000;temp>0;temp-=100)
{
for(i=0;i<1;i++)
{
if(MCBSP_XRDY(CODEC_DATA)) *(u16*)DXR1_ADDR(CODEC_DATA)=-400;
delay(temp);
if(MCBSP_XRDY(CODEC_DATA)) *(u16*)DXR1_ADDR(CODEC_DATA)=400;
delay(temp);
}
}
}
关键是while里的循环的那两句在if满足时,通过McBSP1口向音频芯片的DIN口写入数据-400和400并且各自延时了一段时间。这个写入的值和最后发出的声音的音调、音色、响度有什么关系? |