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
    +关注

    关注

    57

    文章

    2694

    浏览量

    463123
  • 协议
    +关注

    关注

    2

    文章

    593

    浏览量

    39131
  • 组网
    +关注

    关注

    1

    文章

    346

    浏览量

    22287
收藏 人收藏

    评论

    相关推荐

    CAN总线知识】全面了解CAN总线协议

    提及总线,总是让人联想到那些交错在一起的计算机电线。那么这些电线如何发挥功效呢?这还得配合总线协议的管理来使用。那么今天我们介绍的就是CAN总线协议。看看这个协议的含义和应用吧。
    的头像 发表于 10-15 08:05 1094次阅读
    【<b class='flag-5'>CAN</b>总线知识】全面了解<b class='flag-5'>CAN</b>总线<b class='flag-5'>协议</b>

    CAN底层报文抓到了,却不知怎么解析?以及如何看到信号运行状态?

    本文介绍CAN总线中DBC文件的重要性及ZCANPRO如何实现DBC解析、数据发送和实时曲线分析,帮助您更有效地分析和利用CAN总线数据。在CAN总线的实际应用中,我们经常需要
    的头像 发表于 09-30 08:05 757次阅读
    <b class='flag-5'>CAN</b>底层报文抓到了,却不知怎么<b class='flag-5'>解析</b>?以及如何看到信号运行状态?

    EtherCAT从站转CAN协议网关(CAN转EtherCAT)

    EtherCAT的数据给CAN设备使用。 应用广泛:应用于支持CAN接口的变频器、步进电机、伺服驱动器、仪表、PLC、DCS、FCS等等。在自动化仓库和物流输送系统中,各类搬运设备和传感器可能使用CAN
    的头像 发表于 08-30 11:30 373次阅读
    EtherCAT从站转<b class='flag-5'>CAN</b><b class='flag-5'>协议</b>网关(<b class='flag-5'>CAN</b>转EtherCAT)

    CAN主站转Profinet协议网关(JM-PN-CAN

    一,产品主要功能 1、捷米特JM-PN-CAN该网关能够将Profinet协议CAN总线协议进行转换,实现Profinet网络与CAN网络
    的头像 发表于 08-28 15:28 253次阅读
    <b class='flag-5'>CAN</b>主站转Profinet<b class='flag-5'>协议</b>网关(JM-PN-<b class='flag-5'>CAN</b>)

    labview CAN DBC加载解析程序

    labview CAN DBC加载解析程序
    发表于 08-18 11:42

    CAN/CAN FD/CAN XL三大总线协议解读,是逐步替代关系吗?

    进入核心市场。 不过,从市场表现来看,目前CAN/CAN FD/CAN XL各有各的市场,并非逐步取代的关系,背后的原因是什么呢?   CAN/CA
    的头像 发表于 08-12 01:12 4108次阅读

    plc协议解析网关是什么

    PLC协议解析网关是一种专门用于工业自动化领域的设备,它的主要功能是实现不同通信协议之间的转换和解析,以便于不同类型的PLC、传感器、执行器等设备能够互相通信和数据交换。 在工业控制系
    的头像 发表于 07-12 15:41 253次阅读
    plc<b class='flag-5'>协议</b><b class='flag-5'>解析</b>网关是什么

    can的通信协议主要由什么完成

    CAN(Controller Area Network)是一种基于消息的通信协议,主要用于汽车和工业领域。它是一种局域网技术,允许多个设备在同一网络上进行通信。CAN协议的主要特点包括
    的头像 发表于 06-16 10:29 507次阅读

    什么是CAN总线协议?它有哪些特性和应用?

    CAN总线协议(Controller Area Network,简称CAN),是一种在汽车和工业自动化领域广泛应用的串行通信协议。自1986年由德国博世公司提出以来,
    的头像 发表于 05-27 16:32 1080次阅读

    什么是CAN2.0协议

    CAN2.0协议是控制器局域网络(ControllerAreaNetwork,CAN)的一种版本,也被称为传统CAN协议,由德国博世BOSC
    的头像 发表于 03-29 08:19 1209次阅读
    什么是<b class='flag-5'>CAN</b>2.0<b class='flag-5'>协议</b>?

    泰克科技全新CAN XL协议解码软件上线

    近日,泰克宣布推出CAN XL(控制器局域网扩展长度)协议解码软件,支持工程师整合最新一代CAN通信技术,并帮助客户在技术日新月异的当今时代保持竞争优势。 泰克CAN XL
    发表于 03-27 10:30 449次阅读
    泰克科技全新<b class='flag-5'>CAN</b> XL<b class='flag-5'>协议</b>解码软件上线

    CAN和CANFD协议简介(下)

    CAN和CANFD协议简介(下)
    的头像 发表于 02-19 12:08 705次阅读
    <b class='flag-5'>CAN</b>和CANFD<b class='flag-5'>协议</b>简介(下)

    CAN和CANFD协议简介(上)

    CAN和CANFD协议简介(上)
    的头像 发表于 01-26 08:06 981次阅读
    <b class='flag-5'>CAN</b>和CANFD<b class='flag-5'>协议</b>简介(上)

    CAN总线协议简介及其常见的应用领域

    CAN总线协议是一种串行通讯协议,主要用于汽车和工业自动化领域,实现了实时应用的需求。 首先,CAN总线协议的基本概念包括报文、信息路由和位
    的头像 发表于 01-19 17:47 1075次阅读

    Modbus转CANopen协议相互转换在工业中的作用

    Modbus协议的消息解析为原始数据,例如传感器/执行器的状态或PLC的指令。2. 消息转换:将原始数据转换为CANopen协议的消息,以便在CAN总线上传输。 软件实现Mo
    发表于 12-08 17:02