打印
[应用相关]

关于CAN通信的接收

[复制链接]
562|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jing880311|  楼主 | 2020-9-3 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在弄CAN通信,有一个疑问如果网络上有很多个节点,每个节点的ID不同,其中一个节点往外发消息的话,是只要有节点接收(不管ID是否符合),就会给ACK一个显性。那么我怎么确认正确ID的节点是否收到了消息呢?还是想串口通信一样,由收到消息的节点返回一个确认消息吗?

使用特权

评论回复
沙发
香水城| | 2020-9-3 11:00 | 只看该作者
正确接收信息的节点 会发送ACK回复你发送端。

使用特权

评论回复
板凳
jing880311|  楼主 | 2020-9-9 18:37 | 只看该作者
香水城 发表于 2020-9-3 11:00
正确接收信息的节点 会发送ACK回复你发送端。

您好,我用两个节点,分别收发数据,然后用示波器查看波形,我发现不管接收节点的ID是否与发送ID相符,都会有返回ACK。发送节点我是用HAL_CAN_AddTxMessage这个函数发送的,不管ID是否相符,都会返回HAL_OK。
但是如果我的接收节点断电,那么就没有返回ACK了。
那么我是不是可以这样认为,在总线上有多个节点的时候,即便当前的发送节点发送成功了,我也不能保证正确ID的节点接收到了数据,因为可能正确ID的节点已经掉电了,而这个返回ACK是其他ID不相符的节点返回的。
那么为了保证数据传输,是不是也需要像串口通信一样,有返回机制?
第一次用CAN通信,了解的不多,希望能得到您的回复。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

73

帖子

0

粉丝