CAN总线 节点之间通信 如何确认接收信息 +20

CAN总线节点如何应答
2024-10-22 16:14:39
推荐回答(3个)
回答1:

首先,要明确你要的应答是什么,是正确接收某个报文,还是某个节点向另一节点请求报文
一、正确接收报文:
CAN报文包含一个ID场的部分,每个报文在总线上广播,节点收到报文后比较ID,如果是该节点应该接受的报文ID,该节点则完成接受;
二、请求报文:
CAN报文内在ID场前有一个1bit长度远程帧场,0表示为普通帧,1表示为远程帧,当A节点希望B节点向它发送某个报文时,A节点向总线广播远程帧,远程帧无数据场,总线上节点同样也是比较报文的ID场,当B节点比对ID场发现该远程帧是向它请求时,B节点发送该远程帧请求的帧,A通过第一点中的方法接受收

PS:CAN总线报文的CRC校验场后面会有一个ACK应答场,发送报文的节点发出的ACK(1Bit)为“1”,正确应答的节点(报文数据校验通过正确)会将总线上的这个ACK位电平拉成“0”,表示正确应答。
若A节点广播报文后,发现该报文的ACK始终为“1”,则其收发器将从缓存中自动重发该帧,直到有节点正确接受ACK为“0”或者A节点离线

希望对你有帮助,还有不完整或不理解的可以追加提问或者M我

回答2:

本人自学can通信,搜集了大量资料
调试了一些设备
开发过can-bus can-rs232以及485通信

有需要请看名字
一起交流

本和chinaku2005为同一个人

回答3:

我是 百度“单片机-can”团员
很高兴为你服务
你可以用协议啊,比如modbus协议,