Part Number:TPA6304-Q1
你好~ 我有使用两片TPA6304,
1)其中一片配置成一片FAULT脚悬空 I2C addr 0x58;
2)另外一片FAULT脚接了47K上拉, I2C addr 0x5A ,
log信息如下, 0x5a一直不成功。帮忙分析一下会是哪方面的问题,谢谢!
TPA6304-AMP1=0x58 Init…
wr_addr=30, val=80
wr_addr=1, val=80
wr_addr=3, val=aa
wr_addr=36, val=20
wr_addr=37, val=22
wr_addr=38, val=a0
wr_addr=39, val=40
wr_addr=3a, val=62
wr_addr=4, val=0
rd_addr=30, val=0
rd_addr=1, val=0
rd_addr=3, val=aa
rd_addr=36, val=20
rd_addr=37, val=22
rd_addr=38, val=a0
rd_addr=39, val=40
rd_addr=3a, val=62
rd_addr=4, val=0
—TPA6304-AMP1 Init OK—!
TPA6304-AMP2=0x5A Init…
wr_addr=30, val=80
wr_addr=1, val=80
—IIC_Stop—
—IIC_Stop—
—IIC_Stop—
wr_addr=3, val=aa
—IIC_Stop—
—IIC_Stop—
—IIC_Stop—
wr_addr=36, val=20
wr_addr=37, val=22
wr_addr=38, val=a0
wr_addr=39, val=40
wr_addr=3a, val=62
wr_addr=4, val=0
rd_addr=30, val=0
rd_addr=1, val=0
rd_addr=3, val=ff
rd_addr=36, val=0
rd_addr=37, val=22
rd_addr=38, val=a0
rd_addr=39, val=40
rd_addr=3a, val=62
rd_addr=4, val=0
—TPA6304-AMP2 Init NG—!
liu billy:
排除AMP2芯片问题,我把AMP2的FAULT悬空 也配置成0X58 也是没问题的~ 难道0x5a 配置有问题?
,
Kailyn Chen:
您好,把47Kohm电阻改成4.7Kohm试试呢?我怀疑数据手册这里的电阻写错了,应该是4.7Kohm。
,
liu billy:
你好~ 换成4.7K 问题还是没解决,还是报错~
,
liu billy:
FAULT脚 启动时是自己拉低然后再拉高吗?不需要外部控制器去操作吧?
,
Kailyn Chen:
是的, 不需要外部控制,fault是开漏输出,上电期间它先输出为低电平,经过tSTART 10ms左右DVDD Power on reset之后I2C 启动,这时候fault被上拉电阻拉高,此时上拉阻值也决定了I2C的地址,当上电初始化完成之后,fault引脚释放,为输出报错引脚。
您是用的switch切换的fault是悬空还是上拉吗? 注意别等上电初始化完成之后再切换,因为这时候fault引脚的功能就是输出报错功能了。
,
liu billy:
不是通过SWITCH切换的fault, 硬件配置的,直接上拉47K, 另外一个Fault脚悬空。共用一直I2C总线
,
liu billy:
1)0x58 正常(硬件配置fault脚悬空)
2)0x5a 异常找不到设备 (硬件配置fault脚接47K上拉电阻)此脚没跟外部控制器相连。
,
Kailyn Chen:
您好,我看到数据手册里有给出上拉阻值的范围,fault上拉阻值数据手册这里的47Kohm是有问题的,最高不超过10Kohm。所以像我上述说的改成4.7Kohm。我看EVM使用的是4.99Kohm,但是您已经改4.7还是不行,另外,上拉4.7KOhm到数字电压DVDD 3.3V是吗?您确认下上拉电压没问题吧?
,
liu billy:
是的,DVDD 3.3V
,
liu billy:
你好~ 我尝试了2.7K \ 2K、 100K 都不行,也尝试直接用LED把FAULT脚跟DVDD3.3V相连,还是不行.可以帮忙确认一下0x5a的有效配置是多少吗?
,
Kailyn Chen:
好的,那很奇怪了,我去确认下这个0x5A的值是否有效。
另外,我也怀疑是不是七位从机地址为1011010,datasheet是最高位补0,得到的0x5A。
同样上拉47Kohm,您把地址改成0xB4试试看是否可以?同时我这边也会去确认下这个问题。
给您带来不便非常抱歉。
,
Kailyn Chen:
您好,有尝试将地址改成0xB4试试吗?
,
liu billy:
还在试,晚点回复你..谢谢~
,
Kailyn Chen:
嗯好的, 等您的回复。
,
Kailyn Chen:
您好,关于TPA6304指的0X5A地址,我这边已经确认,fault上拉47kohm是没有问题的。 不是4.7K也不是左移一位。
可能还是读写程序或者哪里的问题,您这边再测试下。
您是使用的自己的板子还是EVM板子?
,
liu billy:
自己的板子,一样的程序,0x58没问题啊! 按理不是读写程序问题!
,
Kailyn Chen:
好的,另外,那麻烦再验证一下,总线上两片TPA6304 ,方便断开一片,只使用0x5A的地址看看是否可以吗?
理论上来说,总线上挂两片从机是没问题,I2C总线会受总线电容的影响,最大不超过400pF。我担心是不是由于走线过长,或者其他寄生电容的原因导致超过这个总线电容,识别不到另一个地址,所以我们可以断开另一片,只使用0x5A的地址试试呢?
,
liu billy:
两片同时工作,一片0x58 (工作),一片0x5a(工作不正常); 不工作的一片0x5a配置成0x58就可以工作了,排除了硬件问题。。目前我改成了两组I2C都用0x58,但是缺点要飞线才行~
,
Kailyn Chen:
两片都使用同一个地址,会发生地址冲突,总线寻址的时候会发生仲裁。
我的意思是是否可以断开0x58,只使用一片0x5A,看是否能正常工作?
,
liu billy:
不可以,就是单独一片0x5a 也没成功过!
,
Kailyn Chen:
您好,0x5A地址时,fault除了上拉,是否有和MCU或者其他Soc连接?如果有的话,断开fault的其他连接。
因为tpa6304上电期间,会抓取fault的电压来 决定I2C 地址,担心由于和外部电路连接,导致电压不准而无法获得I2C 地址。