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

简介: 【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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
存储 网络性能优化 vr&ar
深入理解AMBA总线(十七)AXI是如何提高性能的
深入理解AMBA总线(十七)AXI是如何提高性能的
2200 1
|
芯片
深入理解AMBA总线(一)APB总线入门(上)
深入理解AMBA总线(一)APB总线入门
1131 0
|
存储 SoC
深入理解AMBA总线(十一)AXI协议导论
深入理解AMBA总线(十一)AXI协议导论
1801 0
|
SoC
深入理解AMBA总线(十六)AXI设计的关键问题(二)
深入理解AMBA总线(十六)AXI设计的关键问题(二)
932 0
深入理解AMBA总线(十六)AXI设计的关键问题(二)
|
SoC
深入理解AMBA总线(七)AHB设计要点和AHB2APB同步桥设计前言
深入理解AMBA总线(七)AHB设计要点和AHB2APB同步桥设计前言
540 0
深入理解AMBA总线(七)AHB设计要点和AHB2APB同步桥设计前言
|
存储 芯片 异构计算
LocalBus总线介绍及FPGA总线编程
LocalBus总线介绍及FPGA总线编程
1363 0
LocalBus总线介绍及FPGA总线编程
|
存储 Go 芯片
单片机外围模块漫谈之四,USB总线基本概念。
单片机外围模块漫谈之四,USB总线基本概念。
|
监控 芯片
单片机外围模块漫谈之三,CAN总线
单片机外围模块漫谈之三,CAN总线