打印
[STM32F1]

多个CAN设备通信问题

[复制链接]
3716|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FAQ|  楼主 | 2015-8-1 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
A,B两个CAN设备,搭在CAN总线上。 A和B需要相互向对方发数据。如果A,B的发送时间不同步就会有同时发送,产生冲突的情况。根据CAN仲裁。优先级高的会发送成功,优先级低的仲裁失利,从下一个位开始转为接收状态工作 。那么优先级低的想要发送的数据最后改怎么办。是丢失了,还是是说会自动重发。

沙发
FAQ|  楼主 | 2015-8-2 23:38 | 只看该作者
:(

使用特权

评论回复
板凳
mumu3013| | 2015-8-3 12:19 | 只看该作者
首先你得这种设计本身就存在bug,并不好,CAN总线之前的通信是需要软件级的调配的,不是随时随地占用总线,那样不合理,也不好
其次,一般can的波特率设置高点,存在冲突的肯能行会小一些,除非你一次传输的数据量特别多,占用时间很长;在这即使有一个CAN没有传输成功,它会有标志位的,你可以依据标志位进行重传设置,但是这样也不好,还是软件上调配好总线上各个CAN的工作发送时间

使用特权

评论回复
地板
FAQ|  楼主 | 2015-8-3 13:02 | 只看该作者
mumu3013 发表于 2015-8-3 12:19
首先你得这种设计本身就存在bug,并不好,CAN总线之前的通信是需要软件级的调配的,不是随时随地占用总线, ...

你的意思是让A,B两个设备进行同步?
采用半双工方式。如果不做同步处理,随意发的话尽管有不成功自动重发的功能,但是这样也觉得不合理啊。

使用特权

评论回复
5
FAQ|  楼主 | 2015-8-3 13:03 | 只看该作者
目前我的需求很简单,就是A,B两者双向互为收发。如何解决冲突问题。

使用特权

评论回复
6
mumu3013| | 2015-8-3 13:09 | 只看该作者
FAQ 发表于 2015-8-3 13:03
目前我的需求很简单,就是A,B两者双向互为收发。如何解决冲突问题。

你这种方式必然有冲突,本身操作不合理,你可以在发送前尝试监测RX线的电平,然后在觉得是否发送

使用特权

评论回复
7
runningwzf| | 2015-8-3 13:10 | 只看该作者
应用层那里自己重发

使用特权

评论回复
8
小小刀| | 2015-8-4 14:00 | 只看该作者
按照我的理解: 自己手东重新发送,不会自动重发的

使用特权

评论回复
9
jcx0324| | 2015-8-4 14:22 | 只看该作者
可以软件设置自动重发

使用特权

评论回复
10
lwsn| | 2015-8-5 10:23 | 只看该作者
CAN没有传输成功会有标志位,依据标志位进行重传设置

使用特权

评论回复
11
韬铸88| | 2017-5-10 10:27 | 只看该作者
学习一下

使用特权

评论回复
12
zhy980| | 2017-5-18 21:42 | 只看该作者
很好解决,A定时发送,B收到A的以后再发

使用特权

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

本版积分规则

FAQ

227

主题

2029

帖子

9

粉丝