CAN通信中CANTA寄存器中何时置位

2019-03-26 15:13发布

资料写的是对应邮箱中的消息发送成功,则置位。
是不是其他节点的邮箱消息接收成功后才会置位?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
ixupeng
1楼-- · 2019-03-26 18:30
 精彩回答 2  元偷偷看……
ienglgge
2楼-- · 2019-03-26 20:35
< 不知道,你是只是分析寄存器还是要写程序,这些模块应该都有库函数啊。例程什么的吧。手册具体如何描述的。
5525
3楼-- · 2019-03-27 01:58
Transmission-Acknowledge Register (CANTA), 是你自己发送,你发送完了,这bit就会起来。
但是,请注意,如果总线上就你一个人,不好意思,消息是发不出去的。

CAN总线,龟毛的地方就是,不管他要不要你的消息,都要给别人方便,发 frame的ack,
但是这个ACK是L2层的。就是总线上游100个人,100个人都起床了,有1人发消息,就有99人发ACK
5525
4楼-- · 2019-03-27 02:03
ixupeng
5楼-- · 2019-03-27 03:42
5525 发表于 2016-6-1 22:08
请参考:

http://bbs.eeworld.com.cn/thread-319417-1-1.html
http://bbs.eeworld.com.cn/thread-48955 ...

一个节点发送数据成功的话,对应的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);
}
5525
6楼-- · 2019-03-27 06:06
 精彩回答 2  元偷偷看……

一周热门 更多>