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,这是它的默认值。

这个设备会恢复正常

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

  1. FPGA之道(78)静态时序分析(四)内部时钟相关时序分析

    文章目录 前言 内部时钟相关时序分析 单时钟域时序分析 多时钟域时序分析 同源时钟的时序分析 PLL.DCM的时序分析 相关时钟的时序分析 数据用作时钟的时序分析 异步逻辑时序分析 多时钟驱动同一时钟 ...

  2. pic单片机内部时钟校准c语言,实例讲解PIC单片机的时钟设置

    什么时钟? 首先我们先讲讲什么是时钟.时钟就是单片机的心脏.每跳动一下.整个单片机的各个电路就同步的动作一下.就好像我们做广播体操的时候 广播上喊的节拍1234 2234 3234....然后我们全部 ...

  3. 20211028:DC综合时的内部时钟处理

    DC综合时的内部时钟处理 问题描述 分析与处理方法 总结 问题描述 综合时出现未约束的endpoints. 分析与处理方法 利用vcs和netlist文件来检索出现的endpoints,追溯至最原始的 ...

  4. APM32F103 RTC内部时钟源报警中断例程测试

    APM32F103 RTC内部时钟源报警中断例程测试 ✨相关篇推荐<[开源电路]STM32F103VCT6开发板>

  5. APM32F103 RTC内部时钟源秒中断例程测试

    APM32F103 RTC内部时钟源秒中断例程测试 ✨相关篇推荐<[开源电路]STM32F103VCT6开发板>

  6. 浅谈晶振作用功能、晶体和晶振、外部时钟和内部时钟、分频倍频预分频后分频、定时器和计数器

    Fosc=frequence oscillate 晶振频率 晶振是用来起振的,只是振荡电路的一种,还有自激振荡器.电容三点式振荡器.LC振荡器.RC振荡器......其作用是通电才产生原始时钟频率,这 ...

  7. 单片机之外部时钟与内部时钟

    1.晶振 首先,单片机能正常工作的必要条件之一就是时钟电路,时钟是单片机的脉搏,是单片机的驱动源,单片机工作是在统一的时钟脉冲控制下一拍一拍进行工作的.这个脉冲由单片机控制器中的时序电路发出的.所以单 ...

  8. HR8P506,时钟配置,一切从内部时钟HRC开始.

    首先,在进行这项工作之前,建议大伙先熟读HR8P506手册的系统时钟章节. 前面我们已经进行过点灯工作了,为什么我们什么都没有配置单片机仍然会跑呢? 好吧,一般单片机从上电开始就会默认开启内部IRC时 ...

  9. 假设定时器内部时钟为16MHz,(1)完成下面的注释。(2)可以定时的时间为( 10 )ms。

    假设定时器内部时钟为16MHz,(1)完成下面的注释.(2)可以定时的时间为( 10  )ms. 公式: T=(arr+1)*(PSC+1)/Tck 其中TCK为时钟频率,PSC为时钟预分频系数,ar ...

最新文章

  1. 2009第二届C++技术大会即将在上海隆重召开
  2. Swagger 入门使用
  3. 在线html表格设计器,6款优秀的在线表单设计器
  4. php 发那科,FANUC发那科CNC数据采集教程连接CNC
  5. C++与Java多态的区别
  6. cowboy源码分析
  7. MySQL5.6.10的安装
  8. Ubuntu18.04关闭内核自动更新
  9. 快速入门nebula graph
  10. Win10系统提示过期,三条命令帮你搞定
  11. 大白菜U盘重装win7系统教程,PE重装win7系统教程
  12. 无线Mesh网络技术基础与应用
  13. 开心的小明-动态规划算法
  14. 开源后台管理框架之AdminLTE学习
  15. How to make a ipcamera
  16. 作为移动支付行业引领者,爱贝面临着哪些挑战?
  17. SRCNN超分辨率Pytorch实现,代码逐行讲解,附源码
  18. 瑞芯微RK3188规格说明,ARM构架
  19. 集群和分布式的概念:
  20. Cell | 迎来跨越式发展!庄小威院士团队开发新成像方法,以高通量和高分辨率来测量单个细胞中染色质的表观遗传修饰...

热门文章

  1. Daily Scrum Meeting 11.12
  2. 利用Python绘制柱形图或堆积柱形图
  3. [HTML5点滴]客户端存储那些事
  4. Symbian OS s60 3rd编程中实现IMSI、IMEI查询
  5. java接口返回pdf时修改文件名称问题
  6. 计算机网络实验报告哈工大_哈工大计算机网络实验报告之二
  7. 0基础学RS(三)路由器基本配置
  8. 学java的就业方向_JAVA的就业方向是什么?
  9. java 谷歌地图_如何使用java在浏览器上显示谷歌地图?
  10. linux 光盘刻录命令,linux 刻录光盘 命令 cdrecord