[分享] 普中科技F28335开发板的TLV320AIC23 芯片初始化

准音频算法工程师   2024-8-24 22:53 楼主

我不懂这段商家提供的代码:

void main()

{
AIC23Write(0x00,0x00);
    Delay(100);
    AIC23Write(0x02,0x00);
    Delay(100);
    AIC23Write(0x04,0x7f);
    Delay(100);
    AIC23Write(0x06,0x7f);
    Delay(100);
    AIC23Write(0x08,0x14);
    Delay(100);
    AIC23Write(0x0A,0x00);
    Delay(100);
    AIC23Write(0x0C,0x00);
    Delay(100);
    AIC23Write(0x0E,0x43);
    Delay(100);
    AIC23Write(0x10,0x23);
    Delay(100);
    AIC23Write(0x12,0x01);
    Delay(100);        //AIC23Init
}

 

Uint16 AIC23Write(int Address,int Data)
{


   if (I2caRegs.I2CMDR.bit.STP == 1)
   {
      return I2C_STP_NOT_READY_ERROR;
   }

   // Setup slave address
   I2caRegs.I2CSAR = 0x1A;

   // Check if bus busy
   if (I2caRegs.I2CSTR.bit.BB == 1)
   {
      return I2C_BUS_BUSY_ERROR;
   }

   // Setup number of bytes to send
   // MsgBuffer + Address
   I2caRegs.I2CCNT = 2;
   I2caRegs.I2CDXR = Address;
   I2caRegs.I2CDXR = Data;
   // Send start as master transmitter
   I2caRegs.I2CMDR.all = 0x6E20;
   return I2C_SUCCESS;

}


根据注释,应该就是TLV320AIC23 芯片的初始化代码,但是我不是很能理解其中的含义。对照芯片资料的寄存器映射,发现不能和代码一一对应。比如AIC23Write(0x0A,0x00); 0x0A对应的二进制是1010,并不能在寄存器映射中找到这样的地址。
噢噢,我明白了。地址只有7位,是我输入16进制转2进制的高七位。原来如此,这下代码能和寄存器地址一一对应了。

 

image.png  

本帖最后由 准音频算法工程师 于 2024-8-25 11:31 编辑

回复评论 (7)

 AIC23Write(0x00,0x1f);//左声道输入音量
                        Delay(100);
                  AIC23Write(0x02,0x1f);//右声道输入音量
                  Delay(100);
                        AIC23Write(0x04,0xBf);//左声道输出音量
                        Delay(100);
                  AIC23Write(0x06,0xBf);//右声道输出音量
                        Delay(100);
                        AIC23Write(0x08,0x12);//DAC选择,lin输入//AIC23Write(0x08,0x14);//DAC选择,MIC输入
                        Delay(100);
                  AIC23Write(0x0A,0x00);
                        Delay(100);
                        AIC23Write(0x0C,0x00);
                        Delay(100);
                       AIC23Write(0x0E,0x43);//AIC23Write(0x0E,0x43);//数字音频接口格式控制,AIC23主模式,dsp初始化,转换比特值设定00即:16bit--》96dB
                        Delay(100);
                       AIC23Write(0x10,0x23);//AIC23Write(0x10,0x23);//设置采样率为16khz;USB模式下时钟为12mhz,采样率为12/272=44.1Khz
                        Delay(100);
                  AIC23Write(0x12,0x01);//激活标志
                        Delay(100);                //AIC23Init

点赞 (1) 2024-8-25 10:17

你找找有没有官方的例程吧。。

点赞  2024-8-25 10:24
引用: tagetage 发表于 2024-8-25 10:24 你找找有没有官方的例程吧。。

我去官网找了,好像没有例程

点赞  2024-8-25 10:30
引用: tagetage 发表于 2024-8-25 10:17  AIC23Write(0x00,0x1f);//左声道输入音量             &n ...

AIC23Write(0x02,0x1f);//右声道输入音量
右声道输入音量对应的地址不是0x01么?

点赞  2024-8-25 10:32
引用: tagetage 发表于 2024-8-25 10:17  AIC23Write(0x00,0x1f);//左声道输入音量             &n ...

噢噢,我明白了。地址只有7位,是我输入16进制转2进制的高七位。原来如此,这下我能理解代码是什么意思了,谢谢你

点赞  2024-8-25 11:18
引用: 准音频算法工程师 发表于 2024-8-25 10:32 AIC23Write(0x02,0x1f);//右声道输入音量 右声道输入音量对应的地址不是0x01么?

噢噢,我明白了。地址只有7位,是我输入16进制转2进制的高七位。原来如此,这下我能理解代码是什么意思了,谢谢你

点赞  2024-8-25 11:18

噢噢,我明白了。地址只有7位,是我输入16进制转2进制的高七位。原来如此,这下我能理解代码是什么意思了。

点赞  2024-8-25 11:18
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复