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:如何在2个 tms320f28379d 板之间通过 CAN B 总线发送浮点通信,我可以通过 CAN 通信发送字符数据

Guru**** 2528270 points
Other Parts Discussed in Thread: TMS320F28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1079565/tms320f28379d-how-to-send-float-over-can-b-bus-communication-between-2-tms320f28379d-board-i-am-able-to-send-char-data-usinf-can-communication

部件号:TMS320F28379D
“线程: C2000WARE”中讨论的其它部件

您好,

我使用2块 TMS320F28379D Launchpad 板进行 CAN 总线通信。 (C2000Ware_4_00_00_00)

在 CPU2上配置了 CAN -B,用于控制器并能够发送和接收数据(字符数据)

因为 driverlib msg 数据参数是 UINT16_t[8],所以我无法发送和接收浮点数据。

对于 如何 通过 CAN 传输2个浮点值,任何导联都是值得赞赏的  

发送 flot 值,如下所示

memcpy (&j,&f, 4);//将 float 复制到 int
//
memcpy (jj,&f,sizeof (flat32_t)); //将 int 复制到短整型数组2
txMsgData[0]= jj[0]和0xFFu;
txMsgData[1]=(jj[0]>>8)& 0xFFu;
txMsgData[2]= jj[1]和0xFFu;
txMsgData[3]=(jj[1]>>8)& 0xFFu;

和发送 txMsgData。

在接收器部件上,我可以在 CAN B 寄存器上看到与此相同的数据,但无法从接收短整型缓冲器中提取数据。

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

      它向字符数组显示浮点值的分区,但显示16位而不是8位

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

    Ankur,

                   CAN 协议只能与字节一起使用。 它不知道(或不在乎)这些字节代表什么。 您是否能够先在同一节点上将浮点转换为 int,然后再转换回浮点? 也就是说,不要让人参与。 只需尝试转换并重新转换回同一节点上的浮点。 如果您能够执行此操作,则没有理由不能执行重新转换以在接收节点上浮动,因为 CAN 通信工作正常。

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

    我尝试了几次尝试将 float 转换为 char 并发送,在收到零件时将 char 转换为 float,但它还不起作用。

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

    Ankur,

    [引用 userid="10172" url="~/support/icles/c2000-icroms-group/c2f/c2000微控制器-forum/1079565/tms320f28379d-如何发送浮点-基于 CAN-b-bus-communication -介于2-tms320f28379d-板-I-99135-char 的通信协议,只能使用用于通信。 它不知道(或不在乎)这些字节代表什么。

    我将在这里介绍一下哈雷什提到的内容。

    您只需通过 CAN 发送32位(浮动可变数据宽度)即可。  无需转换或对变量进行拼写。

    一个注意事项是,对于每32位,您必须将其作为4个 uint16_t 元素的数组发送(因为只有较低的8位有效)

    有关更多信息,请访问 :https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1078454/tms320f280025-question-about-uint16_t/3996473?tempkey=a6a4393f-2876-4279-b967-cce26ff9d3eb

    如果需要进一步澄清,请随时联系我们。

    谢谢,萨希尔。