2019-03-26 15:13发布
5525 发表于 2016-6-1 22:08 请参考: http://bbs.eeworld.com.cn/thread-319417-1-1.html http://bbs.eeworld.com.cn/thread-48955 ...
最多设置5个标签!
但是,请注意,如果总线上就你一个人,不好意思,消息是发不出去的。
CAN总线,龟毛的地方就是,不管他要不要你的消息,都要给别人方便,发 frame的ack,
但是这个ACK是L2层的。就是总线上游100个人,100个人都起床了,有1人发消息,就有99人发ACK
http://bbs.eeworld.com.cn/thread-319417-1-1.html
http://bbs.eeworld.com.cn/thread-489550-1-1.html
一个节点发送数据成功的话,对应的TA位会置位,
CPU通过向其写1使其复位,在这里CPU是自动对其执行复位操作还是要写语句复位;
很多例程是写语句复位,但是我发现没有那句语句也会使得CANTA位从1变为0,而且即使写了也无法执行那句语句。
for(i=0;i<10;i++)
{
if(ECanRegs.CANTA.all==0x00000001)
{
ECanRegs.CANTA.all=0x00000001; //它进入不了这句,但是再一次进for循环时这位已经为0了,另一个节点接收是成功的。
break;
}
delay(100us);
}
一周热门 更多>