五、CAN总线

目录

一、基础知识

1、can介绍

2、CAN硬件电路

3、CAN电平标准

4、CAN收发器芯片介绍

5、CAN帧格式

[① CAN帧种类](#① CAN帧种类)

[② CAN数据帧](#② CAN数据帧)

[③ CAN遥控帧​编辑](#③ CAN遥控帧编辑)

[④ 位填充](#④ 位填充)

[⑤ 波形实例](#⑤ 波形实例)

6、接收方数据采样

[① 接收方数据采样遇到的问题](#① 接收方数据采样遇到的问题)

[② 位时序](#② 位时序)

[③ 硬同步](#③ 硬同步)

[④ 再同步](#④ 再同步)

[⑤ 波特率计算](#⑤ 波特率计算)


一、基础知识

1、can介绍

CAN(Controller Area Network),是ISO国际标准化的串行通信协议

为了满足汽车产业的"减少线束的数量"、"通过多个LAN,进行大量数据的高速通信"的需求。

低速CAN(ISO11519)通信速率10~125Kbps,总线长度可达1000米。

高速CAN,经典CAN,(ISO11898)通信速率125Kbps~1Mbps,总线长度≤40米。

CAN FD 通信速率可达5Mbps,并且兼容经典CAN,遵循ISO 11898-1 做数据收发。

主流通信协议对比

UART

IIC

SPI

2、CAN硬件电路

  • 每个设备通过CAN收发器挂载在CAN总线网络上
  • CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连
  • 高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻
  • 低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻

终端电阻(120Ω),用于阻抗匹配,以减少回波反射。

CAN总线由两根线( CANL 和 CANH )组成,允许挂载多个设备节点(低速CAN:20 高速CAN:30)。

3、CAN电平标准

  • CAN总线采用差分信号,即两线电压差(VCAN_H-VCAN_L)传输数据位
  • 高速CAN规定:

电压差为0V时表示逻辑1(隐性电平)

电压差为2V时表示逻辑0(显性电平)

  • 低速CAN规定:

电压差为-1.5V时表示逻辑1(隐性电平)

电压差为3V时表示逻辑0(显性电平)

  • 显性电平具有优先权。发送方通过使总线电平发生变化,将消息发送给接收方。

4、CAN收发器芯片介绍

CAN收发器芯片:TJA1050、TJA1042、SIT1050T。

战舰版开发板使用SIT1050T,支持高速CAN,传输速率可达1Mbps。

D : CAN发送引脚

R : CAN接收引脚

Vref : 参考电压输出,可以用

CANL : 低电位CAN电压输入输出端

CANH : 高电位CAN电压输入输出端

RS : 高速 / 静音模式选择(低电平为高速)

5、CAN帧格式

① CAN帧种类

CAN总线以**"帧"形式**进行通信。CAN协议定义了5种类型的帧:数据帧、遥控帧、错误帧、过载帧、间隔帧,其中数据帧最为常用。

|------------------------|--------------------------|
| 帧类型 | 帧作用 |
| 数据帧(Data Frame) | 用于发送单元向接收单元传输数据的帧 |
| 遥控帧(Remote Frame) | 用于接收单元向具有相同ID的发送单元请求数据的帧 |
| 错误帧(Error Frame) | 用于当检测出错误时向其他单元通知错误的帧 |
| 过载帧(Overload Frame) | 用于接收单元通知其尚未做好接收准备的帧 |
| 间隔帧(Inter Frame Space) | 用于将数据帧 及遥控帧与前面的帧分离开来的帧 |

② CAN数据帧

空闲状态:隐形1

**帧起始:**表示数据帧开始的段,显性信号。

**仲裁段:**表示该帧优先级的段,优先级。

其中ID,区分数据的功能。**RTR,**区分广播式、数据帧(只写),请求式、遥控帧(读取)。

**控制段:DLC,**数据段的字节数是可调的。

保留位:R0,R1(IDE),IDE表示区分标准格式和扩展格式。

**CRC段:**判断数据是否正确传输。发送方将前面,SOF到Data计算校验码,将校验码附在CRC中。接收方收到数据后,也会计算校验码,判断校验码是否一致。

CRC界定符:① 隔离CRC和ACK。② 在ACK槽之前,发送方释放总线(发生隐性1就是释放总线),将控制权给接收方发送应答信号。

**ACK段:**判断是否有接受方。

ACK界定符:接收方释放总线,交出控制权。

帧结束:表示数据帧结束的段,7个隐性信号。

**注意:**发送方每发送一位,接收方就立刻收到这一位。

③ CAN遥控帧

遥控帧无数据段,RTR为隐性电平1,其他部分与数据帧相同。

当某个设备发送遥控帧时,代表它想请求这个数据。

请求方发出遥控帧,遥控帧的ID表示要请求的数据。

响应请求的一方,通过相同ID的数据帧反馈数据。

当请求和反馈数据同时发生时,数据帧拥有更高的优先级。

④ 位填充

位填充规则:发送方每发送5个相同电平后,自动追加一个相反电平的填充位。

接收方检测到填充位时,会自动移除填充位,恢复原始数据。

例如:

即将发送: 100000110 10000011110 0111111111110

实际发送: 1000001110 1000001111100 011111011111010

实际接收: 1000001110 1000001111100 011111011111010

移除填充后: 100000110 10000011110 0111111111110

位填充作用:

增加波形的定时信息,利于接收方执行"再同步",防止波形长时间无变化,导致接收方不能精确掌握数据采样时机。

将正常数据流与"错误帧"和"过载帧"区分开,标志"错误帧"和"过载帧"的特异性。

保持CAN总线在发送正常数据流时的活跃状态,防止被误认为总线空闲。

⑤ 波形实例

  • 标准数据帧,报文ID为0x555,数据长度1字节,数据内容为0xAA
  • 标准数据帧,报文ID为0x666,数据长度2字节,数据内容为0x12, 0x34
  • 扩展数据帧,报文ID为0x0789ABCD,数据长度1字节,数据内容为0x56
  • 标准遥控帧,报文ID为0x088,数据长度1字节,无数据内容

6、接收方数据采样

  • CAN总线没有时钟线,总线上的所有设备通过约定波特率 的方式确定每一个数据位的时长

  • 发送方约定的位时长每隔固定时间输出一个数据位。

  • 接收方约定的位时长每隔固定时间采样总线的电平,输入一个数据位。

  • 理想状态下,接收方能依次采样到发送方发出的每个数据位,且采样点位于数据位中心附近。

  • 数据位的位时长=1/波特率。

① 接收方数据采样遇到的问题

  • 接收方以约定的位时长进行采样,但是采样点没有对齐数据位中心附近
  • 接收方刚开始采样正确,但是时钟有误差,随着误差积累,采样点逐渐偏离

② 位时序

**为了灵活调整每个采样点的位置,使采样点对齐数据位中心附近,CAN总线对每一个数据位的时长进行了更细的划分,**分为同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2),每个段又由若干个最小时间单位(Tq)构成。

  • SS = 1Tq
  • PTS = 1~8Tq
  • PBS1 = 1~8Tq
  • PBS2 = 2~8Tq

③ 硬同步

  • 每个设备都有一个位时序计时周期,当某个设备(发送方)率先发送报文,其他所有设备(接收方)收到SOF的下降沿时,接收方会将自己的位时序计时周期拨到SS段的位置,与发送方的位时序计时周期保持同步。(接收方将自己的SS段与发送方调节为一致。)
  • 硬同步只在帧的第一个下降沿(SOF下降沿)有效。
  • 经过硬同步后,若发送方和接收方的时钟没有误差,则后续所有数据位的采样点必然都会对齐数据位中心附近。

位时序周期

④ 再同步

  • 若发送方或接收方的时钟有误差,随着误差积累,数据位边沿逐渐偏离SS段,则此时接收方根据再同步补偿宽度值(SJW)通过加长PBS1段,或缩短PBS2段,以调整同步。
  • 再同步可以发生在第一个下降沿之后的每个数据位跳变边沿。
  • SJW=1~4Tq。SJW为最大值。

⑤ 波特率计算

波特率 = 1 / 一个数据位的时长 = 1 / (TSS + TPTS + TPBS1 + TPBS2)

相关推荐
JaneZJW18 分钟前
Proteus仿真——《51单片机AD和DA转换器的设计》
单片机·嵌入式硬件·51单片机·proteus
NEWEVA__zzera223 小时前
利用光耦来隔离485芯片与串口引脚,实现自动收发485电路
单片机·嵌入式硬件
m0_748240543 小时前
STM32第十一课:STM32-基于标准库的42步进电机的简单IO控制(附电机教程,看到即赚到)
stm32·单片机·嵌入式硬件
沐欣工作室_lvyiyi3 小时前
基于单片机的多功能智能小车(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·单片机毕业设计
lucy153027510794 小时前
MCU 功耗基准测试
科技·单片机·嵌入式硬件·智能家居·信号处理·工控主板
m0_748240915 小时前
OpenMV与STM32通信全面指南
stm32·单片机·嵌入式硬件
Cchengzu7 小时前
阿里巴巴2017实习生笔试题(二)
stm32·单片机·嵌入式硬件
重生之我是数学王子11 小时前
单片机 STM32入门
stm32·单片机·嵌入式硬件
qq_4597300314 小时前
4-3 MCU中ARM存储器的作用
arm开发·单片机·嵌入式硬件
重生之我是数学王子17 小时前
点亮核心板小灯 STM32U575
stm32·单片机·嵌入式硬件