TAS5760M-Q1 放大器内部时钟误差被锁存问题

free-jdx 2021-07-30 15:48:52 4010

1. 前言

在声音生成过程中发生了内部时钟错误。
当问题发生时,测试I2S时钟如下(采用12K采样率):

根据数据表,AMP应该被恢复,
然而,AMP似乎被卡在内部时钟错误发生后。

可能我们知道什么样的条件可以触发AMP卡在时钟错误状态。
当时钟问题发生时,SPK_SD和SPK_FAULT是高的,这意味着AMP没有问题。
MCU的I2S声音数据正常,但AMP输出无声音。

2. 注意事项

本仪器对MCLK、SCLK和LRCK的比值非常敏感,建议误差控制在±1以内。
否则可能导致设备无法恢复正常。

2.1 检查时钟

除了SPK_FAULT引脚,是否可以用I2C确认是否有故障?
检查设备在没有输出时是否进入睡眠模式

2.2 判断sleep模式

如果卡死是由于错误引起的,
如果错误条件已经消除,
则需要拨动SPK_SD位来清除故障。
并检查SPK_SLEEP/ADR引脚,查看设备是否处于Sleep模式。

2.3 MCLK时钟

从设计角度来看,MCLK的设置在513.88左右。
然而,AMP仍然没有任何问题。
再次检查比率是否为+/-1。
没有来自AMP数据表的数据。

3. 复现流程

从之前的信息中,我假设设备首先工作在正常状态,
然后将I2S时钟速率改变为一个异常值触发错误,
最后将时钟回调,发现设备卡在错误中。

Pull SPK_SD low→停止所有时钟→切断电源→等待20ms→接通电源→给出所有时钟→使设备静音→使SPK_SD high→取消静音。

4. 问题梳理
4.1 检查内部错误,有如下2种测试序列

(1)设备工作正常->手动使I2S时钟接地
->内部时钟错误->recover I2S时钟
->内部时钟错误恢复(无错误发生)

(2)在设备中,10ms内有1个I2C命令用于读取Amp状态和1个I2C命令用于音量控制。
在正常情况下,没有问题,如果故意插入一个I2C命令读取电源控制寄存器0x01,
内部时钟错误发生,AMP似乎被卡住了。
检查了I2S相关的时钟,一切正常,可以生成时钟。

4.2 当问题发生时,08寄存器的反馈是08

也有另一种情况表明OCE Thres=0x11, CLKE=1。
用于比率计算。
从TI数据中采样率12K, MCLK到fs= 512, SCLK到fs=64。
LRCLK = 12 khz,
在我们的MCU设置中,MCLK到fs约为513.88,
SCLK到fs=64.22,LRCKL=12khz。
这些时钟在内部时钟问题发生之前和之后都是正常的。

5. 与FAE沟通

根据描述,时钟错误是由I2C命令触发的,无法恢复。
I2S时钟触发可以恢复的错误。

这个问题可以在我们的EVM板上重现还是只在我们客户的板上重现?
我们的客户使用什么SCL频率?
如果您在15毫秒而不是10毫秒内发送3个I2C命令会有帮助吗?
请提供我们客户发送到设备的I2C命令,我们可以尝试

这个问题是在我们的设计板上复现的,不是EVM板。
SCL波特率设置为400K。
至于解决方案,它不是客户的首要考虑。他
们更喜欢找到根本原因。
SW中真实的I2C命令可以总结如下:

1)在10ms的任务中,I2C读取AMP寄存器状态08来获取是否有任何CLKE/OCE/DCE错误发生。
2)在50ms的任务中,I2C写AMP寄存器对通道音量进行控制。
(I2C操作命令发送前有1ms延迟)

在上述2个序列下,内部时钟误差难以再现。
但是,我们添加了一些额外的测试例程,用于随机(当SW在上面2个序列上运行时)
插入一个额外的I2C读取AMP寄存器的电源控制0x01,
很容易触发内部时钟错误发生和AMP卡住的情况。

6. 分析

这种现象很有可能是客户的系统造成的
实际上,I2C命令和时钟错误之间没有联系。

这个问题是发生在每一块板还是只有一块板?
使用示波器捕获引脚SPK_FAULT和MCLK, SCLK, LRCK同时吗?

如果真的发生时钟错误,我们应该发现SPK_FAULT被拉低了。
记住,当错误发生时,要放大每个时钟。
还要在错误发生之前和之后读取从0x00到0x11的所有寄存器值,以
便我们可以比较它们以找到一些东西。
是否可以使用EVM板将I2C命令发送到客户板?
可能是客户的I2C出了问题,发出了错误的命令

7. 测试顺序

插入异常I2C命令时,发生AMP内部时钟错误

8. 使用EVM板测试

在图片中看到捕获了I2C信号
似乎将08写入寄存器0x01

无论如何,仍然需要知道错误发生之前和之后从0x00到0x11的所有寄存器值
还有示波器捕获的时钟信号

不知道当它们插入另一个I2C命令时会发生什么。
当第一个I2C命令还没有完全传输时,
系统发现一个插入I2C命令时会做什么?
可以放弃第一个I2C命令并立即开始传输这个插入的I2C吗?
这将导致向设备传输未知的命令。

所以建议使用EVM发送I2C命令到主板。
只需要将SCL和SDL的两条线从EVM连接到板上。

SPK_FAULT引脚是否一直保持高电平?
如果这是真的,这似乎不是一个错误的发生
而是一些错误的寄存器设置,使设备卡住。

使用EVM板测试,如果您真的将08写入寄存器0x01,
设备将会被卡住,寄存器0x08中的值是08。
测试了SPK_FAULT引脚,它仍然很高。
和我们做的主板完全一样。

9. 解决办法

可以将FD写入寄存器0x01,这是它的默认值。
这个设备会恢复正常

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
free-jdx
红包 94 2 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区