[STM32F1] 多个CAN设备通信问题

[复制链接]
4080|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两个设备进行同步?
采用半双工方式。如果不做同步处理,随意发的话尽管有不成功自动重发的功能,但是这样也觉得不合理啊。
 楼主| FAQ 发表于 2015-8-3 13:03 来自手机 | 显示全部楼层
目前我的需求很简单,就是A,B两者双向互为收发。如何解决冲突问题。
mumu3013 发表于 2015-8-3 13:09 | 显示全部楼层
FAQ 发表于 2015-8-3 13:03
目前我的需求很简单,就是A,B两者双向互为收发。如何解决冲突问题。

你这种方式必然有冲突,本身操作不合理,你可以在发送前尝试监测RX线的电平,然后在觉得是否发送
runningwzf 发表于 2015-8-3 13:10 | 显示全部楼层
应用层那里自己重发
小小刀 发表于 2015-8-4 14:00 | 显示全部楼层
按照我的理解: 自己手东重新发送,不会自动重发的
jcx0324 发表于 2015-8-4 14:22 | 显示全部楼层
可以软件设置自动重发
lwsn 发表于 2015-8-5 10:23 | 显示全部楼层
CAN没有传输成功会有标志位,依据标志位进行重传设置
韬铸88 发表于 2017-5-10 10:27 | 显示全部楼层
学习一下
zhy980 发表于 2017-5-18 21:42 | 显示全部楼层
很好解决,A定时发送,B收到A的以后再发
您需要登录后才可以回帖 登录 | 注册

本版积分规则

FAQ

233

主题

2050

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部