码迷,mamicode.com
首页 > 其他好文 > 详细

重学STM32---(九) ——CAN通信(一)

时间:2016-04-11 22:26:48      阅读:358      评论:0      收藏:0      [点我收藏+]

标签:

  

一.CAN简介

 

1.CAN是什么?

CAN 是 Controller Area Network的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。

 

2.CAN特点

(1)  多主控制

(2)  消息的发送

       在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新

消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier  以下称为 ID)决定优先级。ID 并不

是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消

息 ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的

单元则立刻停止发送而进行接收工作。

(3)       系统的柔软性

(4)       通信速度

。。。。。等等

 

3.  错误状态的种类

           技术分享

 

(1)  主动错误状态

主动错误状态是可以正常参加总线通信的状态。

处于主动错误状态的单元检测出错误时,输出主动错误标志。

(2)  被动错误状态

被动错误状态是易引起错误的状态。

处于被动错误状态的单元虽能参加总线通信,但为不妨碍其它单元通信,接收时不能积极地发送错误通知。

处于被动错误状态的单元即使检测出错误,而其它处于主动错误状态的单元如果没发现错误,整个总线也被

认为是没有错误的。

处于被动错误状态的单元检测出错误时,输出被动错误标志。

另外,处于被动错误状态的单元在发送结束后不能马上再次开始发送。在开始下次发送前,在间隔帧期间内

必须插入“延迟传送”(8 个位的隐性位)。

(3)  总线关闭态

总线关闭态是不能参加总线上通信的状态。

信息的接收和发送均被禁止。

这些状态依靠发送错误计数和接收错误计数来管理,根据计数值决定进入何种状态。

 

                技术分享

 

4. 总线拓扑

CAN 收发器根据两根总线(CAN_High 和 CAN_Low)的电位差来判断总线电平。

总线电平分为显性电平和隐性电平两种。 总线必须处于两种电平之一。 总线上执行逻辑上的线“与”时,显性电平为“0”,隐性电平为“1”。物理层的特征如图所示。

             技术分享

5.CAN协议

5.1 帧的种类

通信是通过以下 5 种类型的帧进行的。

•  数据帧

•  遥控帧

•  错误帧

•  过载帧

•  帧间隔

另外, 数据帧和遥控帧有标准格式和扩展格式两种格式。 标准格式有 11 个位的标识符 (Identifier:  以下称 ID) ,扩展格式有 29 个位的 ID。

               技术分享

               技术分享

               技术分享

5.2  数据帧

数据帧由 7 个段构成。

数据帧的构成如图所示。

(1)  帧起始

表示数据帧开始的段。

(2)  仲裁段

表示该帧优先级的段。

(3)  控制段

表示数据的字节数及保留位的段。

(4)  数据段

数据的内容,可发送 0~8 个字节的数据。

(5) CRC 段

检查帧的传输错误的段。

(6) ACK段

表示确认正常接收的段。

(7)  帧结束

表示数据帧结束的段。

 

•  数据帧和遥控帧的不同

? 遥控帧的 RTR 位为隐性位,没有数据段。

? 没有数据段的数据帧和遥控帧可通过 RTR 位区别开来。

 

•  遥控帧没有数据段,数据长度码该如何表示?

? 遥控帧的数据长度码以所请求数据帧的数据长度码表示。

 

•  没有数据段的数据帧有何用途?

? 例如,可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况下。

 

5.3 优先级的决定

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

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

续发送。

仲裁的过程如图所示。

             技术分享

5.4  错误的种类

错误共有 5 种。多种错误可能同时发生。

•  位错误

•  填充错误

•  CRC 错误

•  格式错误

•  ACK错误

 

错误的种类、错误的内容、错误检测帧和检测单元如表所示。

 技术分享

5.5  位时序

由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为 4 段。

•  同步段(SS)

•  传播时间段(PTS)

•  相位缓冲段 1(PBS1)

•  相位缓冲段 2(PBS2)

 

这些段又由可称为 Time Quantum(以下称为 Tq)的最小时间单位构成。

1 位分为 4 个段,每个段又由若干个 Tq 构成,这称为位时序。

1 位由多少个 Tq 构成、每个段又由多少个 Tq 构成等,可以任意设定位时序。通过设定位时序,多个单元可

同时采样,也可任意设定采样点。

各段的作用和 Tq 数如表 11 所示。1 个位的构成如图所示。

           技术分享

 

 

详情请参考CAN入门教程。。。

重学STM32---(九) ——CAN通信(一)

标签:

原文地址:http://www.cnblogs.com/qigaohua/p/5380198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!