CAN学习记录

1.CAN的特点

多主控制
当总线上的设备判断总线空闲时,总线上的设备均可以发送消息。
总线控制权
其中最先发送数据的设备将获得总线的控制权(即使在发送过程中,存在有高优先级的数据,也不会打断该数据的发送); 当多个设备同时发送消息时,发送高优先级数据的设备(根据设备发送信息中的ID进行判断是否可以获得总线控制权)可以获得总线控制权。(ID并不是发送目的地的地址)
错误处理
所有的单元都具有错误检测功能,即可以检测自身发送错误及接收错误判断。—错误检测功能
对于检测出错误的设备,设备会将自己的错误信息广播到总线中,通知到总线上所有设备。—错误通知功能
对于正在发送消息的设备,一旦检测到发送错误,则将会立即结束发送,该设备会不断的尝试发送该消息,直到发送成功位置。—错误恢复功能
通信速度
在同一总线中,所有的设备的通信速度必须保持一致,即使有一个设备的通信速度不一致,该设备也会发送错误消息,从而影响总线通信。
异常剔除
CAN可以判断总线上的错误是暂时的还是连续的,对于错误持续的设备,CAN会将其隔离到总线之外,防止持续影响总线通信。
抗干扰
采用差分数据线,抗干扰能力强;
CAN节点内部组成:
微控制器+CAN控制器+CAN收发器
发送数据:
微控制器(数据)→CAN控制器(报文转换和封装)→CAN收发器(将报文信号转换为物理电信号)
接收数据:
CAN收发器(将物理高低电平信号转换为二进制报文)→CAN控制器(报文封装)→微控制器处理。
CAN的通信方式:
CAN采用广播寻址方式,可以实现1->n的方式(发送节点将数据发送到总线上去不关心具体接收的地址是谁,所以挂载到该总线上的所有节点都可以接收到该数据),具体接受节点是否接收该数据是有各个节点自行决定的(CAN控制器内有过滤器,该过滤器可以根据微控制器的设置来选择是否将接收到该帧数据上报的微处理器)。
CAN的仲裁机制
CAN总线当存在有多个节点同时传输数据时,会存在总线冲突(每个节点发送数据时都会进行回读总线状态,当总线状态与发送不一致时,认为总线仲裁失败则停止发送转为接收),此时总线会根据其优先级高低(CAN报文中的ID,ID越小优先级越高(线与特性))来来将优先级高的先传输,传输完成后,总线空闲时传输优先级低的数据。

2.CAN报文格式

标准数据帧
11bit的ID+8字节的数据组成
远程帧
11bit的ID(不包含有效数据),仅用于远程发送请求(极少用)
扩展数据帧
29bit的ID+8字节数据组成
标准数据帧组成
SOF->帧起始的标志位,固定格式为1(总线空闲时为1)→0。
仲裁区->包含ID(11bit)+RTR(1bit)。RTR0为数据帧,RTR1为远程帧。
IDE->标准帧与扩展帧区别。IDE(1bit)0为标准帧,IDE1为扩展帧。
r->保留位(1bit)==0。
DLC->指示数据区字节的数量(4bit)。
数据区->0~8字节。
CRC->15bit.从ID处开始到数据区最后一位截止进行CRC计算。非标准的CRC16计算。
DEL->界定符位(1bit)1.
应答区-> ACK(1bit)+DEL(1bit)1。发送节点的该位固定为1,接收节点会根据CRC校验的是否成功来判断该为0(CRC校验成功)或1(CRC校验失败),发送节点读取到ACK异常后会停止发送并记录。
EOF->7bit
1,表示一帧CAN报文的结束。
ITM->3bit
1,表示帧间隔,只有当ITM之后才允许其余节点访问总线。

在这里插入图片描述

3.CAN错误处理

3.1检出机制
位监控
对于发送节点,会自动回读总线数据是否与发送数据一致。如果不在仲裁区,则会立即停止发送并在下一bit发送错误帧。如在仲裁区,需要区分发送为1接收为0时还是发送为0接收为1时。前者会立即停止发送并转换为接收节点,待总线空闲时继续发送;后者会停止发送后并发送错误帧。–图中的 bit Monitoring
ACK校验
对于发送节点,ACK校验位一致发1,如果发送为1回读为0表示接收节点正确接收到发送的数据。如回读到为1时,表名接收节点接收失败(CRC校验不通过)。 对于接收节点,如发ACK信号为0,回读ACK信号为1,则会发送错误帧。–图中的ACK check
填充规则检查
对于接收节点,会进行填充规则检查。总线在发送时会进行自动填充,每5个极性相同位就会插入1个极性相反位,故如果接收到连续6个极性相同则表示异常。–图中的stuff check
固定格式检查
对于接收节点,从CRC后的DEL到EOF,均为固定格式。会进行固定格式检查–图中的stuff check
CRC检查
接收节点会对接收到的数据进行CRC校验,校验不通过则会在ACK处进行反馈。
在这里插入图片描述3.2 错误通知
错误帧6个bit的错误标注位+8个bit的错误界定符(主动错误状态)。如果发生错误,错误帧会在一位将错误帧进行发出(除了CRC校验外,CRC校验会先在ACK位进行反馈后,才会发送错误帧)
在这里插入图片描述

3. 纠错
对于发送节点出错后会有自动纠错机制,进行自动重发。
4.错误界定
主动错误
TEC<=127–发送错误计数
REC<=127–接收错误计数
TEC及REC任意大于127则进入被动错误状态。正常模式算是。
被动错误
TEC>255进入离线状态
TEC及REC均小于127则进入主动错误状态
离线
不会进行任何总线通信,除非重置或者等待128个隐性位切换到主动错误状态并将计数清零

在这里插入图片描述

以上很多部分参考学习Vector培训视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值