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.

[参考译文] TMS570LS3137:ID和数据未对齐

Guru**** 2584245 points
Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1093901/tms570ls3137-the-id-and-data-are-misaligned

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

大家好,

以下是客户提出的问题,可能需要您的帮助:

数据使用TMS570LS3137的CAN发送,ID使用29位扩展ID,ID的最后8位使用累计帧号进行处理,即第一帧为00,第二帧为01。 最后一个帧是FF。

发送数据时,它将出现以下问题:

     ID                              数据

 xx xx xx xx 00                    xx xx xx xx xx xx xx xx xx xx xx xx xx xx

 xx xx xx 02                     xx xx xx xx xx xx xx xx xx xx xx xx xx xx

 xx xx xx 03                     xx xx xx xx xx xx xx xx xx xx xx xx xx xx

     。                                。                        

     。                                。

     。                                。

 xx xx xx xx FF                    xx xx xx xx xx xx xx xx xx xx xx xx xx xx       

第二个帧ID的位数至少应为8位01,但它变为02,数据仍然是第二个帧的数据,后续ID正常。 在发送之前调用canUpdateID以更改ID,然后调用canTransmit以发送数据。

客户想知道如何解决这个问题。 您可以帮您检查一下吗? 谢谢。

此致,

樱桃

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

    您好,Cherry,

    假设HALCoGen生成的canTransmit() API是邮箱(例如mailbox1)传输的消息具有预定义的消息ID。 预定义的消息ID是在canInit()中或通过调用canUpdateID()定义的。  

    UINT32 canTransmit(canbase_t *node, UINT32 MessageBox, const uint8 * data)--> 不包括消息ID  

    如果不使用预定义的消息ID,则必须在调用canTransmit()之前调用canUpdateID()。

    您的客户是否使用HALCOGen生成的API?

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

    在发送ID=1的消息之前,客户是否致电canUpdateID()将消息ID更新为0x1?

    您的客户如何在下表中检查消息是否已传输?  

      ID                              数据

     xx xx xx xx 00                    xx xx xx xx xx xx xx xx xx xx xx xx xx xx

     xx xx xx 02                     xx xx xx xx xx xx xx xx xx xx xx xx xx xx

     xx xx xx 03                     xx xx xx xx xx xx xx xx xx xx xx xx xx xx

         。                                。                        

         。                                。

         。                                。

     xx xx xx xx FF                    xx xx xx xx xx xx xx xx xx xx xx xx xx xx      

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

    您好,

    感谢你的帮助。

    您405.2363万您的客户是否使用HALCOGen生成的API?

    是的。

    客户405.238万客户是否在发送消息ID前调用canUpdateID()[/0x1]?

    是的,在canTransmit之前,他们已调用canUpdateID来更新ID。

    谢谢,此致,

    樱桃

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

    您好,

    请问您有没有关于上述信息的更新?

    谢谢,此致,

    樱桃

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

    如果在调用canTranmi()函数之前更新了mailbox1中的消息ID,则应该传输mailbox1中包含新消息ID的消息。

    您可以使用  

    msgid = canGetID (canREG1,canMESSAGE_BOX1);

    重新读取ID以确保ID已更新。

    或者,您可以将消息RAM配置为RDA:

    1. DCAN CTL |=1<7; //启用测试模式

    2. DCAN_TEST |=1<<9; //将CAN消息RAM配置为RDA