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.

[参考译文] TMS320F280039:CAN 模块在时钟丢失时的行为

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1278980/tms320f280039-behavior-of-can-module-upon-loss-of-clock

器件型号:TMS320F280039

尊敬的专家:

我对 MCLKOFF 有一些疑问。  

我正在使用280039通过 CAN 从主机接收消息。

如果我 在应用程序代码中突然将 MCDCR.OSCOFF 位设置为1、OSCCLK 将断开与 MCD 模块中的 OSCCLK 计数器的连接。 将检测到缺少 OSCCLK、并且 OSCCLK 源将切换到 INTOSC1。  

我认为检测缺少的时钟和切换时钟源可能需要很短的时间。

我的问题是:

1.在此短时间内、CAN 模块是否仍能通过 CAN 从主机接收信息? 它是否会导致 CAN 总线断开?

2.当 MCDCR.OSCOFF 位 为1时,CAN 时钟是否仍然工作?

谢谢!

此致

奇田市

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

    Kita 您好!

    在发生完整时钟故障时、如果 OSCCLK 死区、在 CLOCKFAIL 信号变为高电平之前、可能需要8192个 INTOSC1周期(即0.8192ms) 的最大时间、之后时钟被强制切换到 INTOSC1。 这是你指的时间 ?

    当检测到 MCD 时(在这种情况下、使用 OSCOFF 位触发)、将绕过 PLL 并且时钟强制切换到 INTOSC1。 同时、发生这种情况的系统 依靠 PLL 跛形时钟运行。 因此、要回答您的问题、CAN 模块仍将接收消息或工作、但考虑到 CAN 的时钟要求  、由于系统运行在跛行时钟上、事务可能会受到影响。

    谢谢。
    Prarthan.

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

    您好、Prarthan、

    感谢您的答复。

    我的客户使用280039作为 CAN 的接收器节点。  

    我的客户具有外部 振荡器、正在通过以下步骤测试 MCD 功能:

    1.使用以下函数断开 MCD 时钟源:sysctl_disconnectMCDClockSource ();

    2. 等待 NMI 在时钟故障时触发:while (mcd_clkfail_isr!= 0x1u );

    3.连接内部振荡器:SYSCTL_selectOscSource (SYSCTL_OSCSRC_OSC1);

    4、 Re 连接时钟检测时钟源缺失,停止模拟时钟故障: SYSCTL_connectMCDClockSource();

    5.使用原始时钟源设置 PLL 控制和时钟分频器: SysCtl_setClock(device_setClock_CFG);

    客户报告、如果接收器正在执行步骤1-5并且 发送器同时通过 CAN 向接收器发送消息、则发送器发送异常 CAN 消息、然后发送器处于总线关闭状态。

    我正在测试并发现相同的问题。 我使用28335作为发送器、28335始终显示相同的消息:0x00 0x00 0xFF 0xFF 0xFF   0x00 0x00  。

    开始时、SYSCLK 是120MHz、消息可以很好地传输。 没有错误。 范围如下。

    CH1是发送器的 CANRX-GND、CH2是发送器的 CANTX-GND、CH15是 SYSCLK/8。

    然后、SYSCLK 将更改为10MHz、消息无法正常传输。    发送器的 CANRX-GND 和 CANTX-GND 上都存在错误。

    在下一个周期中、发送器发送 一条异常消息、示波器如下。  SYSCLK 连接到10MHz。

    在下一个周期中、 发送器还发送 一条异常消息。 SYSCLK  连接到10MHz

    3个周期后、发送器进入脱离总线状态。 SYSCLK  连接到10MHz

    我 想接收器的时钟可能是导致通信错误的原因、因为 时钟会 首先更改为内部 振荡器、需要一些时间才能切换回外部振荡器。

    但我不明白为什么接收器的时钟问题会导致 发送器的异常消息 CANTX-GND 和 CANRX-GND

    你能给我一些建议吗?

    谢谢!

    此致

    奇田市

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

    Kita,

               这是预期行为。 我来解释一下:一旦您禁用了 OSCCLK、器件就会按照 PLL 的跛形模式时钟运行、直到 MCD 电路检测到缺少时钟并将时钟切换至 INTOSC1。 接收 CAN 节点在您禁用 OSCCLK 的那一刻就无法接收。 不仅如此。 由于 CAN 模块的输入时钟频率已经改变、其配置的比特率也会改变。 因此、每当发送器尝试发送数据时、它就会开始用错误帧阻塞总线。 这将使发送器断开总线。 这就是你所看到的。