CAN(Controller Area Network控制器局域网)协议为串行通信协议,通信距离远。常用于汽车电子行业里。
目前汽车上的网络连接方式主要采用2 条 CAN:
一条用于驱动系统的高速 CAN,速率达到 500kb/s。主要面向实时性要求较高的控制元,如发动机、电动机等。
另一条用于车身系统的低速 CAN,速率是 100kb/s。主要是针对车身控制的,如车灯、车门、车窗等信号的采集以及反馈。其特征是信号多但实时性要求低,因此实现成本要求低。
CAN网络拓扑结构:
这是STM32上的结构图,CAN控制器在STM32中,开发板上有CAN收发器。
CAN总线特点:
1.网络上的节点(信息)可分成不同的优先级,可以满足不同的实时要求。
2.通信速率最高可达 1MB/s(此时距离最长 40m)。
3.通信介质可采用双绞线,同轴电缆和光导纤维。
4.可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。
5.可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节
点发送信息,而不分主从,通信方式灵活。
CAN协议的物理层:
CAN收发器 :
CAN_H: -- 2.5V 3.5V
CAN_L: -- 2.5V 1.5V
显性电平:CAN_H 3.5 CAN_L 1.5V
隐性电平:CAN_H 2.5 CAN_L 2.5V
数字量:0 -- 显性电平 1 -- 隐性电平
在隐性状态时,CAN-High 线与 CAN-Low 线上的电压差为 0V,在显性状态时该差值最低为 2V。
报文传输:
报文传输由4个不同帧类型说表示和控制:
数据帧:数据帧携带数据从发送器至接收器。
CAN2.0A为标准规范,CAN2.0B为扩展规范。
2.0A 11位标识符+RTR(数据帧/远程帧)
2.0B 标准:11位标识符+RTR(数据帧/远程帧)+IDE(标准还是扩展)
扩展:11位标识符+SRR+IDE+18位+RTR SRR为隐性位
远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。
错误帧:任何单元检测到一总线错误就发出错误帧。
过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
数据帧(或远程帧)通过帧间空间与前述的各帧分开。
位同步:
位时序分解:
SS段(同步段):检测跳边沿
BS1段(时间段1):位比较小,那么增加
BS2段(时间段2):位比较大,那么减小
波特率=1/1位的时间 (1位的时间就是Tq的个数)
标识符过滤:
在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关。因此发送者以广播的形式把报文发送给所以的接收者。节点在接收报文时根据标识符的值决定软件是否需要该报文。如果需要就拷贝到SRAM里,如果不需要就被丢弃。
过滤器可配置为:屏蔽位模式和标识符模式
在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照必须匹配或不用匹配进行处理。
标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用两个标识符寄存器。接收报文标识符的每一位都必须跟过滤标识符相同。
最近太忙没时间上网,写的不完整,有问题的可以留言,希望大家支持。