CAN总线技术1--协议摘要

来源:互联网 发布:当老师 知乎 编辑:程序博客网 时间:2024/05/07 15:27

CAN总线技术1--协议摘要

 

去年开始参加一个项目,由于涉及的内容比较多,且参与的人比较少,所以一直到现在,项目仍在进行中。最近这阶段,完成CAN总线设备在Rtems下的驱动。所以这里就写篇关于CAN总线设备的学习笔记。水平有限,错误在所难免,请各位大牛指正,欢迎各位看官拍砖。

 

这篇文章准备写如下几个方面的内容:

CAN总线协议重要内容摘要

CAN总线相关芯片

*网络控制控芯片SJA1000

*CAN总线收发器

CAN总线模块的硬件、软件设计

 

1.CAN总线协议重要内容摘要

(1)CAN分为数据链路层和物理层

逻辑链路子层包括:接收滤波、超载通知、恢复管理

媒体访问控制子层包括:数据封装/拆装、帧编码(填充/解除)、媒体访问管理、错误监测、出错标定、应答、串行化/解除串行化

图1

(2)CAN报文的帧类型

CAN2.0A中规定了4种帧格式:数据帧、远程帧、错误帧、超载帧。

数据帧:由7个不同的、场位组成,即起始位、仲裁场、控制场、数据场、CRC场、ACK场、帧结束。

图2

CAN报文的帧格式:以CAN2.0B扩展帧为例,每帧13B,包括两个部分:信息和数据两部分。前5个字节为信息部分,后8个字节为数据部分。

图3

(3)CAN总线的仲裁原理CAN总线使用的是一种叫做“载波监测,多主掌握/冲突避免”的通信模式。当总线空闲时呈现隐电平,此时任何一个节点都可以向总线发送一个显性电平作为一个帧的开始。当发生冲突,CAN总线的解决总线竞争的方法是,按位对标识符进行仲裁。

按位对标识符进行仲裁:...

图4

(4)报文滤波原理

CAN总线中,存在多种传送和接收数据的方式,比如点对点、一点对多点、全局广播等几种方式。这几种方式的选择和转换就是通过CAN总线中的报文滤波技术实现的。

在SJA1000中,无论何种模式,CAN的某一地址存在于验收滤波器中。CAN控制器能够允许RXFIFO只接收同识别码和验收滤波器中预设值相一致的信息。只有当接收信息中的识别为和验收滤波器预定义的值相等时,CAN控制器才允许将已接收信息存入RXFIFO。

图5

(5)CAN总线的通信错误及其处理

在CAN总线中存在5种错误类型:

位错误:某个节点向总线发一位的同时也在读取总线数值是否和发出的该位相等,不同则视为检测到一个位错误。例外情况,在仲裁场的填充位流期间或应答间隙送出隐位而检测到显位时,不视为位错误。

填充错误:

CRC错误:

形式错误:

应答错误: