赞
踩
1 CAN网络基础知识
1.1 CAN的特性
采用双线差分信号
协议本身对节点的数量没有限制,总线上节点的数量可以动态改变
广播发送报文,报文可以被所有节点同时接收。
多主站结构,各节点平等,优先权由报文ID确定 越小优先级越大
每个报文的内容通过标识符识别,标识符在网络中是唯一的
标识符描述了数据的含义
某些特定的应用对标识符的分配进行了标准化
根据需要可进行相关性报文过滤
保证系统数据一致性
CAN提供了一套复杂的错误检测与错误处理机制,比如CRC检测、接口的抗电磁干扰能力、错误报文的自动重发、临时错误的恢复以及永久错误的关闭。
在数据链路层进行数据查错。
使用双绞线作为总线介质,传输速率可达1Mbps,总线长度<=40米
随着距离的增大,数据传输速率会减小
采用NRZ和位填充的位编码方式
1.2 CAN的特性总结
总线访问—非破坏性仲裁的载波侦听多路访问/冲突避免CSMA/CA (Carrier SenseMultiple Access/Collision Avoidance)
1 载波侦听,网络上各个节点在发送数据前都要检测总线上是否有数据传输
①网络上有数据 不发送数据,等待网络空闲
②网络上无数据立即发送已经准备好的数据
2 多路访问,网络上所有节点收发数据共同使用同一条总线,且发送数据是广播式的
3冲突避免,节点在发送数据过程中要不停地检测发送的数据,确定是否与其它节点数据发生冲突
2.1 CAN总线标准
2.1.1底层标准
CAN2.0
①2.0A 将29位ID视为错误
②2.0B Passive 仅识别11位ID数据帧
③2.0B Active 可识别11位和29位两种ID数据帧
2.1.2 OSI参考模型
2.1.3CAN标准
2.1.4底层标准
3.1 数据链路层
3.1.1 通信机制
报文发送
节点发送报文时要检测总线状态
① 只有总线处于空闲,节点才能发送报文
② 在发送报文过程中进行“回读”,判断送出的位与回读的位是否一致
“线”与“机制”
① 通过ID进行仲裁
② 显性位能够覆盖隐性位 ID值越小,报文优先级越高
非破坏性仲裁
① 退出仲裁后进入“只听”状态
② 等待总线再次空闲时进行报文重发
报文接收过滤
通过滤波器,节点可以对接收的报文进行过滤
如果相关 ->接收;如果不相关->过滤
接收过滤相关位:由掩码定义
1 :与消息过滤有关
0:与消息过滤无关
NRZ编码与位填充
NRZ(非归零)编码
① NRZ编码确保报文紧凑->在相同带宽情况下,NRZ编码方式的信息量更大
②NRZ不能保证有足够的跳变延用于同步,容易带来节点间计时器误差的累积->位填充->保证有足够的跳变沿用于同步
位填充
①发送节点发送5个连续的相同极性位后,在位流中自动插入一个极性相反的位->位填充
②接收节点对相同极性位的数量进行检测,从位流中将填充位去掉->清除填充
3.1.2 数据帧
1:隐形
0:显性
ACK发送端,发送隐性
接收端 正确接收报文后,显性覆盖。显性会覆盖隐性
0ID00100DLCDATACRC1ACK1 1111 111 111
3.1.3 错误检测
位检测->位错误
填充检测->填充错误 出现六个连续相同的电平位就是填充错误。
CRC检测->CRC错误
格式检测->格式错误
固定格式位场(如CRC界定符、ACK界定符、帧结束等)含有一个或更多非法位
ACK检测->ACK错误
发送节点在ACK位期间,(接收端回复)未检测到“显性”位
发送节点: 位错误、格式错误、ACK错误
接收节点: 填充错误、格式错误、CRC错误
检测到错误后,发送错误标志
①位错误、填充错误、格式错误或ACK错误产生后->错误标志在下一位发送
②CRC错误->错误标志在ACK界定符后发送
3.1.4 错误界定
每个节点都含有REC和TEC
当接收错误产生时,REC增加;
正确接收到数据帧,REC减少
REC: Receive Error Counter 接收错误计数器
TEC: Transmit Error Counter 发送错误计数器
3.1.5 节点的三种状态
Error Active:主动错误
发送主动错误标志(6个连续显性(000 000 ))
Error Passive:被动错误
限制(连续2次报文发送)
错误产生时,发送被动错误标志(6个连续隐性位(111 111 ))
Bus Off:总线关闭
REC:接收错误计数器
TEC:发送错误计数器
特例: 如果总线上只有一个节点,该节点发送数据帧后得不到应答,TEC最大只能计到128即节点只会进入被动错误状态而不会进入总线关闭状态
3.1.6错误帧的格式
错误标志与错误界定符
错误标志
Active:6个显性位(000 000);
Passive:6个隐性位(111 111);
错误标志6-12为长度
错误界定符
8个连续隐性位(1111 1111)
错误帧
公共错误(总线错误,既总线的位与其他端口不同)
错误帧的发送(CRC错误)
格式错误后,立刻在后,发送错误帧。
接收端检测到发送的CRC与 接收端自己计算的CRC不同,在ACK后发送错误帧。
被动错误
1 由发送节点发送的被动错误标志,会诱发接收节点发送错误标志特例
① 仲裁期间发送,其它节点照常发送报文
②CRC序列结束前的6个位内发送,并且CRC序列的最后几位恰好全都是隐性(ACK)
2 由接收节点引起的被动错误标志不会诱发总线上的任何活动
3 被动错误节点必须检测到总线上6个连续相同的极性位后,才认为错误标志被送出
3.1.7帧格式
①数据帧->携带从发送节点至接收节点的数据
②远程帧->向其他节点请求发送具有同一标识符的数据帧
③帧间空间->数据帧(或远程帧)通过帧间空间与前述的各帧分开
④错误帧->节点检测到错误后发送错误帧
⑤超载帧->在先行的和后续的数据帧(或远程帧)之间附加一段延时
3.1.8同步
CAN的同步包括硬同步和重同步两种同步方式
同步规则:
① 一个位时间内只允许一种同步方式
②任何一个“隐性”到“显性”的跳变都可用于同步
③硬同步发生在SOF(帧起始符)->所有接收节点调整各自当前位的同步段,使其位于发送的SOF位内
④ 重同步发生在一个帧的其他位场内,当跳变沿落在了同步段之外
④在SOF到仲裁场有多个节点同时发送的情况下,发送节点对跳变沿不进行重同步
硬同步 发生在SOF位->所有接收节点调整各自当前位的同步段,调整宽度不限。相位误差为负,跳变沿位于前一个位的采样点之后->相位缓冲段2缩短
重同步相位误差为正,跳变沿沿位于采样点之前->相位缓冲段1增长
4.1物理层
高速CAN:动力传动系统、底盘系统、诊断系统、信息娱乐。
低速CAN:舒适性,诊断
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。