Other Parts Discussed in Thread: C2000WARE
主题中讨论的其他器件:C2000WARE
您好!
需要 发送和接收 CAN 消息的方向。
我想发送具有任意 CANID 和数据的 CAN 消息
2.我想接收 带有任意 CANID 和数据的 CAN 报文
全双工 TX 和 RX。
如何设置 CAN 控制器?
在 这两种情况下、CAN_setupMessageObject 中的 Objid、msgIDMask 应该是什么。
谢谢
成形术
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.
Other Parts Discussed in Thread: C2000WARE
您好!
需要 发送和接收 CAN 消息的方向。
我想发送具有任意 CANID 和数据的 CAN 消息
2.我想接收 带有任意 CANID 和数据的 CAN 报文
全双工 TX 和 RX。
如何设置 CAN 控制器?
在 这两种情况下、CAN_setupMessageObject 中的 Objid、msgIDMask 应该是什么。
谢谢
成形术
成形术、
请从 https://www.ti.com/tool/C2000WARE 下载最新的 C2000ware 软件包 、以访问 C2000器件的示例、驱动程序和相关文件。
在此软件包中、转到"C2000Ware_X_XX_00_00\driverlib\f28002x\examples\cAN"。 具体而言、请查看示例"CAN_Ex5_Transmit _Receive"、其中提供了用于发送和接收 CAN 消息的代码。
如有其他问题、请告知我们。
谢谢。
你(们)好
在建议的示例中、RX 设置预先已知 ID 为0x15555555。 如果我事先不知道 ID、这将不起作用。
CAN_setupMessageObject (CANA_base、RX_MSG_obj_ID、0x15555555、
CAN_MSG_FRAME_EXT、CAN_MSG_OBJ_TYPE_RX、0、
CAN_MSG_OBJ_RX_INT_ENABLE、MSG_DATA_LENGTH);
在现实生活中、我可以获得包含任何 ID 的消息。
如何设置 CAN RX 以获取包含任何 ID 的消息?
谢谢
成形术
成形术、
[引用 userid="359668" URL"~支持/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forume/1103183/tms320f280025c-send-and-receive-can-messages/4093178#4093178"]在实际生活中、我可以收到包含任何 ID 的消息。您对此很正确、这就是 为什么它具有验收滤波功能的原因。
为了将消息对象设置为接受具有任何 ID 的消息、函数调用将如下所示:
CAN_setupMessageObject (CANA_base、RX_MSG_obj_ID、0x15555555、
CAN_MSG_FRAME_EXT、CAN_MSG_OBJ_TYPE_RX、0、
CAN_MSG_OBJ_RX_INT_ENABLE | CAN_MSG_OBJ_USE_ID_FILTER、MSG_DATA_LENGTH);
设置标志"CAN_MSG_obj_use_ID_filter"将允许使用滤波来解析消息 ID、函数中的前一个参数将允许位掩码接受特定的 msgID。 请查看器件 TRM、了解有关验收滤波的更多信息、尤其是 CAN_IF1MSK 寄存器。
请参阅示例"CAN_EX8_MASK"以了解如何利用验收滤波。
谢谢。
每次都需要使用 ID 和数据来初始化消息对象。
[~ userid="359668" URL"支持/微控制器/C2000-microset-group/c2000/f/c2000-microset-forum/1103183/tms320f280025c-send-and-receive-ca-messages"]2. 我希望接收具有 任意 CANID 和数据的 CAN 消息[/QUERPLET]您需要以接收任何 ID 的方式设置接受屏蔽。 请参阅 C2000ware 中的掩码示例(C:\ti\c2000\C2000Ware_4_00_00_00\driverlib\f28002x\examples\CAN\CAN_EX8_mask.c)。 我已在应用报告(www.ti.com/lit/SPRACE5)中解释了此示例的操作。
[引用 userid="359668" URL"~支持/microset/C2000-microset-group/c2000-f/C2000-microset-forum/1103183/tms320f280025c-send-and-receive-ca-messages"]全双工 TX 和 RX。不确定这意味着什么。 根据协议的性质、CAN 是半双工。 在任何给定的时间点、节点都可以发送或接收、但不能同时发送或接收。
您好!
我也尝试过这种方法。
此示例使用轮询而不是中断。
如果我使用本示例中的掩码、中断的行为会有所不同。
也就是说、我获得中断、但是 CAN_getInterruptCuse, (CAN_INT 寄存器(偏移= 10h))改变了它的运行方式。
而不是返回"引起中断的报文对象数"、它应该是数字1到32、我得到 0x8000。
这是预料之中的吗? 我出了什么问题?
此致
成形术
您好!
CAN_ex2_loopback_interrupts 使用特定的消息 ID。 这不是真实使用案例。
CAN_setupMessageObject (CANA_base、RX_MSG_OBJ_ID、0x1、CAN_MSG_FRAME_STD、
CAN_MSG_OBJ_TYPE_RX、0、CAN_MSG_OBJ_RX_INT_ENABLE、
MSG_DATA_LENGTH);
任何修改 示例和使用 CAN_MSG_OBJ_USE_ID_FILTER 的尝试 都会导致 CAN_INT 的行为发生变化。
也就是说、我在 CAN_INT 中获得错误指示、而不是对象编号(1或2)。
尽管 从 CAN_INT 读取了0x8000、但我仍然可以读取 CAN RX 数据并获取有效帧的奇怪之处。 我可以信任这种行为吗?
我需要有关如何同时正确使用 CAN_MSG_OBJ_USE_ID_FILTER 和 CAN_INT 的说明。
需要 CAN_MSG_OBJ_USE_ID_FILTER 与 RX 中断一起使用的示例/说明。
谢谢
成形术