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.

[参考译文] TMS570LS0432:PLL 在周期差异下导致 CAN 通信故障

Guru**** 2387830 points
Other Parts Discussed in Thread: TMS570LS0432, HALCOGEN
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1180633/tms570ls0432-pll-under-cycle-slip-causes-can-communication-failure

器件型号:TMS570LS0432
主题中讨论的其他器件:HALCOGEN

BU 专家、您好!  

我的客户发现 7个 基于 TMS570LS0432的电路板 在低温(-40°C)下没有 CAN 输出。 他们在故障电路板上进行了低温测试、我现场为他们提供了支持。

 在-40°C 环境温度下、 配置 CAN 以外部环回模式工作并监控 CAN TX 线路。 我们发现 TX 线中实际上有数据、但波特率不正确(仅125kbps、但预期为500kbps)。 这种现象表明 CAN 控制器的时钟不正确。 因此、我们检查了晶体振荡器和 PLL 状态。  晶体振荡器 可以正常工作、但我们发现 GLBSTAT.RFSLIP 位被置位、这意味着"已检测到周期滑动下的 PLL "。  

我的客户想要知道:  

1)。  为什么会发生"PLL 转差"、这种现象的概率是多少?  

2)。 此故障似乎与温度有关、并且是瞬态故障、 勘误 手册是否包含此故障? (我已查看 芯片版本 A 的勘误表,我想与您联系,以了解此故障是否与 SSWF021#45类似?  

3)。 TI 是否具有在 正常温度或低温下检测此故障的权变措施? 和权变措施来避免这种情况?  

4)。 他们还想进行故障分析、我们是否支持执行此低温 FA?  

谢谢。 此故障对客户造成了相对严重的影响、请帮助检查此问题。  

BR、  

将会  

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

    你好、

    在低温条件下、PLL 跳周的概率较高。  默认情况 下、PLL 时钟被配置为自动切换到振荡器、并且在 PLL 差异的情况下生成 ESM/异常。 在异常服务例程中、您可以禁用然后重新启用 PLL 以锁定 PLL。

     PLL 跳周可被配置成生成一个系统复位。  PLL 在复位后是否恢复?

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

    您可以按照以下步骤在异常服务例程中禁用并重新启用 PLL:

    1、将所有时钟域从 PLL1切换到振荡器
    2.用 CSDISSET 禁用 PLL1。 此操作会禁用 PLL 并导致转差信号不再 被驱动。
    3.清除 GLBSTAT 中的 RFSLIP 或 FBSLIP 状态标志
    4.用 CSDISCLR 重新启用 PLL1。
    5.将时钟域切换回 PLL1。

    若要在 PLL1跳周发生时生成中断、请执行以下操作:

    1.确保 BPOS=0x1、ROS=0 (PLLCTL1寄存器):在 PLL 跳周后将使用 OSC、不生成复位、但 ESM 标志被置位(ESM 1.10和 ESM 1.42)

    2.启用 ESM 中断  

    ESM 支持多达128个通道、这些通道被分成3组。 组1有64个通道:通道0至通道63。 默认情况下、组1中通道的中断不启用。 要为组1的通道10和通道42 (ESM 1.10、ESM 1.42)启用中断:

    1. esmREG->IESR1 |= 0x1 <<10; //ESM 1.10

      esmREG->IESR4 |= 0x1 <<10;//ESM 1.42   

      esmREG->ILSR1 &=~(0x1 <<10);// ESM 1.10的低电平

      esmREG->ILSR4 &&μ~(0x1 <<10);// ESM 1.42的低级 ESM 中断

      您可以使用 HALCoGen 执行此步骤:

       

    2.在 VIM 模块中启用 ESM 中断:

    void esmLowInterrupt (void)将在 ESM.c 中生成

    3.将代码添加到 esmGroup1Notification(../):

    您可以编写自己的代码来禁用 PLL 并重新启用 PLL。  

    您还可以调用 HALCOGen 生成的函数

    a. _errata_SSWF021_45_pll1 (...)

    b. setuppll();

    c.  mapClocks();

       

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

    您好 QJ、  

    非常感谢您的指导。 但在故障电路板中、即使是上电复位也无法在循环滑动的情况下将器件从 PLL 中节省下来。 不确定 POR 是否具有与"禁用并重新启用 PLL "过程类似的效果? 如果这两种方法不同、我会让他们尝试 "禁用并重新启用 PLL "过程。  

    我还建议客户让系统在低频(20MHz)工作条件下工作、但他们说整个系统应用可能会遇到严重的异常功能。  

    还可以使用哪些权变措施? 谢谢。  

    此致、  

    将会  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="493764" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1180633/tms570ls0432-pll-under-cycle-slip-causes-can-communication-failure/4448261 #4448261"] POR 是否具有与"禁用并重新启用 PLL "进程类似的效果?

    如果它们使用 HALCOGen 生成的启动函数、则在上电复位后调用 PLL 差异权变措施。

    如果(_errata_SSWF021_45_both _PLL (PLL_retries)!= 0U)

    默认情况下、PLL_retries 为5。 您可以增大此数字以尝试。