五、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)

相关推荐
stm 学习ing1 分钟前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
wenchm4 小时前
细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的另一种方法
stm32·单片机·嵌入式硬件
电子工程师UP学堂5 小时前
电子应用设计方案-16:智能闹钟系统方案设计
单片机·嵌入式硬件
飞凌嵌入式5 小时前
飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
人工智能·嵌入式硬件·嵌入式·risc-v·飞凌嵌入式
blessing。。7 小时前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
嵌新程8 小时前
day03(单片机高级)RTOS
stm32·单片机·嵌入式硬件·freertos·rtos·u575
Lin2012308 小时前
STM32 Keil5 attribute 关键字的用法
stm32·单片机·嵌入式硬件
电工小王(全国可飞)9 小时前
STM32 RAM在Memory Map中被分为3个区域
stm32·单片机·嵌入式硬件
maxiumII9 小时前
Diving into the STM32 HAL-----DAC笔记
笔记·stm32·嵌入式硬件
美式小田11 小时前
单片机学习笔记 9. 8×8LED点阵屏
笔记·单片机·嵌入式硬件·学习