【CAN总线】手把手教你学习CAN总线(一)

一、CAN总线概念

CAN(Controller Area Network):控制器局域网网络,由德国博世汽车电子厂商开发出来。

  • CAN使用差分信号,具有较强的抗干扰能力和传输稳定性。
  • CAN属于多主通信,网络中所有的节点都可以作为主设备进行通信。
  • CAN的网络扩展极其方便,CAN网络中扩展了新的通信单元,网络中旧的单元和硬件无需任何改变
  • CAN具有较强的纠错能力,可以发现传输中出现的错误,并对错误节点进行隔离。

二、CAN的差分信号

模分信号是使用电平的绝对值来表示逻辑的差别。差分信号是使用两个电平的差值来表示逻辑值。
CAN传输使用两根数据线——CANH和CANL
高速ISO11898标准:

如果CANH(3.5V)和CANL(1.5V)的电压差 = 2V,此时表示逻辑0,叫做显性电平。
如果CANH(2.5V)和CANL(2.5V)的电压差 = 0V,此时表示逻辑1,叫做隐性电平。

三、CAN总线的通信协议

CAN使用5种通信帧,以数据帧为例来介绍帧结构。
在这里插入图片描述
数据帧的分析:
标准数据帧和扩展数据帧
D——显性电平 R——隐形电平
在这里插入图片描述
数据帧由7个部分组成

1、 帧起始

表示数据帧开始的段,1位显性电平。

2、仲裁段

用来实现帧的优先级和帧的过滤。标准格式和扩展格式的仲裁段不同
在这里插入图片描述
(1)标准帧:
标准数据帧的仲裁段由11位ID和1位RTR位组成。RTR用来区分数据帧(显性电平)和遥控帧(隐性电平)。
(2)扩展帧:
扩展数据帧由29位ID、1位RTR、1位SRR和1位IDE组成,RTR用来区分数据帧(显性电平)和遥控帧(隐性电平),SRR用来代替标准帧中的RTR位,SRR是隐性电平,相同ID的标准帧的优先级高于扩展帧。
IDE用来区分标准帧(显性电平)还是扩展帧(隐性电平)

报文的优先级
由总线通过ID仲裁来判断,当总线上同时出现显性电平和隐性电平时,最终显示为显性电平。当多个节点同时竞争总线占有权时,谁先出现隐性电平,谁将失去总线占有权,转为接收状态。

3、控制段

在这里插入图片描述
r0、r1为保留位,默认为显性电平
4位DLC表示数据段的长度(0~8)

4、数据段

在这里插入图片描述
长度0~8字节,先发高位,再发地位。

5、CRC段

CRC错误校验,由15位CRC校验码和1位CRC界定符组成。
校验出了错误信息,可利用错误帧请求重发,重发次数可设定。
在这里插入图片描述

6、ACK段

在这里插入图片描述
由1位ACK槽和1位ACK界定符组成,发送发的ACK槽是隐性电平,接收方取人受到正确的数据后以显性电平应答。

7、帧结束

在这里插入图片描述
7位隐性电平

四、CAN的位时序

由于CAN是没有时钟线的,所以这个目的是为了保证每传输一位的数据的时间是固定的,不会由于时钟误差和传输延迟等原因造成不同位传输的时间不一致。
在这里插入图片描述
CAN传输1位由四段组成:同步段、传播段、相位缓冲段1、相位缓冲段2,1位结束后会使用再同步补偿宽度(SJW)进行再补偿。
这样设计的原因是让发送方和接收方的时序保持一致(消除误差)。

1、同步段(SS)

同步段用于实现时序的调整,完成显性/隐性电平的转换,也就是准备该位要发送的电平。

2、传播时间段(PTS)

用于吸收网络上的物理延迟,物理延迟包括发送的延迟,接收的延迟和信号传播的延迟。

3、相位缓冲段(PBS)

对于电平转换未被包含的部分进行补偿,同时和SJW一起补偿各单位的时钟误差,电平的读取在该段完成。

4、再同步补偿宽度(SJW)

补偿前面同步的误差(二次补偿)。
小结:接收方的采样一定在PBS1和PBS2之间,由于SS和PTS误差的变动,PBS的补偿也会随着误差的变化而变化。实现传输1位时间的固定,SJW对PBS的补偿进行二次补偿。
在这里插入图片描述

1位时间 = 8 ~ 25Tq
SS = 1Tq
PTS = 1 ~ 8Tq
PBS = 2 ~ 8Tq
SJW = 1 ~ 4Tq

  • 7
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

邢饱饱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值