工具/软件:Code Composer Studio
您好!
我已经使用中断读取了 CAN 消息
执行该操作
CAN_readMessage (CANB_BASE、RX_MSG_OBJ_ID、rxMsgData);
我可以看到数据。 同样、我想阅读《ARBID》和《DLC》
那么、我放置类似这样的内容
RX_ID = HWREG_BP (CANB_MSG_RAM_BASE + RX_MSG_OBJ_ID * 0x20 + 0x08);
在该代码之后、我仍然只读取0。
此致
左
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.
工具/软件:Code Composer Studio
您好!
我已经使用中断读取了 CAN 消息
执行该操作
CAN_readMessage (CANB_BASE、RX_MSG_OBJ_ID、rxMsgData);
我可以看到数据。 同样、我想阅读《ARBID》和《DLC》
那么、我放置类似这样的内容
RX_ID = HWREG_BP (CANB_MSG_RAM_BASE + RX_MSG_OBJ_ID * 0x20 + 0x08);
在该代码之后、我仍然只读取0。
此致
左
您好、Lakshmi、
不确定是否可以正常工作、但您可以尝试读取 CAN_IF2ARB 寄存器以进行竞标:
RX_ID = HWREG (CANB_BASE + CAN_O_IF2ARB)和0x1FFFFFF;//[28:0] 29位 ARB ID
对于 DLC、尝试读取 CAN_IF2MCTL 寄存器:
DLC = HWREG (CANB_BASE + CAN_O_IF2MCTL)和0xF;//[3:0] 4位 DLC
此致、
Joseph
您好、Joseph、
我尝试了
RX_ID = HWREG (CANB_BASE + CAN_O_IF2ARB)& 0x1FFFFFF;
RX_ID 保持为0、同时数据被更新。 我正在使用 std_id、但仍需要在 rx_id.
有一些疑问:
此致
左
您好!
-如果您使用寄存器读出 CAN 消息、它是 IF1还是 IF2呢?
我正在使用来自 diverslib 的此函数
CAN_readMessage (CANB_BASE、17、rxMsgData);
-对于您感兴趣读出的 ID、是消息对象 ID (1至32)还是仲裁 ID (来自发送节点的唯一 ID、11位标准还是29位扩展)?
CAN_setupMessageObject (CANB_BASE、17、0x00、
CAN_MSG_FRAME_STD、CAN_MSG_OBJ_TYPE_RX、0、
CAN_MSG_OBJ_RX_INT_ENABLE | CAN_MSG_OBJ_USE_ID_FILTER、8);
此致、
左
您好、Lakshmi、
如果您使用的是 driverlib、则它是 IF2。 抱歉、我省略了一个步骤。 在读取 arbID 和 DLC 之前先执行此操作。 以下函数将数据从消息 RAM 传输到 IF2寄存器(您还可以查看 driverlib 中函数的参数的可能值):
CAN_transferMessage (CANB_BASE、2、17、false、false);
然后:
RX_ID = HWREG (CANB_BASE + CAN_O_IF2ARB)和0x1FFFFFF;//[28:0] 29位 ARB ID
DLC = HWREG (CANB_BASE + CAN_O_IF2MCTL)和0xF;//[3:0] 4位 DLC
此致、
Joseph