请教一个C2000的CAN总线问题

2019-03-24 08:53发布

第一次接触CAN总线,有个问题想请教大家 想用LAUNCHXL-F28377S开发板的CAN收发器接收CAN总线上的数据 功能类似汽车故障诊断仪 读取所有数据并通过串口发送至电脑   按照我的理解,是不是配置好CAN模块为中断接收模式 然后收到CAN总线上的数据后F28377会触发CAN中断 此时数据应该在CAN寄存器内 再读取数据,判断ojbect id是不是自己想要的,是就保存,不是就丢弃   不过在学习controlSUITE例程时看到can.c中的CANMessageGet函数里有下边一句话,不清楚是什么意思,难道是在接收数据时要往总线上发一条数据吗?       // Transfer the message object to the message object specified by ui32ObjID.     HWREGH(ui32Base + CAN_O_IF2CMD) = ui32ObjID & CAN_IF2CMD_MSG_NUM_M;       // Wait for busy bit to clear     while(HWREGH(ui32Base + CAN_O_IF2CMD) & CAN_IF2CMD_BUSY)     {     }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
huaiqiao
2019-03-24 11:23
< 本帖最后由 huaiqiao 于 2016-10-14 15:48 编辑

没有用过c2000,虾哥你看下它的手册应该估计也像32一样有接收示意图的说明的。我觉得还是会像32一样放在FIFO中吧。如果是32的话,get message的时候,判断目标id是否是跟设置的一样,如果不一样,就跳过不执行。(因为32还有mask)你帖子中的这个好像直接给目标发送的把,直到这个busy bit被清零。

一周热门 更多>

相关问题

    相关文章