3159|9

1366

帖子

6

TA的资源

版主

楼主
 

关于总线冲突那点事(二) [复制链接]

 
总线的系列贴一楼主说明了RS485防冲突机制,这种机制并不是保证百分百不产生冲突,而且节点使用软件延时轮询总线是否空闲抢占总线优先发送,难免使得系统的实时性、可靠性比较差。当然这个各有优缺点。楼主此贴说明另外一种半双工总线-CAN。CAN有点很多,楼主也不一一说明。在这个系列贴,我只是针对性的对其总线防冲突说明。CAN具有硬件上的总线仲裁优先级,也就是说,总线上的各个节点都可以根据总线访问优先级,这可以由报文标识符来进行抢占总线进行数据发送。

而楼主也借此特点,以及STM32的CAN外设的一些特点,来进行一种优化版本的防冲突机制。比如有100多个字节要发送,利用STM32的CAN三个发送邮箱先塞满数据(也就是24个字节),再开启发送中断,这个触发条件是发送邮箱变为空。接下来的字节长度依次在中断塞发送邮箱以此发送。

此内容由EEWORLD论坛网友RCSN原创,如需转载或用于商业用途需征得作者同意并注明出处



此帖出自stm32/stm8论坛

最新回复

很好很强大,很好的思路和解决办法  详情 回复 发表于 2018-12-9 12:38
点赞 关注(1)
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复
举报

1366

帖子

6

TA的资源

版主

沙发
 
那么利用这个思路,楼主在此帖详细进行说明。
那么第一步需要做的是,相关的初始化。楼主在这里比较偷懒,使用stm32cube来进行初始化,具体的波特率等设置,可以参考官方,同样也可以参考网上的。不过发送上需要注意一点是。要使能发送fifo优先级。


    这个设置有什么用的呢,我们可以看下官方手册寄存器说明。如果使能,就是等于1.那么这个发送邮箱的优先级是由发送请求的顺序来决定。这个有什么作用。STM32的CAN发送的有发送调度器,这个设置就是其调度器的其中之一。我们要把三个邮箱塞满,可以使用循环三次进行对三个发送邮箱依次填充,这样一来,有了这个调度器,我们可以控制发送邮箱像队列一样,每8个字节依次发送,快速抢占总线。


   


此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复

1366

帖子

6

TA的资源

版主

板凳
 
初始化配置好之后,我们还需要配置中断,依靠中断来进行发送我们需要发送的一帧数据未发送的数据。开始的三个邮箱只是发送了24个字节。接下来中断所要做的事情是:判断我们的数据长度是否为空。如果不为空,那么判断哪个邮箱是空的,如果是空的那么就往里面填充一个报文数据(也就是8个字节)。如果为空,那么我们如何判定是否我们的数据确实发送完成了,我们可以通过判断三个发送邮箱是否都为空了,如果为空,那么数据确实发送完成了。

     

那么我们如何配置这个中断呢。我们可以看下这个框图。
      

   


此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复

1366

帖子

6

TA的资源

版主

4
 
那么有上述的思路,代码实现起来也比较简单。抽象化个发送接口。传参带哪路CAN、待发送的数据指针、数据长度。注释也有了。不过第一包的标识符为自己的节点地址,接下来的包数的标识符都为0(优先级为最高),也就是说,第一包抢占到总线之后,接下来的一直抢占这个总线,直到数据发送完。


   在中断上,如果数据长度还不为空,则继续发送接下来的数据。
   

此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

5
 
可能帖子写的有点赶。但是如果有什么需要纠正的,欢迎一起交流学习。
此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1万

帖子

2854

TA的资源

管理员

6
 
酷~
此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

1万

帖子

2854

TA的资源

管理员

7
 
写的很好,多谢分享@strong161 @皈依 @long521 @5之蒲公英 @qweghf
此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

玩板看这里:

https://bbs.eeworld.com.cn/elecplay.html

EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!

 
 

回复

1万

帖子

2854

TA的资源

管理员

8
 
@54chenjq @shinykongcn
此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

玩板看这里:

https://bbs.eeworld.com.cn/elecplay.html

EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!

 
 

回复

767

帖子

2

TA的资源

纯净的硅(初级)

9
 
此帖出自stm32/stm8论坛
 
个人签名物致DIY 欢迎你的加入~
QQ群:646461928 公众号:智物知心致成
小店
 
 

回复

6366

帖子

4929

TA的资源

版主

10
 
很好很强大,很好的思路和解决办法
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表