博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CANOpen系列教程05_CAN总线同步与位填充、优先级的决定
阅读量:2045 次
发布时间:2019-04-28

本文共 1685 字,大约阅读时间需要 5 分钟。

CANOpen最新全套教程:

7.CANOpen系列教程07_CANOpen协议概述
8.CANOpen系列教程08_CANOpen通信接口引导学习
9.CANOpen系列教程09_CANOpen对象字典
10.CANOpen系列教程10_关于Canfestival及对象字典生成工具环境搭建
11.CANOpen系列教程11_深度分析CanFestival_3架构
······

该系列教程已经在我的个人微信公众号**「strongerHuang」**整理并分享。因在这里分享文章,还需单独整理一遍,时间有限,就不再一一重复整理出来了。

想要查看更多相关教程,可以关注我的,回复【CANOpen系列教程】即可查看。

申明:该文档由作者「strongerHuang」原创发布,仅供个人学习使用,转载请公众号联系作者授权。版权所有,禁止商用

一、写在前面

继续为大家更新CAN总线协议相关内容,这些内容其实也比较重要,会直接影响到你后期CAN总线的编程,夸张一点的说会影响到你的软件架构。

本文内容相对来说比较容易理解,初学者有必要了解一下。

二、位填充

位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。

这个功能很好理解,如下图所示。位填充的数据不需要编程控制,由控制器自动完成。其目的也是提高CAN总线的稳定性。

(1) 发送单元的工作

在发送数据帧和遥控帧时, SOF~CRC 段间的数据,相同电平如果持续 5 位,在下一个位(第 6 个位)则要插入 1 位与前 5 位反型的电平。

(2) 接收单元的工作

在接收数据帧和遥控帧时, SOF~CRC 段间的数据,相同电平如果持续 5 位,需要删除下一个位(第 6 个位)再接收。如果这个第 6 个位的电平与前 5 位相同,将被视为错误并发送错误帧。

三、优先级的决定

前面讲述“CAN 总线差分信号”时描述了显性和隐性,其实这是CAN总线的特点,也是决定CAN总线优先级比较重要的功能。

在CAN总线空闲态,最先开始发送消息的单元获得发送权。

多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。

上图描述了CAN控制仲裁的过程,单元2最终获得了抢占CAN总线的权利,也就是说单元2具有更高的优先级。

当单元1 仲裁失利时,自动转换为接收(本来该发送,优先级比别人低,就开始接收数据了。 同时,控制器将会在下一轮继续发送这次未完成的数据)。

3.1 数据帧和遥控帧的优先级

具有相同 ID 的数据帧和遥控帧在总线上竞争时,仲裁段的最后一位(RTR)为显性位的数据帧具有优先权,可继续发送。

数据帧和遥控帧的仲裁过程如下图:

3.2 标准格式和扩展格式的优先级

标准格式 ID 与具有相同 ID 的遥控帧或者扩展格式的数据帧在总线上竞争时,标准格式的 RTR 位为显性位的具有优先权,可继续发送。

提示:

不明白数据帧和遥控帧,标准格式和扩展格式之间差异的朋友,建议参看我上一篇文章。

四、其他

CAN总线协议的重要内容在这前面基本是讲述的差不多了,还有一些不是很重要的内容,比如硬件设计需要在CAN_H和CAN_L之间添加一个120欧电阻,总线的传输距离等。

接下来的文章会结合STM32芯片集成CAN控制器、例程讲述如何编程控制CAN总线数据的收发等。

五、说明

1.该文档部分文字来自网络,仅供个人学习使用,版权所有,禁止商用。

2.本文由我一个人编辑并整理,难免存在一些错误。

3.为了方便大家平时公交、地铁、外出办事也能用手机随时随地查看该教程,该系列教程已更新于微信公众号【strongerHuang】,关注微信公众号回复【CANOpen系列教程】即可查看全系列教程。

六、最后

我的微信公众号(ID:strongerHuang)还在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩内容,如果想查看更多内容,可以关注我的微信公众号。

你可能感兴趣的文章
【Linux】什么是链接文件及其分类
查看>>
【UML】《Theach yourself uml in 24hours》——hour2&hour3
查看>>
【linux】nohup和&的作用
查看>>
【UML】《Theach yourself uml in 24hours》——hour4
查看>>
僵尸进程产生原因等问题记录
查看>>
【python基础知识】python 2 与python 3 的差异
查看>>
【python基础知识】文件操作中的读写模式
查看>>
css通用button的设置
查看>>
css display属性
查看>>
let和const命令总结
查看>>
es6之 Symbol笔记
查看>>
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
javaScript String 类型
查看>>
隐马尔科夫模型知识点记录
查看>>
【NLP学习笔记】中文分词
查看>>
【NLP学习笔记】用jieba实现高频词提取
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【NLP学习笔记】(三)gensim使用之相似性查询(Similarity Queries)
查看>>
Numpy基本方法与属性
查看>>