五、CAN总线

news/2024/9/29 3:30:06/

目录

一、基础知识

1、can介绍

2、CAN硬件电路

3、CAN电平标准

4、CAN收发器芯片介绍

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


http://www.ppmy.cn/news/1530903.html

相关文章

Leetcode 543. 124. 二叉树的直径 树形dp C++实现

问题:Leetcode 543. 二叉树的直径(边权型) 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之…

Ubuntu22.04安装paddle

查看系统版本信息 使用命令lsb_release -a查看系统版本 rootLAIS01:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammy查看系统支持的cuda版本,使用命令nvidia-smi&#…

Session和Cookie是什么?有什么区别?分布式Session问题又是什么?

Session和Cookie是什么?有什么区别?分布式Session问题又是什么? Cookie:是服务器发送到浏览器并保存在本地的数据。在浏览器下一次向同一服务器再次发送请求时,将Cookie也发送给服务器,并以此来判定这个请…

课程记录9.26

我的答案 掌握坡度、坡向、坡度变率、坡向变率、地面粗糙度和地形起伏度等基本地形因子的理论及其基于DEM的提取方法与原理。 0、 将dem文件导入arcgis10.8中, 1、 使用Arc Toolbox中的Slope工具 (Input中导入dem-》选择自己的文件夹并命名为坡度-》点…

设计模式实战——开发中常用到的单例模式

单例模式介绍 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。以下是对单例模式的介绍: 一、定义与特点 定义:单例模式(Singleton Pattern)是一种创建…

微积分复习笔记(1):单变量微积分

P.S. 本来不想分篇的&#xff0c;但居然字数超上限了。 2 π x < sin ⁡ x < x ( 0 < x < π 2 ) . \frac{2}{\pi}x<\sin x<x\ (0<x<\frac{\pi}{2}). π2​x<sinx<x (0<x<2π​). x < tan ⁡ x < 4 π x ( 0 < x < π 4 ) . x…

深入探索:MATLAB中的硬件支持包(HSP)及其应用

在MATLAB环境中&#xff0c;硬件支持包&#xff08;HSP&#xff09;扮演着至关重要的角色&#xff0c;尤其是在与硬件交互和嵌入式系统开发方面。HSP提供了一套工具和库&#xff0c;使得MATLAB能够与特定的硬件平台进行有效通信&#xff0c;实现代码的生成和优化。本文将详细介…

select查询表单

select查询语法&#xff1a; select 【1】from 【2】where 【3】 1若为*表示显示全部数据列&#xff0c;若为某一列列名则只显示本列内容&#xff08;也可为多列列名&#xff09;。若在1后面加as ‘c’&#xff0c;则表示把查询的列名换成c。 2为要查询的表表名。 3为查询的…