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:接收扩展 ID 和标准 ID。

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/986079/tms320f28379d-receiving-extended-and-standard-ids

器件型号:TMS320F28379D

我正在为 F28379D 开发一个 CANopen Lite 项目、其中一部分是 Lawicel CANUSB 软件狗的仿真/仿真。  到目前为止、我同时拥有 CANUSB 功能、并且正在处理对象字典支持例程。 使用 CANUSB 监视器可以发送消息。  接收到的消息出现在中、并分别用"T"或"t"表示扩展或标准。  与 允许屏蔽以启用任一或两种 ID 大小的 Microchip CAN 器件(和其他器件)不同、它显示的是 F28379D 中的消息对象只能接收或接收另一个。  我遇到的问题是标准 ID 消息对象中显示了一条带有29位 ID 的扩展消息。  不确定原因。

CANUSB 仿真被启用
>t123145 -->正确的标准 ID,ID =0x123,1个字节0x45。
t23429988 -->扩展 ID 不正确,它应该是0x12345678,2个数据字节0x99 0x88

这可能是我的代码或设置方法、也可能是位掩码。  但是、在我进一步挖掘之前、是否有一种方法可以用任一大小 ID 填充一个消息对象?

谢谢

John


TMS320F28379D Lawicel CANUSB 仿真器
c)丢失 CAN 端口
c) USB 仿真切换
e)切换用户输入
f)滞后状态
n)序列号
o) PEN CAN 端口
S) ET CAN 比特率0..8
t) ransmit 11位消息 tiiilnnnn……
t) ransmit 29位消息 eeeeeeeeeeeelnnnn……
V)变
? --这个帮助屏幕
>c.
CANUSB 仿真被禁用
>?

TMS320F28379D 接口程序1.00a
c)丢失 CAN 端口
c) USB 仿真切换
e)切换用户输入
f)滞后 CANopenLite 状态
h)耳拍 CANopenLite 使能切换
o) PEN CAN 端口
S) ET CAN 比特率0..8
V)变
? --这个帮助屏幕
>

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

    永不失败。  发出帮助请求、然后迅速找到解决方案。  就像为下一个大雪秋购买了一台雪上摩托车、然后再也不会下雪了。

    不管怎样、笔记本电脑屏幕1080分辨率使文本变得很小。  在许多地方对接收到的记录进行测试以解码信息的一个大型函数、只需在一个位置出现拼写错误(可能是剪切和粘贴) 导致代码查看 Tx 记录中的 ID 大小标志、而不是 Rx 记录中的 ID 大小标志。  因此、下面的测试查看了 CANMsgTxRec.flags

              if (fCANUSB_simulate){
                   if (CANMsgRxRec.flags == CAN_MSG_FRAME_EXT){
                       PutSerial ('T');
                       uIntToHex (CANMsgRxRec.id.lid、8);
                       PutBuffer();
                   }
                   否则{
                       PutSerial ('t');
                       uIntToHex (CANMsgRxRec.id.SID、3);
                       PutBuffer();
                   }
    现在、代码可以正确显示已接收的扩展 ID 消息和标准 ID 消息。  

    T0BFE640022600 使用命令26从节点 FE (客户端)发送到节点64 (服务器)
    T0F64FE0032664 使用命令26请求的数据从节点64回复到节点 FE。
    t70180102030405060708 ID 为701、len=8、data 01 02 03 04 05 06 07 08的通用 SID 消息

    这就是我初始化它的方式。

       CAN_setupMessageObject (CANBaseAddress、RX_MSG_EXT_ID、0、
                              CAN_MSG_FRAME_EXT、CAN_MSG_OBJ_TYPE_RX、0、
                              CAN_MSG_OBJ_USE_ID_FILTER、RXMSG_DATA_LENGTH);