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.

[参考译文] TMS320F28379D:上电期间的 CAN 总线雪崩性检测

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1354795/tms320f28379d-can-bus-avalability-detection-during-power-up

器件型号:TMS320F28379D

您好, 

我有两个  TMS320F28379D 通过 CAN 总线进行通信。

它们在主-从配置中进行设置、这意味着只有当主 MCU 发送数据(数据请求帧)时、从 MCU 才会发回请求的数据。

主器件定期发送数据请求帧(从器件响应)。

这是 CAN 总线的初始化函数。 此同一函数在主 MCU 和从 MCU 上运行

void HAL_setupCAN_CTRL(uint32_t base)
{
    //
    // Initialize the CAN controllers
    //
    CAN_initModule(CTRL_BRD_CAN);
    //
    // CAN bit rate is 500 KHz , derived from the system clock
    //
    CAN_setBitRate(CTRL_BRD_CAN, DEVICE_SYSCLK_FREQ, 500000, 16);

    CAN_disableInterrupt(CTRL_BRD_CAN, CAN_INT_IE0 | CAN_INT_ERROR |
                            CAN_INT_STATUS);
    //
    // Start CAN module
    CAN_startModule(CTRL_BRD_CAN);
}

当主 MCU 和从 MCU 都处于活动状态(同时上电)、然后 CAN 总线正确初始化、一切都正常!、

当 从器件首先加电、然后 主器件第二次加电时、 在 主器件中的 CAN 总线 初始化之后建立通信。!

3.但另一方面,当主器件首先加电  ,然后从器件第二次加电时,从器件不会 再从主器件获得数据请求帧。 在探测主器件的 TXB 引脚时、我没有看到这条线路上有任何活动。 就好像主器件的 CAN 模块尚未初始化一样。 有什么原因会发生这种情况吗?

查看主器件的错误状态、我只看到 CAN_ES 寄存器中的 LEC 位设置为7。

解决此问题的一种方法是、在主器件侧、如果我没有从从 MCU 接收到数据、只需再次初始化 CAN 总线、总线就会开始工作:

        //If there is no reception of data for more than 200 ms, reset the can module
        if(canReTryCounter > CAN_DELAY(CAN_RETRY_TIME))
        {
            //Reset the can bus configuration
            HAL_setupCAN_CTRL(CTRL_BRD_CAN);
            canReTryCounter = 0;
        }

是否有更好的方法来检测没有可用的 CAN 总线?  这里我不是在谈论 CAN 错误、而是讨论总线雪崩能力本身。

谢谢。

AK

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

    好的、因此主器件发送一个远程帧、而从器件响应。 由于只有2个节点、因此当从机未准备好时主设备发送第一个远程帧、主设备将持续永久重新发送该帧。 我已经在 www.ti.com/lit/SPRACE5:中对此进行了介绍

    当发送节点没有接收到一个 ACK 时、会导致一个 ACK 错误并且发送节点 一直在将帧永久重新传输。 发送错误计数器(TEC)将递增到128并在此处停止。  REC 保持为0。 不会脱离总线。 在这种情况下、用于发送邮箱的 TxRqst 位不 会被置位。 也不会生成任何中断。 如果另一个节点进入网络、TEC 将 在每次成功传输时开始递减(一直递减到0)。  

    现在、发送器将持续永久重新传输。 即、它不应该停止。 这是数据帧的行为。 我想知道远程帧的行为是否不同。 同时,你的犬。 LEC 值不反映 ACKE。 CAN_ERRC.TEC 的值是什么?  

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

    AK、

               对于稍有不同的注意事项、请勿在您的第一个职位中说出任何人的姓名。 根据您的提问性质和人员情况、论坛主持人将其分配给最合适的专家。 感谢您的理解。

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

    注意到先生! 我能够找出这个问题。 感谢您的帮助