This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280049:时钟和 PLL 功能障碍导致 DSP 功能故障发生器

Guru**** 2445440 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1523902/tms320f280049-clock-and-pll-dysfunction-leading-to-dsp-functional-failer

器件型号:TMS320F280049
主题:C2000WARE 中讨论的其他器件

工具/软件:

您好、专家

异常描述:
模块无法正常运行、缺陷率为每 100 件 1 件。
分析过程:
1、目视检查发现没有问题。
2.芯片重新编程成功。
3、对周边电路模拟信号和电源电压进行测试,未发现异常。
以下信号经过测试并确认正常:
① 引脚 22 (Iout+):~1.55V(正常)
② Ω PIN8 (VCCSEN):~1.69V(正常)
③ Ω PIN6 (VIN_S):~1.44V(正常)
④ PIN23 (VTEMP):~2.99V(正常)
⑤ 引脚 16 (VO_S) 和引脚 21 (ADC_A4):~0V(正常)
⑥ Ω PIN20 (S_3V3):~3.3V(正常)
4、软件工程师艾登在程序测试中发现错误的时钟时间。
① 首次测试
GPIO 配置测试:
PIN-4-XRSN:稳定高电平;PIN-31-GPIO17 脉冲周期:100μs;Pin36-GPIO35 脉冲周期:8μs
测试结果:
在常规模块中、脉冲周期与定义的值相匹配。 在故障模块中、脉冲周期为:PIN-31-GPIO17:1000μs;Pin36-GPIO35:80μs。 故障模块中的所有时间都比正常时间长、并且看门狗不断复位。
如下所示:
正常模块
C1(黄色:复位信号 XRSN)、C2(红色:GPIO17)、C3(蓝色:GPIO35)


异常模块
C1(黄色:复位信号 XRSN)、C2(红色:GPIO17)、C3(蓝色:GPIO35)

② 第二个测试
为了确定模式、测试程序中的脉冲周期增加了一倍、并比较了正常模块和异常模块之间的差异。
GPIO 配置测试:
PIN-4-XRSN:稳定高电平;PIN-31-GPIO17 脉冲周期:200μs;Pin36-GPIO35 脉冲周期:16μs
测试结果:
在常规模块中、脉冲周期与定义的值相匹配。 在故障模块中、脉冲周期仍然存在:PIN-31-GPIO17:1000μs;PIN36-GPIO35:80μs。 故障模块中的周期没有改变、并且看门狗不断复位。
如下所示:
正常模块
C1(黄色:复位信号 XRSN)、C2(红色:GPIO17)、C3(蓝色:GPIO35)

异常模块
C1(黄色:复位信号 XRSN)、C2(红色:GPIO17)、C3(蓝色:GPIO35)

5.检查了内部时钟配置电阻器 R435。 其电阻值为正常值(1KΩ)、并且在没有冷焊接的情况下连接牢固。

摘要:
1.对于故障 MCU:回流焊后、3.3V 电源正常、内部时钟配置电阻 R435(1KΩ Ω)正常工作。 测试程序可以成功烧录、但 I/O 端口脉冲周期与编程设置不匹配。 当编程周期加倍时、I/O 端口周期保持不变、并且仍然与设置不匹配。
2.更换 MCU 恢复正常的模块性能,而重新安装原来的 MCU 重现异常。 这表示外设电路没有问题、并确认 MCU 本身存在功能异常。

根据上一份报告、还进行了其他实验。 内部时钟 (INTOSC1 和 INTOSC2) 和锁相环 (PLL) 系统时钟输出 (PLLSYSCLK) 通过 GPIO 输出。 一个示波器测量 10MHz 处 INTOSC1 和 INTOSC2 的频率、PLLSYSCLK 频率也保持在 10MHz。 修改 PLL 的倍频和分频配置参数后、PLLSYSCLK 频率仍保持为 10MHz 不变。

