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

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

3天内不再提示

CAN和CANFD协议简介(下)

瑞萨嵌入式小百科 来源:未知 2023-08-02 12:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

cbed4df8-30e9-11ee-9e74-dac502259ad0.gif

前篇内容请点击查看:

RA MCU CAN和CANFD IP介绍

CAN和CANFD协议简介(上)

2. CAN协议

2.2 协议层

前文讲述了CAN的物理层标准,约定了电气特性,以下介绍的协议层则规定了通讯逻辑。

2.2.1 帧的种类

通信是通过以下5种类型的帧进行的。

• 数据帧

• 遥控帧

• 错误帧

• 过载帧

• 帧间隔

在这些帧当中,数据帧和遥控帧由用户设定,其他的帧由CAN的硬件部分完成。

另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11位的ID,扩展格式具有29位ID。

各种帧的用途如下表所示。

cbf99090-30e9-11ee-9e74-dac502259ad0.png

2.2.2 数据帧

数据帧把消息从发送单元传到接收单元,是用户使用的最基本的帧。数据帧由7个段构成。

(1) 帧起始:表示数据帧开始。

(2) 仲裁段:表示该帧优先级的段。

(3) 控制段:表示数据的字节数及保留位。

(4) 数据段:数据本身,可传送0~8个字节。

(5) CRC段:检查帧的传送错误的段。

(6) ACK段:正常接收确认段。

(7) 帧结束:表示数据帧结束。

cc23f4ca-30e9-11ee-9e74-dac502259ad0.png

2.2.3 遥控帧

接收单元向发送单元请求消息所用的帧。遥控帧由6 个段组成,也可以说是没有数据段的数据帧。

(1) 帧起始(SOF):表示帧的开始。

(2) 仲裁段:表示该帧优先级的段。请求具有同样ID的数据帧。

(3) 控制段:表示所请求数据的字节数及保留位。

(4) CRC段:检查帧的传送错误的段。

(5) ACK段:正常接收确认段。

(6) 帧结束:表示遥控帧结束。

cc5cdd26-30e9-11ee-9e74-dac502259ad0.png

关于遥控帧和数据帧:

• 数据帧和遥控帧有何不同

遥控帧没有数据段,仲裁段的RTR位为隐性电平。

没有数据段的数据帧和遥控帧可通过RTR位区别开来。

• 遥控帧没有数据段,数据长度码该如何表示?

遥控帧的数据长度码以所请求数据帧的数据长度码表示。

• 没有数据段的数据帧有何用途?

可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况下。

2.2.4 错误帧

在收发信中发现错误时用于通知错误的帧。错误帧由错误标志和错误间隔符构成,错误帧的发送是由CAN的硬件部分来完成的。

(1) 错误标志:错误标志包括有效错误标志和无效错误标志两种。

• 有效错误标志:6位显性电平。

• 无效错误标志:6位隐性电平。

(2) 错误间隔符:错误间隔符由8位隐性电平构成。

cc821726-30e9-11ee-9e74-dac502259ad0.png

1. 有效错误标志:处于错误有效态的单元检出错误时传送的错误标志。

2. 无效错误标志:处于错误无效态的单元检出错误时传送的错误标志。

3. 错误标志的重合:由连接到总线上的各单元的错误检出时间不同,错误标志会发生重合,最长可延续到12位。

2.2.5 过载帧

过载帧是用于接收单元通知其尚未完成准备所用的帧。过载帧由过载标志和过载间隔符构成。

(1) 过载标志:6位显性电平。过载标志的构成与有效错误标志的构成相同。

(2) 过载间隔符:8个隐性位。过载间隔符的构成与错误间隔符的构成相同。

cca0a31c-30e9-11ee-9e74-dac502259ad0.png

1. 过载帧的重合:与错误标志一样依据发生时序不同过载标志也会发生重合,最长可延迟到12位。

2.2.6 帧间隔

帧间隔用于分隔数据帧或遥控帧。数据帧或遥控帧前插入帧间隔可将本帧与前面发送的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。但是,过载帧和错误帧前不能插入帧间隔。

