CAN网络基础知识

1 CAN网络基础知识

1.1 CAN的特性

  1. 采用双线差分信号

  1. 协议本身对节点的数量没有限制,总线上节点的数量可以动态改变

  1. 广播发送报文,报文可以被所有节点同时接收。

  1. 多主站结构,各节点平等,优先权由报文ID确定 越小优先级越大

  1. 每个报文的内容通过标识符识别,标识符在网络中是唯一的

  1. 标识符描述了数据的含义

  1. 某些特定的应用对标识符的分配进行了标准化

  1. 根据需要可进行相关性报文过滤

  1. 保证系统数据一致性

CAN提供了一套复杂的错误检测与错误处理机制,比如CRC检测、接口的抗电磁干扰能力、错误报文的自动重发、临时错误的恢复以及永久错误的关闭。

在数据链路层进行数据查错。

  1. 使用双绞线作为总线介质,传输速率可达1Mbps,总线长度<=40米

随着距离的增大,数据传输速率会减小

  1. 采用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:舒适性,诊断

  • 13
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值