CAN是控制器局域网络(Controller Area Network, CAN)的简称,1986年被德国研发和生产汽车电子产品著称的BOSCH公司所开发,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。
1 CAN通信简介
CAN是控制器局域网络(Controller Area Network, CAN)的简称,1986年被德国研发和生产汽车电子产品著称的BOSCH公司所开发,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。
Controller Area Network,控制器局域网。CAN-bus规范定义了物理层和数据链路层,CANopen、DeviceNet等定义应用层,应用层可自行设计。支持多主通信模式。
2 CAN总线通信物理层
2.1 硬件连接
- CAN控制器:集成在控制单元内部,处理控制单元中的数据后传给CAN收发器;同时接受收发器的数据,处理并传给控制单元;
有的微控制器内部已经包含了CAN控制器,只需要外加CAN收发器,收发器一般是8个引脚的芯片。比如STM32:STM32+SN65HVD230(3.3V)。
- CAN收发器:集成在控制单元内部,将CAN控制器传来的数据化为电信号并通过传输线发送;同时曾接受传输线上来的数据给CAN控制器。
CAN收发器将逻辑信号(TXD、RXD)和物理信号(CANH、CANL)相互转换:CAN控制器向着CAN收发器的TX引脚发送数据,经过CAN收发器转换成差分信号。(相当于数字调制)
- 数据传输线:两条铜导线形成了双绞线结构,分为CAN高位数据线CAN_H和低位数据线CAN_L,具备有效的抗电磁干扰功能。
信号差分传输,可以有效抑制共模干扰:差分信号即使由环境问题影响,也是同时影响两根线,两者做差可以抵消这个环境引起的变化
- 终端电阻:布置在CAN网络的两个终端位置,防止数据在线端被反射,以回声的形式返回,影响数据的传输的准确性。
阻抗匹配:对于高速信号一般这个电阻设置为120Ω。为什么是120Ω:因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。低速CAN总线在CANH和CANL上分别串接2.2kΩ的电阻(也可以不接)。
2.2 CAN总线上的电平信号
拿标准ISO11898来说:
2.3 CAN总线的测量
电阻值测量
(1) 测试工具
万用表
示波器
(2) 测试方法
第一步:将电池正极断开,整车断电
第二步:万用表调到电阻档200Ω量程。
第三步:将万用表的两个表笔连接到诊断接口引脚(CAN_H)和引脚(CAN_L)两端,测量PCAN的电阻值,若电阻值为60±10Ω,则测试通过.
电压测量
分别测量两个引脚电压是否满足标准
3 CAN总线通信数据链路层
单线CAN、低速CAN、高速CAN在数据链路层都相同,支持CAN2.0规范。数据链路层解决收发目标选择、数据校验、总线竞争、错误机制等问题。CAN-bus规定了5种通信帧——数据帧、远程帧、错误帧、过载帧、帧间隔。CAN控制器实现了数据链路层的全部功能以及物理层的位定时功能。
帧起始
1bit显性电平,助记符为SOF。作用是进行硬同步。(因为帧间隔是隐性电平,这样在帧起始时会有一个跳变,便于同步检测)
仲裁段
对于CAN2.0A,仲裁段由11bit ID和1bit RTR位组成,ID规定了数据帧的优先级,ID越小优先级越高;RTR位是远程发送请求位,标明该帧是数据帧还是远程帧,数据帧该位为显性,远程帧该位为隐性,因此,当ID相同时,数据帧的优先级高于远程帧。ID高7位ID10-ID4不得全为隐性。
对于CAN2.0B,差别仅仅在于在标准帧11位ID后面插入了1bit显性的替代远程帧请求位SRR,将标准帧中位于控制段的扩展识别位IDE接在SRR后面,然后接上扩展的18bit ID。扩展帧ID有29位。标准帧的优先级高于扩展帧。标准帧IDE为显性,扩展帧为隐性。
CAN控制器会监测数据线上的电平与发送位的电平,如果不相同,停止发送,如果该位在仲裁段,则退出总线竞争,如果不在仲裁段,则产生错误(除了ACK段和被动错误标志传输时)。
ID禁止高7位全为隐性。在任何情况下,总线上不可能有多个设备在同一时刻使用同一个ID传输数据帧。
控制段
对于CAN2.0A,控制段由IDE、保留位r0、4位的数据段长度码DLC共6位组成。DLC表示数据段数据的字节数,取值0到8,用BCD码表示。
对于CAN2.0B,控制段由保留位r1、r0和4位长度码DLC共6bit组成。
数据段
数据段包含0到8个字节,byte0在前,每个字节先传MSB。数据量小,实时性高。
CRC段
CRC校验,将前4段所有位进行模2除以多项式
得到15位CRC值,再加上一位隐性的CRC界定符组成16位的CRC段。
得到15位CRC值,再加上一位隐性的CRC界定符组成16位的CRC段。
ACK段
由一位ACK槽和一位ACK界定符组成。ACK槽期间发送节点发送隐性电平,接收正确节点发送显性电平将总线上信号拉低。ACK界定符位1位隐性电平。要保证发送节点在应答间隙期间接收到应答的显性位,对总线长度有了限制。
帧结束
7个连续的隐性位,助记符EOF。
远程帧
远程帧与数据帧点区别在于没有数据段,RTR为隐性,其余相同。
4 CAN总线通信应用层
通过应用层协议来规范,工业领域主要有CANopen、Devicenet等协议。
到此这篇can通信接口(can总线通信接口)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/46516.html