第一次接触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)
{
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
没有用过c2000,虾哥你看下它的手册应该估计也像32一样有接收示意图的说明的。我觉得还是会像32一样放在FIFO中吧。如果是32的话,get message的时候,判断目标id是否是跟设置的一样,如果不一样,就跳过不执行。(因为32还有mask)你帖子中的这个好像直接给目标发送的把,直到这个busy bit被清零。
一周热门 更多>