(1) 间隔:3位隐性电平。在“间隔”期检测到显性电平时,一定要发送过载帧。然而,在间隔期的第3位出现的显性电平被认为是SOF,此时不发送过载帧。

(2) 总线空闲:隐性电平,无长度限制(0位亦可)。本状态为总线处于空闲中,要发送的单元可开始发送消息。

(3) 延迟传送(发送暂时停止):8个隐性电平。处于错误无效态的单元在发送完一个消息后的帧间隔中必须包含的段。

ccd1f9da-30e9-11ee-9e74-dac502259ad0.png

2.2.7 优先级的仲裁

在总线空闲态,最先开始发送消息的单元获得通信权。

多个单元同时开始传送时,各发送单元从仲裁段的第一位开始进行仲裁。位电平第一次出现不同而且位电平为显性的单元获得通信权发送。仲裁失败的单元在下一个位开始进入接收状态。

仲裁的过程如下图所示:

ccee17e6-30e9-11ee-9e74-dac502259ad0.png

(1) 数据帧和遥控帧的优先级

具有同样ID的数据帧和遥控帧在总线上竞争时,仲裁段的最后一位(RTR)为显性电平的数据帧具有优先权,可继续通信。

(2) 标准格式和扩展格式的优先级

具有相同基本ID的标准格式与扩展格式的数据帧或遥控帧在总线上竞争时,由于标准格式的RTR位为显性电平,具有更高的优先权,可进行发送。

2.2.8 错误的种类

错误共有5种。有时数种错误同时发生。

• 位错误

• 填充错误

• CRC错误

• 格式错误

• ACK错误

错误的种类、错误的内容、出错的帧和检出错误的单元如下表所示。

ccfee490-30e9-11ee-9e74-dac502259ad0.png

2.2.9 位时序

一个位可分为4段。

• 同步段(SS: Synchronization Segment)

• 传播时间段(PTS: Propagation Time Segment)

• 相位缓冲段1(PBS1: Phase Buffer Segment 1)

• 相位缓冲段2(PBS2: Phase Buffer Segment 2)

这些段由最小时间单位Tq(Time Quantum)构成。

消息中的1位被分为4个段,每个段又由若干个Tq构成,这称为位时序。

消息中的1位由多少个Tq构成、每个段又由多少个Tq构成、这些是可以任意设定的。通过设定位时序,总线上数个单元可以以相同的时序对消息采样,可以设定采样点。采样点设置在PBS1的结束处,以此时检测到的总线上的电平值作为该位的电平值。

各段的用途和Tq数如下表所示。

cd396962-30e9-11ee-9e74-dac502259ad0.png

1位的构成如下图所示。

cd7f9298-30e9-11ee-9e74-dac502259ad0.png

2.2.10 取得同步的方法

CAN 协议的通信方法为非归零NRZ(Non-Return to Zero)方式。每个位上没有开始或终了的同步信号。发送单元以与位时序同步的方式开始发送数据。接收单元根据总线上电平的变化进行同步接收信号。

但是,发送单元和接收单元存在的时钟频率误差及传送路径上的(电缆、驱动器等)相位延迟会引起同步偏差。因此接收单元通过强制同步、再同步的方法调整时序进行接收。

2.2.11 强制同步

接收单元在总线空闲状态检出帧起始时进行的同步调整。检出从隐性电平到显性电平的边沿时被认为是SS段,与SJW无关。

cdab53c4-30e9-11ee-9e74-dac502259ad0.png

2.2.12 再同步

在接收过程中根据总线上的电平变化进行的同步。

检出边沿(总线上的电平跳变)时,对照误差值并且根据SJW值延长PBS1段,或缩短PBS2段,以配合同步。但如果发生了超出SJW值的误差,按照SJW值作修正。

cdc377a6-30e9-11ee-9e74-dac502259ad0.png

2.2.13 同步规则

强制同步和再同步遵从如下规则。

(1) 1 位中只进行一次同步调整(两次采样点间)。

(2) 只有当边沿后的总线电平与边沿前一个总线采样值不同时,该沿才能用于同步。

(3) 一旦检测到隐性电平到显性电平的边沿,如果满足条件(1)、(2)须进行同步。

(4) 帧间隔(“间隔”的第1位除去)中检测到隐性电平到显性电平的边沿时,须进行强制同步。

