在人间少走弯路:ESP32 对Ti 功放芯片Tas5825m的功能开启

ESP32开启Ti功放芯片Tas5825m功能

出于爱好,在用acm的芯片打了功放后,重新用ti的tas5825打了一块功放板,非常奢侈的用esp32做了主控:蓝牙接收音频信号和歌词信息。

和acm的芯片一样,ti的芯片并不是上电就能实现功放功能,必须通过mcu通过i2c进行控制。

 

int ic2(int add,int v){
  Wire.write(add);
  int d=Wire.write(v );
  delay(5);
  if(d>=0){
    Serial.printf("address %d ,value: %d, return %d \n",add,v,d);
  }
  return d;
}

 下面是setup中的操作

i2c的地址必须自己写代码去查找比较稳妥,因为官方datasheet中说的不是这个地址段。

以下i2c的操作基本保证了功放能够正常运行,也算是打开了dsp的,只是涉及到具体dsp的调整还有十万八千里。

Ti芯片的DSP功能,是在一个PPC软件中进行各种参数调整,然后导出配置后写入,所以如果你要玩TI的dsp,或者说其他的dsp基本也一样,必须找到相应的软件调整参数导入。这个过程在datasheet中并未提及。非常不友好,而且dsp涉及的参数非常多,很难手工每一项功能写代码来完成。

有人导出的dsp指令如下:



    { 0x00, 0x00 },
    { 0x7f, 0x00 },
    { 0x03, 0x02 },
    { 0x01, 0x11 },
    { 0x00, 0x00 },
    { 0x00, 0x00 },
    { 0x00, 0x00 },
    { 0x00, 0x00 },
    { 0x00, 0x00 },

    { 0x7f, 0x00 },
    { 0x7d, 0x11 },
    { 0x7e, 0xff },
    { 0x00, 0x01 },
    { 0x51, 0x05 },
    { 0x00, 0x02 },
    { 0x19, 0xa0 },
    { 0x1d, 0x01 },
    { 0x00, 0x00 },
    { 0x7f, 0x00 },
    { 0x46, 0x01 },
    { 0x00, 0x00 },
    { 0x02, 0x42 },
    { 0x53, 0x60 },
    { 0x54, 0x00 },
    { 0x00, 0x00 },
    { 0x7f, 0x00 },
    { 0x03, 0x02 },

我改造成arduino中的风格如下,以下代码可以正常开启功放功能。

 bool ss=Wire.begin(pin_sda,pin_scl);
 
  size_t  ret=0;
  Wire.beginTransmission(0x4c);

  // 0x7f change book
  //0x00 change page
    // Serial.println(ret);
ic2( 0x00, 0x00);
ic2( 0x7f, 0x00);

//hiz
ic2( 0x03, 0x02);

//enabel dsp
//init dsp


ic2( 0x02, 0x02); //device mole 选择
ic2( 0x40, 0x01);
ic2( 0x46, 0x01);



ic2( 0x00, 0x00);
ic2( 0x7f, 0x78);
ic2( 0x00, 0x01);


ic2( 0x48, 0x01);
ic2( 0x7c, 0x01);

ic2( 0x00, 0x00);
ic2( 0x7f, 0x8c);
ic2( 0x00, 0x01);
ic2( 0x28, 0x40000001);

 
 
//play

ic2( 0x00, 0x00);
ic2( 0x7f, 0x00);
// ic2( 0x00, 0x00);
ic2( 0x03, 0x03);



// 68 读取电源状态

byte error;
error = Wire.endTransmission();
Serial.println(error);

其实如果只是打开功放功能 只需要最后三行代码就可以了:

补充说明:

1,仔细看datasheet中的上电顺序;

2,datasheet中只是说了很少一部分内容,其他还有很多文档请看ti官网;

3,如果打算自己调整,只能说这是一个苦逼的活;如果要调整dsp,想办法装ppc吧,好像要申请;

4,以下ti官方的文档都应该看一遍。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值