请教一个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
1楼-- · 2019-03-24 11:23
< 本帖最后由 huaiqiao 于 2016-10-14 15:48 编辑

没有用过c2000,虾哥你看下它的手册应该估计也像32一样有接收示意图的说明的。我觉得还是会像32一样放在FIFO中吧。如果是32的话,get message的时候,判断目标id是否是跟设置的一样,如果不一样,就跳过不执行。(因为32还有mask)你帖子中的这个好像直接给目标发送的把,直到这个busy bit被清零。
littleshrimp
2楼-- · 2019-03-24 12:24
 精彩回答 2  元偷偷看……
huaiqiao
3楼-- · 2019-03-24 12:46
littleshrimp 发表于 2016-10-15 00:01
白天学习了一些CAN总线的东西感觉比想像的复杂
这个函数里的语句好像是通过控制CAN总线上的电平来实现数 ...

虾哥 不好意思。前几天回家了,所以。。。回复慢了好多。。。。
其实监听啥的 ,你不用管,那个是汽车电子用的好像。
像32的can,用起来也是比较方便的。
还有周立功有个can的协议也写的很复杂。。。。

一周热门 更多>

相关问题

    相关文章