IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> CAN协议解析 -> 正文阅读

[嵌入式]CAN协议解析

CAN 总线组网连线图

根据CAN总线的硬件特性,当一条CAN总线上挂接多个驱动器的时候,应当按照如下示意图进行连接布线。 需要在线的起点和终点上各连上一个 120Ω的电阻。并且 CAN 总线只能有一条主干线,分支的线不宜过长。
最近在弄ST和GD的课程,需要GD样片的可以加群申请:6_15061293 。
在这里插入图片描述

由上图可知,CAN通信是通过两根线完成的:
一条是黄色的CAN_High
一条是绿色的CAN_Low
CAN能够使用多种物理介质作为通信媒介,最常用的是双绞线,还可以使用光纤等材料。CAN总线信号通过两条差分电压信号线CAN_ H和CAN_ L传输,当CAN_ H和CANL信号线上的电压值处于2. 5V左右时表明此时总线处于我们所谓的逻辑电平“1”的状态,也可以称做隐性状态;当CAN_ H比CAN_ L上电压值高时表示逻辑“0”,通常该状态下两条信号线上的电压值为CAN_ H=3. 5V和CAN_ L=1. 5V,此时是显性状态。下图是双绞线CAN总线电平标称值,图中显示了逻辑高电平和逻辑低电平所对应的大致总线电压值。
在这里插入图片描述

下图是发送长度为3的数据0x111111,标准帧ID为0001。
在这里插入图片描述

可以看到在空闲状态下,电平在2.5V左右,黄线为CANL,紫线为CAN_ H,当为显性时,CAN_ H电平拉到3V左右,CAN_ L电平拉到1V左右,CAN_ H-CAN_ L=2V,橙色线为CAN_ H-CAN_ L。
在这里插入图片描述

CAN的报文格式

报文格式

首先,CAN总线协议中的报文指的是总线单元间传递的消息,消息的格式各有不同,总线上的单元想要发送新信息就要检测到总线空闲状态的位信息才可以发送。总线上的报文信息表示为几种固定的帧类型,下图列出了根据CAN总线通信中5种不同用途所设置的帧类型。

在这里插入图片描述

下表是标识符种类说明。
在这里插入图片描述

终止CAN2. 0B协议时只是不能发送扩展格式报文,总线仍可以正常工作。下面就CAN总线的各种功能帧结构对报文格式进行详细说明,数据帧由7个段构成。数据帧的构成如图所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标准CAN只有11位标识符,每帧的数据长度为44+8N位。
● SOF - 帧起始,显性(逻辑0)表示报文的开始,并用于同步总线上的节点。
● 标识符 - 标准CAN具有11位标识符,用来确定报文的优先级。此域的数值越小,优先级越高。
● RTR - 远程发送请求位,当需要从另一个节点请求信息时,此位为显性(逻辑0)。所有节点都能接收这个请求,但是帧标识符确定被指定的节点。响应数据帧同样被所有节点接收,可以被有兴趣的节点使用。
● IDE - 标识符扩展位为显性时表示这是一个标准CAN格式,为隐形表示这是扩展CAN格式。
● r0 - 保留位(可能将来标准修订会使用)
● DLC - 4位数据长度代码表示传输数据的字节数目,一帧CAN最多传输8字节用户数据
● 数据0~8 – 最多可以传输8字节用户数据
● CRC - 16位(包括1位定界符)CRC校验码用来校验用户数据区之前的(包含数据区)传输数据段。
● ACK - 2位,包含应答位和应答界定符。发送节点的报文帧中,ACK两位是隐性位,当接收器正确地接收到有效的报文,接收器会在应答位期间向发送节点发送一个显性位,表示应答。如果接收器发现这帧数据有错误,则不向发送节点发送ACK应答,发送节点会稍后重传这帧数据。
● EOF – 7位帧结束标志位,全部为隐性位。如果这7位出现显性位,则会引起填充错误。
● IFS – 7位帧间隔标志位,CAN控制器将接收到的帧正确的放入消息缓冲区是需要一定时间的,帧间隔可以提供这个时间。
在这里插入图片描述

扩展CAN

在这里插入图片描述

● 扩展CAN具有29位标识符,每帧数据长度为64+8N位。
● SRR – 代替远程请求位,为隐性。所以当标准帧与扩展帧发送相互冲突并且扩展帧的基本标识符与标准帧的标识符相同时,标准帧优先级高于扩展帧。
● IDE – 为隐性位表示标志位扩展帧,18位扩展标识符紧跟着IDE位。
● r1 – 保留

错误检测

在这里插入图片描述

波形解析

发送长度为3的数据0x111111,标准帧ID为0001。

ID

当ID为0001时候,对于二进制为000 0000 0001,由于位填充机制,发送器只要检测到有5个连续相同值的位,就会自动在下一位里添加一个相反值,接收器接受数据时会自动剔除这个添加位。
在这里插入图片描述

数据长度

RTR、IDE、R0默认情况下为0,数据长度为0011(3)。
在这里插入图片描述

数据字段

传输数据为3字节的数据,为0x111111。
在这里插入图片描述

CRC

校验位(CRC) = 15位之后有一个隐性CRC分隔符位
应答区(ACK) 2位,包括ACK槽加一个隐性ACK分隔符,ACK两位是隐性位,当接收器正确地接收到有效的报文,接收器会在应答位期间向发送节点发送一个显性位,表示应答。
CRC为0x1984(001 1001 1000 0100),CRC分隔符为1
ACK为01
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:50:48  更:2022-10-17 12:51:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:26:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码