(5) 其他所有的隐性电平到显性电平的边沿,须进行再同步。

(6) 发送单元观测到自身输出的显性电平有延迟时不进行再同步。

2.3 CANFD框架

CAN FD可以理解成CAN协议的升级版,只升级了协议,物理层未改变。

CAN FD协议引入了经过调整的CAN数据帧,以实现额外的数据字节和灵活的比特率。

下面我们比较一个11位的传统CAN帧与一个11位的CAN FD帧(同时也支持29位):

cde6de44-30e9-11ee-9e74-dac502259ad0.png

下面我们一步一步地讨论这些差异:

RTR与r1(RRS):传统CAN中使用了远程传输请求Remote Transmission Request(RTR)来识别数据帧和相应的远程帧。但在CAN FD中,不支持远程帧,远程请求替换(r1)始终是显性(0)。

在CAN-FD帧中,在控制字段中添加了三个新位(FDF、BRS、ESI位):

• 扩展数据长度 Extended Data Length (EDL):隐性表示帧为CAN-FD,否则该位为显性(称为R0)在CAN 2.0帧中。在传统CAN格式的帧中,所对应传输的是位R0而不是EDL。

• 比特率切换 Bit Rate Switch(BRS):指示是否启用两个比特率。如果是隐性,则比特率从仲裁阶段的标准比特率切换到数据阶段的预配置交替比特率。如果是显性,则不切换比特率。

• 错误状态指示器 Error State Indicator(ESI):表示发送节点状态,指示节点处于错误活动模式还是错误被动模式。

DLC:像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。下表显示了这两种协议如何始终使用多达8个数据字节的DLC。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。

ce0d0a42-30e9-11ee-9e74-dac502259ad0.png

CRC:传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中为17位(最多16个数据字节)或21位(20-64个数据字节)。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有四个固定填充位以提高通信可靠性。

ce35ad12-30e9-11ee-9e74-dac502259ad0.png

总结起来,CAN和CANFD协议是一种常用于汽车和工业领域的通信协议。CAN协议是一种高效可靠的串行通信协议,而CANFD协议在保持CAN协议基本特性的基础上增强了数据传输速率和数据长度。这两种协议都在车辆电子系统中扮演着重要的角色,实现了车内各个电子设备之间的可靠通信。