今天下午、进一步的问题定位测试表明、在故障模块的时钟初始化期间、PLL 有效性检查反馈始终指示故障。 请帮助确定在什么情况下可能发生此问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不知道此问题是否由此勘误表引起

    但是、如果我们根据此权变措施进行一些更改、这将不起作用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    乘法器和分频器的许多组合都可以产生相同的输出频率。 但是、基准时钟频率与倍频器(称为 VCO 频率)的乘积必须在 TMS320F28004x 实时微控制器数据表 7.9.3.2.2 内部时钟频率中指定的范围内

    可能会有多种因素导致出现问题。 为了进行调试、我建议遵循 示例 1:从 TRM 验证 PLLRAWCLK 频率、第 899 页: https://www.ti.com/lit/ug/sprui33h/sprui33h.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Stevan

    许多倍频器和分频器组合都可以产生相同的输出频率。 但是、基准时钟频率与倍频器(称为 VCO 频率)的乘积必须在 TMS320F28004x 实时微控制器数据表中指定的范围内、即 7.9.3.2.2 内部时钟频率[/报价]

    首先、PLL 故障问题发生在 客户的 大规模生产产品中。 100 个样本中只有一个显示了 PLL 故障现象、并且在对 MCU 重新通电或将程序重新刷入 MCU 后该问题仍然存在。 其次、根据调试期间的寄存器配置、确认时钟频率处于“TMS320F28004x 实时微控制器数据表、7.9.3.2.2 内部时钟频率“中指定的范围内。

    可能有多种情况会导致问题。 为了进行调试、我建议遵循 示例 1:从 TRM 验证 PLLRAWCLK 频率、第 899 页: https://www.ti.com/lit/ug/sprui33h/sprui33h.pdf

    为我们模块配置的时钟源为内部时钟 INTOSC2(在调试期间从寄存器配置中可见)。 按照上述建议,我们进入调试模式,并在 SysCtl_isPLLValid () 函数的末尾添加了一个断点,我们可以在 DCC 成功且失败时观察到相关的寄存器值:
    正常模块:

    异常模块:

    原因此问题很长一段时间未解决、请尽快提供一些建议、提前致谢。

    此致

    Ethan

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    要进行进一步调试、您可以根据您的应用在 C2000ware 中运行 DCC(双时钟比较器)示例、TRM 中还提到了这些示例: 6.4.1.1 DCC 单次时钟验证等。  

    当出现错误条件时、它们由以下任一项生成:

    1.在 Counter0 达到 0 之前、Counter1 会向下计数到 0。 这意味着 Clock1 比预期快、或 Clock0 比预期慢。 此误差包括 Clock0 卡在 1 或 0 的情况。

    2.即使 Counter0 和 Valid0 都达到 0、Counter1 也不能达到 0。 这意味着 Clock1 比预期慢。 此误差包括 Clock1 卡在 1 或 0 的情况。

    任何错误都会冻结计数器的计数。 然后、应用可以读出计数器值、以帮助确定导致错误的原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Stevan

    实际上、在 PLL 故障的情况下、Counter0 和 Counter1 的计数值已在上一次回复中被拦截。 只是 客户在 使用 他们自己的项目。 现在、客户直接使用 C2000ware 的原始例程进行测试、并希望 BU 可以对样片进行深入测试。

    按照您的建议、我们从 C2000Ware_3_04_00_00 导入了原始工程“C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f28004x\examples\can\can_ex3_external_transmit“以进行测试。 由于我们的模块使用内部时钟、因此我们按如下方式修改了时钟配置:
    在 device.h 文件中:
    原始配置:

    #define DEVICE_setCLOCK_CFG        (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT (10)| \

                                        SYSCTL_FMULT_NONE | SYSCTL_SYSDIV (2)|  \

                                        SysCtl_PLL_ENABLE)

    修改为:

    #define DEVICE_setCLOCK_CFG        (SYSCTL_OSCSRC_OSC1 | SYSCTL_IMULT (20)| \

                                        SYSCTL_FMULT_NONE | SYSCTL_SYSDIV (2)|  \

                                        SysCtl_PLL_ENABLE)

    在调试模式下,我们在 SysCtl_isPLLValid () 函数的末尾添加了一个断点,以便在 DCC 成功或失败时观察相关的寄存器值。
    测试结果:

    对于正常样本、Counter1 和 Counter0 会同时向下计数到 0、且 Dcc0Regs.DCCSTATUS.DONE = 1;

    对于异常样本、Counter1 在 Counter0 之前向下计数到 0、且 Dcc0Regs.DCCSTATUS.ERR = 1;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ethan、

    我没有建议从 C2000Ware 导入 CAN 工程、而是使用 DCC 示例。 TRM 介绍了示例并推荐了调试机制。 请参阅器件 TRM DCC“一章。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Stevan

    根据我的测试、“C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f28004x\examples“中所有例程的时钟初始化将执行 DCC 校准、无论是针对 CAN、PWM、计时器等 我们根据您的建议安装了 C2000Ware 5.04、并使用 DCC 示例对其进行了测试。 测试结果如下:

    同样、我们使用内部时钟并进入调试模式。 在 SysCtl_isPLLValid () 函数的末尾添加了一个断点,我们可以在 DCC 校准成功或失败时观察到相关的寄存器值。

    测试结果:
    对于正常样本、Counter1 和 Counter0 计数同时达到 0、且 Dcc0Regs.DCCSTATUS.DONE = 1。

    对于异常样本、Counter0 之前 Counter1 达到 0、并且 Dcc0Regs.DCCSTATUS.ERR = 1。

    我相信不能在本地再进行测试。 该问题取决于芯片、发生概率为 1%。 它很容易在有问题的芯片上重现。 我不确定这是否与 280049 勘误表中提到的 PLL 锁定故障有关、但请提供明确的响应和权变措施。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    增加更多 PLL 专家、让他们洞察先机。