0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CAN协议解析

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2023-07-26 17:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

CAN 总线组网连线图

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

在这里插入图片描述

由上图可知,CAN通信是通过两根线完成的: 一条是黄色的CAN_High 一条是绿色的CANLow 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

在这里插入图片描述

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN
    CAN
    +关注

    关注

    59

    文章

    3111

    浏览量

    473895
  • 协议
    +关注

    关注

    2

    文章

    620

    浏览量

    41282
  • 组网
    +关注

    关注

    1

    文章

    463

    浏览量

    23429
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Infineon IFX1050GVIO高速CAN收发器技术解析

    Infineon IFX1050GVIO高速CAN收发器技术解析 在工业应用的高速数据传输领域,CAN(Controller Area Network)总线以其高效、可靠的特点占据重要
    的头像 发表于 03-11 17:30 706次阅读

    CAN协议的深度剖析

    CAN(Controller Area Network)协议是一种广泛应用于汽车电子、工业自动化等领域的串行通信协议,由德国Bosch公司在1980年代开发,旨在解决复杂系统中多个电子控制
    的头像 发表于 03-03 17:08 919次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>协议</b>的深度剖析

    机器人通信协议EtherCAT和CAN如何选择

    当下,虽然行业中存在许多通信协议,但业内人士普遍认为,EtherCAT和CAN两大协议,是机器人行业未来最重要的两大协议
    的头像 发表于 01-27 15:54 4902次阅读

    MAX3053:±80V 故障保护、2Mbps 低功耗 CAN 收发器深度解析

    MAX3053:±80V 故障保护、2Mbps 低功耗 CAN 收发器深度解析 在工业和汽车等领域的通信系统中,CAN(Controller Area Network)总线凭借其高可靠性和抗干扰能力
    的头像 发表于 01-27 14:20 359次阅读

    深入解析ISO1042:高性能隔离CAN收发器的卓越之选

    深入解析ISO1042:高性能隔离CAN收发器的卓越之选 在工业自动化、汽车电子等领域,可靠的通信至关重要。CAN(Controller Area Network)总线作为一种广泛应用的串行通信
    的头像 发表于 01-22 11:10 1262次阅读

    NXP TJA1051高速CAN收发器:技术解析与应用指南

    NXP TJA1051高速CAN收发器:技术解析与应用指南 在汽车电子领域,高速CAN(Controller Area Network)通信是实现各个电子控制单元(ECU)之间高效数据传输的关键技术
    的头像 发表于 12-24 16:25 1024次阅读

    CAN XL 技术解析:从协议演进到自动驾驶数据采集应用实践

    CAN XL 作为下一代 CAN 总线标准应运而生。本文将从 CAN 技术演进脉络切入,深入解析 CAN XL 的核心优势,并结合实际应用
    的头像 发表于 12-22 17:39 970次阅读
    <b class='flag-5'>CAN</b> XL 技术<b class='flag-5'>解析</b>:从<b class='flag-5'>协议</b>演进到自动驾驶数据采集应用实践

    汽车级CAN FD收发器TCAN1044AEV-Q1:技术解析与应用指南

    汽车级CAN FD收发器TCAN1044AEV-Q1:技术解析与应用指南 在汽车电子领域,CAN(Controller Area Network)总线作为一种广泛应用的通信协议,对于实
    的头像 发表于 12-16 17:35 905次阅读

    直播回顾 | CAN XL新标准落地难?从协议解析到实践应用,虹科技术专家带您全面探索CAN XL的技术突破与落地

    IntroductionCANXL总线作为CAN网络的第三代协议,CANXL总线技术在兼容经典CAN/CANFD的基础上,实现了单帧2048字节、速率20Mbps的跨越,以低成本填补了传统总线与车载
    的头像 发表于 11-12 17:32 1791次阅读
    直播回顾 |   <b class='flag-5'>CAN</b> XL新标准落地难?从<b class='flag-5'>协议</b><b class='flag-5'>解析</b>到实践应用,虹科技术专家带您全面探索<b class='flag-5'>CAN</b> XL的技术突破与落地

    基恩士PLC使用EtherNet/IP协议通过EtherNet/IP转CAN协议转换网关与CAN协议IO卡通讯案例

    一、项目背景与痛点分析 某新能源科技企业生产现场部署了一台基恩士PLC,需要与4个采用CAN总线协议的远程IO卡进行数据交互,以实现对生产线关键参数的实时监控和控制。在项目初期,现场面临着三个核心
    的头像 发表于 09-25 14:24 807次阅读
    基恩士PLC使用EtherNet/IP<b class='flag-5'>协议</b>通过EtherNet/IP转<b class='flag-5'>CAN</b><b class='flag-5'>协议</b>转换网关与<b class='flag-5'>CAN</b><b class='flag-5'>协议</b>IO卡通讯案例

    基恩士PLC使用EtherNet/IP协议通过协议转换网关与CAN协议IO卡通讯案例

    一、项目背景与痛点分析 某新能源科技企业生产现场部署了一台基恩士PLC,需要与4个采用CAN总线协议的远程IO卡进行数据交互,以实现对生产线关键参数的实时监控和控制。在项目初期,现场面临着三个核心
    的头像 发表于 09-17 16:19 1053次阅读
    基恩士PLC使用EtherNet/IP<b class='flag-5'>协议</b>通过<b class='flag-5'>协议</b>转换网关与<b class='flag-5'>CAN</b><b class='flag-5'>协议</b>IO卡通讯案例

    【干货】一文带你了解CAN、Modbus与LoRa三种通信协议的区别

    在工业自动化与物联网领域,CAN、Modbus和LoRa是三种主流通信技术。而亿佰特在该行业具有丰富的产品供客户选择与使用,帮助客户进一步确定需求,本文将结合技术细节与实际案例解析其核心区别。一
    的头像 发表于 08-28 19:32 2394次阅读
    【干货】一文带你了解<b class='flag-5'>CAN</b>、Modbus与LoRa三种通信<b class='flag-5'>协议</b>的区别

    协议解析网关是什么?有什么功能?

    协议解析网关是一种位于不同网络或设备之间的中间件设备或软件系统,主要作用是解决不同通信协议之间的不兼容性问题。它能够接收来自不同设备或系统的数据包,识别其携带的协议格式(如Modbus
    的头像 发表于 08-13 14:04 1119次阅读
    <b class='flag-5'>协议</b><b class='flag-5'>解析</b>网关是什么?有什么功能?

    打破协议壁垒,CAN转EtherCAT连接工业相机秒变跨国CP”!

    传感器控制;EtherCAT低延迟、高吞吐,适配实时图像传输。当需要将CAN相机接入EtherCAT网络时,耐达讯通信技术CAN转EtherCAT网关成为核心桥梁,通过数据帧解析与映射实现协议
    发表于 07-14 16:20

    一文读懂CAN XL协议

    随着汽车和工业应用中数据通信量的增加,传统的CAN协议已无法满足更高的数据速率需求。传统CAN协议在数据速率和总线负载能力方面存在限制,难以满足高带宽和高实时性的应用场景。为此,
    的头像 发表于 07-03 14:53 4838次阅读
    一文读懂<b class='flag-5'>CAN</b> XL<b class='flag-5'>协议</b>