更多内容,您可复制下方网址到浏览器中打开进入瑞萨中文论坛查看:

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/

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

    关注

    147

    文章

    18604

    浏览量

    386550
  • 瑞萨
    +关注

    关注

    36

    文章

    22429

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    CAN(FD)总线十万个为什么》之UDS诊断()

    中的传输协议(ISO-15765)1.单帧传输当请求PDU(协议数据单元)或响应PDU的长度较短,不超过CAN帧数据段的8字节或CANFD的64字节时,传输过程相
    的头像 发表于 11-06 11:36 186次阅读
    《<b class='flag-5'>CAN</b>(FD)总线十万个为什么》之UDS诊断(<b class='flag-5'>下</b>)

    【CPKCOR-RA8D1】+ 4. 解析CANFD 的DBC协议,破解整车厂奥秘

    1_ctrl, CAN_MAILBOX_NUMBER_0, &canfd1_tx_frame); assert(FSP_SUCCESS == err) } 6。解析DBC文件 首先让大家见识DBC到底长啥样
    发表于 10-18 18:12

    ZPS-CANFD总线分析仪:一键操作,全面评估CAN/CANFD节点健康状态

    功能,让复杂的信号质量检测变得简单而高效。为什么需要专业的信号质量检测?在CAN/CANFD总线系统中,信号质量直接决定通信可靠性,微小的信号畸变都可能导致系统通信
    的头像 发表于 09-26 11:46 348次阅读
    ZPS-<b class='flag-5'>CANFD</b>总线分析仪:一键操作,全面评估<b class='flag-5'>CAN</b>/<b class='flag-5'>CANFD</b>节点健康状态

    广成科技CANFDCAN总线GCAN-418的优势

    作为CAN总线的升级产品,CANFD相较于传统的CAN总线,拥有如下几个方面的优势。
    的头像 发表于 08-05 11:47 896次阅读
    广成科技<b class='flag-5'>CANFD</b>转<b class='flag-5'>CAN</b>总线GCAN-418的优势

    CANFD节点的采样点如何测量?

    本文导读为提升CAN/CANFD网络的通信可靠性,各节点需尽可能配置合适且一致的采样点。然而在设备CAN通信采样点参数未知的情况,如何验证各节点采样点设置的一致性?本文结合ZPS-
    的头像 发表于 07-31 11:34 905次阅读
    <b class='flag-5'>CANFD</b>节点的采样点如何测量?

    CANFD 0 通道 2 上收到的所有消息传递到 CANFD 1 通道 0,是否可以使用 DAM 通道?

    你好 我正在尝试将 CANFD 0 通道 2 上收到的所有消息传递到 CANFD 1 通道 0,是否可以使用 DAM 通道?如何。 我在配置 CANFD 1 通道 0 中的源 FiFo 0 和目标 FiFo 0 的 DMA 描述
    发表于 07-14 06:56

    新品发布 | GW2208:同星智能以太网/CANFD/LIN网关设备来袭!

    CAN/CANFD+2路LIN+数字I/O的强悍配置,重新定义总线通信的灵活性与效率。视频介绍01产品简介GW2208是同星智能推出的一款可将CAN/LIN转以太网
    的头像 发表于 07-04 20:04 980次阅读
    新品发布 | GW2208:同星智能以太网/<b class='flag-5'>CANFD</b>/LIN网关设备来袭!

    CANFD协议转换器:搭建通讯桥梁

    局域网络灵活数据速率)协议与其他协议进行转换,以便在物联网环境中实现设备之间的互联互通。近期发现了两款产品USR-CAN315(CANFD转以太网)、USR-
    的头像 发表于 04-19 09:48 668次阅读
    <b class='flag-5'>CANFD</b><b class='flag-5'>协议</b>转换器:搭建通讯桥梁

    智多晶CAN/CANFD IP介绍

    CAN总线(Controller Area Network)是一种广泛应用于工业控制、汽车电子等领域的通信协议
    的头像 发表于 03-27 18:06 980次阅读
    智多晶<b class='flag-5'>CAN</b>/<b class='flag-5'>CANFD</b> IP介绍

    车载通信方案为何选择CAN/CANFD

    摘要 随着汽车电子技术的飞速发展,车载通信系统在车辆的智能化、网联化进程中扮演着至关重要的角色。控制器局域网络(CAN)及其扩展版本CANFD凭借其卓越的可靠性、高效的数据传输能力和强大的抗干扰特性
    的头像 发表于 03-25 21:38 674次阅读

    如何使用ZPS-CANFD观察CAN数据链路层的工作过程

    CAN总线在数据链路层中的应用是其通信协议中的关键部分、它负责在物理层之上实现数据的可靠传输。致远第二代CAN总线分析仪ZPS-CANFD,除了可以完成
    的头像 发表于 03-18 11:38 746次阅读
    如何使用ZPS-<b class='flag-5'>CANFD</b>观察<b class='flag-5'>CAN</b>数据链路层的工作过程

    浅谈CAN协议转换模块

    CAN(Controller Area Network)协议转换模块在现代工业自动化、汽车制造、航空航天等领域扮演着至关重要的角色。作为连接不同CAN网络或CAN与其他通信
    的头像 发表于 02-05 16:37 737次阅读

    CAN/CANFD 总线干扰仪TESTBASE-BDI

    总线干扰仪是CAN/CANFD总线一致性测试中必不可少的重要设备,用于实现采样点以及故障注入等测试项配合桌面式车载网络自动化测试系统TESTBASE-DESKNAT以及基于VBA的CAN/CA
    的头像 发表于 12-26 11:24 1413次阅读
    <b class='flag-5'>CAN</b>/<b class='flag-5'>CANFD</b> 总线干扰仪TESTBASE-BDI

    rk3588 canfd发送部分数据失败的问题

    在使用rk3588的板子进行canfd通信时,有些数据发送必然失败: 1,cansend can0 200##065.68.00.00.96.00.00.01 必然成功 2,cansend can
    发表于 12-18 10:53