关于CAN通信的应答位(ACK)的疑问
大家好,正在学CAN,我看了何滨教授关于CAN的视频讲座后,有一个疑问,假设一个网络内有多个节点,一个节点发出信息后,希望其他的节点都接受,
它发完CRC后,希望其他的节点发出应答位(ACK),
那么这个节点如何知道其他的节点都收到了信息,而且都发出了自己的ACK,谢谢。
这是广播发送形式, 像 RS485 类, 都是无应答的.
CAN通信估计也是如此, 这是半双工通讯的通病. LAOXU 发表于 2024-3-1 10:18
这是广播发送形式, 像 RS485 类, 都是无应答的.
CAN通信估计也是如此, 这是半双工通讯的通病. ...
不会吧,我记得是发完CRC后,需要接收方填写ACK位。 newlined 发表于 2024-3-1 10:27
不会吧,我记得是发完CRC后,需要接收方填写ACK位。
有一个节点进行应答,数据就发送成功。不能确认所有节点是否都能收到,毕竟有些节点发生故障,例如进入BUS OFF模式,整个网络还是要能够正常工作不受影响。 乘风飞扬 发表于 2024-3-1 11:02
有一个节点进行应答,数据就发送成功。不能确认所有节点是否都能收到,毕竟有些节点发生故障,例如进入BU ...
是这样,明白了,谢谢您的回复。 乘风飞扬 发表于 2024-3-1 11:02
有一个节点进行应答,数据就发送成功。不能确认所有节点是否都能收到,毕竟有些节点发生故障,例如进入BU ...
点对点是有应答的,广播发送形式(主机对所有辅机), 是没有应答的, 否则所有辅机应答, 信号叠加乱套了, 主机根本无法正确接收解码. 本帖最后由 newlined 于 2024-3-1 15:16 编辑
LAOXU 发表于 2024-3-1 12:06
点对点是有应答的,广播发送形式(主机对所有辅机), 是没有应答的, 否则所有辅机应答, 信号叠加乱套了,...
您好,谢谢您的回复。我看教程,CAN的帧中,有数据帧,远程帧,错误帧,过载帧,请问主机是如何区分是广播的数据帧还是点对点的数据帧?数据帧中也没有定义是广播的位。 以RS485 为例, 地址为 8bit (0-255) , 规定最多连接 辅机 250个, 地址为 0-249, 254或255 为广播地址(对所有辅机), 其他地址 备为. LAOXU 发表于 2024-3-1 16:38
以RS485 为例, 地址为 8bit (0-255) , 规定最多连接 辅机 250个, 地址为 0-249, 254或255 为广播地址(对 ...
CAN协议中没有专门的广播ID,在一个QQ群中,我也问了这个问题,有位老师是这样回复我的,他说主节点不可能检测到谁没有发ACK,如果想知道大家都收到了信息,就需要每个节点都各自向主节点发从携带自己节点ID的信息。 newlined 发表于 2024-3-2 13:19
CAN协议中没有专门的广播ID,在一个QQ群中,我也问了这个问题,有位老师是这样回复我的,他说主节点不可 ...
如果不设地址............. 我想起来了, CAN是靠起始位的高低电平宽度, 作为ID地址.
只能单点通讯(与RS485不同), 不支持广播方式, 如你所说,
要想知道大家都收到了信息,只能主节点依次向各个子节点分别发送信息。
页:
[1]
2