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:TMS570LS0432如何修改CANBUS ID以在mailbox2上接收。

Guru**** 2386610 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/1099590/tms570ls0432-tms570ls0432-how-to-modify-canbus-id-to-receive-on-mailbox2

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

您好,

我在TMS570LS0432上使用了CANBUS样本代码。

我有一个关于CANBUS MODIFY ID的问题。

当可以传输超过8位的数据时。

我应该  修改CAN ID,它可以将数据放回下一个mailbox2中。

请告诉我如何操作。

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

    Kuanlei,您好!

    CAN协议的最大有效负载限制为8字节。 您将无法在一个帧中发送超过8字节的有效负载。 如果您的字节超过8个,则可以在第2,第3,...帧中传输剩余的字节。 您不需要使用其他邮箱。

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

    您好,QJ Wang

    感谢您的回复!

    您的意思是,如果我有16个字节的CAN数据,我只需要1个RX邮箱来接收数据,并且使用1个TX邮箱来发送数据两次吗?

    您是否有任何示例代码可以教我?

    我想,我必须使用canUpdateID()函数才能正确完成? 但我不知道该怎么做。

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

    如果要传输16个字节,则应调用canTransmit()两次:

    d_count = 2;

    UINT8 TX_DATA[D_COUNT][8]={... ...};

    UINT8 *TX_PTR =&TX_DATA[0][0];

    /**-起动变速箱*/
    用于(cnt=0;cnt<D_count;cnt++)

       canTransmit (canREG1,canMESSAGE_BOX1,TX_PTR);/*传输8个不同的块,1 x 1 *
       while (TX_done == 0){};/*...等待传输请求通过*/
       tx_done=0;
       TX_PTR +=8;/*下一个8字节...*/
    }

    请参见HALCOGen中的示例: Example_canIntCommunication.c

    如果要传输具有不同消息ID的消息,则需要先调用canUpdateID(),然后调用  canTransmit()。