GDE上生成的code在EVM板上正常使用,在我自己的板子上工作不正常。
我自己设计了一个demo板,基本是参考EVM板
首先我用GDE设计了一个code,这个code在3256的EVM板上验证过,HPL/HPR和LOL/LOR输出正常。但是把code烧录到我自己的板子上,HPL/R表现为声音严重失真,音量也极小。LOL/R就干脆什么信号也没有
我做了以下实验:
1.将我的板子的进入IN1之前的电路输入到EVM的IN1端口,EVM的HPL/R和LOL/R输出正常。证明输入前端工作正常。
2.我将原code中
// # reg[ 1][ 12] = 0x08 ; Route LDAC to HPL
{ 12,0x08},
// # reg[ 1][ 13] = 0x08 ; Route RDAC to HPR
{ 13,0x08},
改为
// # reg[ 1][ 12] = 0x04 ; Route IN1_L to HPL
{ 12,0x04},
// # reg[ 1][ 13] = 0x04 ; Route IN1_R to HPR
{ 13,0x04},
烧录到自己的板子里,HP端口就有声音输出了,并且不会随着掉电重启而改变。声音效果和EVM板上的旁路设置一样。
这应该证明板子硬件设计没有问题,3256工作正常。
3.对比自己的板子和EVM板,晶振以及各电源端口工作电压都正常。
现在我就比较困惑,到底哪里出了问题?烦请指教
既然是参考了 EVM 板, 效果不同, 可以对比一下差别, 从差别处下手分析,
另外也要注意一下焊接质量和连接等低级问题.
这个是正常会发生的。
EVM使用的I2S 时钟是从一个TAS1020的芯片发生的,选择固定的FS后I2S的时钟就是标准的。 但是他很可能和你的板子使用的I2S的时钟和格式完全不同。
所以,检查你自己板子的I2S格式,速度, 对应datasheet或者Control Console 做一个时钟寄存器的正确的值出来就好