CAN总线学习笔记(1、CAN总线定义)

CAN总线学习笔记(1、CAN总线定义)

江协科技CAN总线入门教程视频学习笔记

CAN特性

  • 两根通信线(CAN_H\CAN_L),两根线,无需工地

  • 差分信号,抗干扰能力强

  • 高速CAN(ISO11898):125K-1Mbps,<40m

  • 低速CAN(ISO11519):10K-125Kbps,<1km

  • 异步,无需时钟线,通信速率由设备各自约定

  • 半双工,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序

  • 11/29位报文ID,用于区分消息功能,同时决定优先级

  • 可配置1-8字节有效载荷

  • 可实现广播式和请求式两种传输方式

  • 应答、CRC校验、位填充、位同步、错误处理等特性

CAN硬件电路

在这里插入图片描述

CAN电平标准

在这里插入图片描述

帧格式

帧类型

用途

数据帧

发送设备主动发送数据(广播式)

遥控帧

接收设备主动请求数据(请求式)

错误帧

某个设备检测出错误时,向其他设备通知错误

过载帧

接收设备通知其尚未做好接收准备

帧间隔

用于将数据帧及遥控帧与前面的帧分离开

数据帧和遥控帧使用最多,其它3种帧做了解即可

数据帧

在这里插入图片描述

  • 在ack槽时,可以有多个接收方同时拉开总线,因为一个报文可以被多个设备同时接收。

  • SOF(start of frame):帧起始。表示后面一段波形为传输的数据位

  • ID(identify):标识符,区分功能,同时决定优先级

  • RTR(remote transmission request):远程请求位,区分数据帧和遥控帧

  • IDE(identifier Extension):扩展标志位,区分标准格式和扩展格式

  • SRR(substitute remote request):替代RTR,协议升级时留下的无意义位

  • r0/r1(reserve):保留位,为后续协议升级留下空间

  • DLC(data length code):数据长度,指示数据段有几个字节

  • Data:数据段的1-8个字节有效数据

  • CRC(cyclic redundancy check):循环冗余校验,校验数据是否正确

  • ACK(acknowledgement):应答位,判断数据有没有被接收方接收

  • CRC/ACK界定符:为应答位前后发送方和接收方释放总线留下时间

  • EOF(end of fram):帧结束,表示数据位已经传输完毕
    在这里插入图片描述

遥控帧

遥控帧无数据段,RTR为隐形电平1,其它部分与数据帧相同
在这里插入图片描述

仲裁

多设备同时发送时的规则

  • 数据帧和遥控帧ID一样时,数据帧RTR位为显性电平0,所以数据帧的优先级高于遥控帧

  • 数据帧的标准格式和扩展格式的高11位一样时,扩展帧的SRR为隐性电平1,所以标准格式的优先级高于扩展格式

  • 标准遥控帧和扩展数据帧高11位一样时,标准遥控帧的IDE位为显性电平0,所以标准遥控帧的优先级高于扩展数据帧

先到先得

  • 已有设备在操作总线发送数据帧/遥控帧,则其它设备不能再同时发送数据帧/遥控帧(可以发送错误帧/过载帧破坏当前数据)

  • 只有在总线空闲时(连续检测到11个隐性电平),设备才能发送数据帧/遥控帧

非破坏性仲裁

  • CAN总线根据ID进行非破坏性仲裁,ID号小的(优先级高)取到总线控制权,ID号大的(优先级低)仲裁失利后将转入接收状态,等待下一次总线空闲时再尝试发送。

  • 线与特性:总线上任何一个设备发送显性电平0时,总线就会呈现显性电平0状态;只有总线上所有设备都发送隐性电平1时,总线才会呈现隐性电平1状态

  • 回读机制:每个设备发出一个数据位后,都会读回总线当前的电平状态,以确定自己的电平被发送。

错误处理

错误类型

错误类型

错误的内容

错误的检测帧(段)

检测单元

位错误

比较输出电平和回读信号,当两电平不一样时产生此错误

  • 数据帧(SOF-EOF)

  • 遥控帧(SOF-EOF)

  • 错误帧

  • 过载帧

发送单元

接收单元

填充错误

连续检测到6位相同电平时产生此错误

  • 数据帧(SOF-CRC)

  • 遥控帧(SOF-CRC)

发送单元

接收单元

CRC错误

计算的CRC结果和接收到的CRC不一样时产生此错误

  • 数据帧

  • 遥控帧

接收单元

格式错误

再固定电平字段检测到相反电平时产生此错误

  • 数据帧

  • 遥控帧

  • 错误界定符

  • 过载界定符

接收单元

ACK错误

发送单元再ACK槽中检测出隐性电平,即没有接收发应答时产生此错误

  • 数据帧(ACK槽)

  • 遥控帧(ACK槽)

发送单元

错误状态

通过状态机切换设备错误状态

  • 设备初始状态为主动错误状态

  • 主动错误状态检测到错误时,发送主动错误状态帧,会破坏数据传输

  • 当TEC或REC>127时,设备进入被动错误状态,此时检测到错误,发送被动错误,不会破坏数据传输,

  • 当TEC>255时,设备进入总线关闭状态
    在这里插入图片描述
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最好有梦想~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值