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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 【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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10月前
|
芯片
深入理解AMBA总线(一)APB总线入门(上)
深入理解AMBA总线(一)APB总线入门
495 0
|
10月前
|
SoC
深入理解AMBA总线(十六)AXI设计的关键问题(二)
深入理解AMBA总线(十六)AXI设计的关键问题(二)
410 0
深入理解AMBA总线(十六)AXI设计的关键问题(二)
|
10月前
|
SoC
深入理解AMBA总线(七)AHB设计要点和AHB2APB同步桥设计前言
深入理解AMBA总线(七)AHB设计要点和AHB2APB同步桥设计前言
284 0
深入理解AMBA总线(七)AHB设计要点和AHB2APB同步桥设计前言
|
10月前
|
存储 芯片 异构计算
LocalBus总线介绍及FPGA总线编程
LocalBus总线介绍及FPGA总线编程
644 0
LocalBus总线介绍及FPGA总线编程
|
11月前
|
存储 算法 芯片
【乌拉喵.教程】LocalBus总线介绍及FPGA总线编程
【乌拉喵.教程】LocalBus总线介绍及FPGA总线编程
314 0
【乌拉喵.教程】LocalBus总线介绍及FPGA总线编程
|
10月前
深入理解AMBA总线(一)APB总线入门(下)
深入理解AMBA总线(一)APB总线入门(下)
422 0
|
10月前
|
存储 SoC
深入理解AMBA总线(十一)AXI协议导论
深入理解AMBA总线(十一)AXI协议导论
804 0
|
10月前
|
缓存 内存技术
深入理解AMBA总线(十六)AXI设计的关键问题(一)
深入理解AMBA总线(十六)AXI设计的关键问题
247 0
|
存储 传感器 开发者
一文搞懂I2C通信总线
I2C(集成电路总线),由Philips公司(2006年迁移到NXP)在1980年代初开发的一种简单、双线双向的同步串行总线,它利用一根时钟线和一根数据线在连接总线的两个器件之间进行信息的传递,为设备之间数据交换提供了一种简单高效的方法。每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。
|
存储
计算机的总线是干什么的?底层原理是什么?
计算机的总线是干什么的?底层原理是什么?
145 0