浅析STM32H7 FDCAN(一)

一,写在前面

目前STM32H7系列全部支持CAN_FD,现在互联网上的关于STM32 CAN_FD的内容基本没有,寥寥几篇也都是关于滤波器的,所以就决定来研究一下,这篇博客就抛砖引玉了,希望大家看完批评指正。

二,CAN,FDCAN简介

CAN是(Controller Area Network)的缩写,即控制器局域网络,属于工业现场总线,是ISO国际标准化的串行通信协议。
从OSI(Open System Interconnection开放系统互联)7层网络模型的角度来看,CAN现场总线仅仅定义了。
第 1 层(物理层)和第 2 层(数据链路层)。

FDCAN是(CAN with Flexible Data rate)继承了CAN总线的主要特性。CAN总线采用双线串行通讯协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制使CAN总线有很高的安全性,但CAN总线带宽和数据场长度却受到制约。CAN FD总线弥补了CAN总线带宽和数据场长度的制约。

FDCAN与CAN_FD的关系 FDCAN是ST公司在编写库的时候取的名字。CAN_FD是发明这个总线协议的博世公司取的名字。

三,CAN与FDCAN的区别

要想弄清楚他们自己的区别,就需要了解他们的历史。

CAN:1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议.

CAN_FD:随着人们对数据传输带宽要求的增加,传统的CAN总线由于带宽的限制难以满足这种增加的需求。此外为了缩小CAN网络(max. 1MBit/s)与FlexRay(max.10MBit/s)网络的带宽差距,2011年BOSCH公司推出了CAN FD 。

虽然CAN_FD在2011年就推出了,但是目前使用普及率以及资料寥寥无几。

CAN_FD和CAN对比的优势:

  1. CAN_FD全称是Flexible Data-Rate,意思就是帧报文中数据段波特率可变的特性,即仲裁段和数据控制段使用标准的通信波特率,而传输数据段时就会切换到更高的通信波特率,数据传输率可大于1Mbit/s,5Mbit/s(STM32H7目前最高支持5Mbit/s)。
    在这里插入图片描述

  2. 支持的数据长度更长
    经典CAN支持的数据长度为8个字节。CAN_FD对数据的最大长度做了扩充,最大支持64个字节。
    在这里插入图片描述

  3. 优化CRC。
    CAN FD为此在CRC算法上进行了优化与修改,将填充位加入到差错校验码中进行计算,也就是CRC以包含了填充位位流进行计算。确定从第一个填充位开始,序列中每4位就插入一个填充位用以分割,且该填充位就是上一位的反码。
    在这里插入图片描述
    当进行格式检查时,若填充位不是上一位的反码,就及时报错处理。而针对不同的数据场长度值,CAN FD会选择两种新BCH型CRC多项式。

在这里插入图片描述

  1. 控制场增加控制位
    在这里插入图片描述
    EDL(Extended Data Length)用于区分是否为CAN-FD帧:

    1.    隐性: 表示为CAN-FD 报文,并采用新的DLC编码和CRC算法。
    
    2.    显性: 表示为CAN报文
    

BRS(Bit Rate Switch)为位速率转换开关,用于切换Data-Phase的速率:

    1.    隐性:转换可变速率

    2.    显性:不转换速率

ESI(Error State Indicator)为错误状态指示位:

    1.    隐性:发送节点处于被动错误状态(Error Passive)

    2.    显性:发送节点处于主动错误状态(Error Active)

四,CAN_FD帧结构分析

为了区分经典CAN数据帧和CAN_FD数据帧,使用先前保留的位之一,该位称之为FD帧位。如果他是隐性值,则下列序列被解释为CAN_FD数据帧。如果他具有显性值,则它是经典数据或远程帧。在新引入的BRS(比特率开关)位中,当它具有阴性(r)值时,应用第二比特。如果它具有显性(d)值,则仲裁阶段比特时间设置也用于数据阶段。
在这里插入图片描述
SOF =帧起始,CRC =循环冗余校验,ACK =确认,EOF =帧结束,IMF =间歇字段

CAN_FD协议控制器还必须支持经典CAN帧。两种CAN协议(经典和CAN_FD)在ISO 11898-1:2015中都是国际标准化的。具有11位标识符的CAN FD数据帧使用FBFF(FD基本帧格式),具有29位标识符的CAN FD数据帧使用FEFF(FD扩展帧格式)。CAN FD协议不支持远程请求的数据帧。
在这里插入图片描述
RRS =远程请求替换,SRR =替代远程请求,IDE =标识符扩展,FDF =灵活数据速率格式,d =显性,r =隐性,r0 =保留

控制字段包括经典CAN数据帧不提供的附加位。FDF(FD格式)位指示FD帧格式的使用。在BRS(比特率开关)位的采样点处,执行比特率切换。这保证了最大的稳健性。以下ESI(错误状态指示符)位提供有关错误状态的信息:显性值表示错误活动状态。
在这里插入图片描述
IDE(标识符扩展),FDF(灵活数据速率格式),BRS(比特率切换;隐性,如果是备用比特率),ESI(错误状态指示;隐性,如果错误被动)

在CAN FD协议的标准化过程中,引入了一些额外的安全防护装置以提高通信可靠性。这就是CRC字段包括17位(对于有效载荷高达16字节的帧)或21位(对于大于16字节的帧)多项式和8位填充位计数器加上奇偶校验位的原因。CRC字段使用具有与前一位相反的值的固定填充位(FSB)。所有这些安全防护装置可确保在所有条件下都能检测到所有单一故障。即使检测到多个故障的可能性也得到了改善。
在这里插入图片描述

五,最后

  1. 本文由我个人编辑并整理,难免存在一些错误;
  2. 这一篇主要对CAN_FD进行了简要的说明;
  3. 后面逐步STM32H7系列的消息RAM以及滤波进行说明;
  4. 参考链接:https://www.can-cia.org/can-knowledge/can/can-fd/
    http://www.360doc.com/content/16/1212/12/30375878_614027257.shtml
  5. 仅供个人学习使用,禁止商用。
03-08
### FD CAN 技术详解 FD CAN(Flexible Data-rate Controller Area Network),即具有灵活数据速率的控制器局域网,是种改进型的CAN总线协议。该技术允许在同网络中混合使用经典CAN报文和高速CAN FD报文,在保持向后兼容性的前提下显著提高了通信效率。 #### 协议特点 FD CAN支持两种不同的帧格式:标准CAN帧与扩展CAN FD帧。对于后者来说,其最突出的特点在于能够承载更大数据量的有效载荷——最大可达64字节的数据字段[^3]。相比之下,传统CAN仅限于8字节有效负载。此外,通过引入可变速率机制,使得在网络空闲时段可以采用更高的比特率来加速消息传递,从而缩短了整体响应时间并提升了实时性能表现。 #### 配置要点 当涉及到基于S32K系列微控制器实现FD CAN接口初始化时,需特别注意以下几个方面: - **波特率设置**:除了常规的工作频率外,还需指定数据阶段所使用的更快波特率; - **终端电阻配置**:确保外部物理层组件如TJA1463收发器正确连接,并调整内部/外部阻抗匹配以维持信号完整性; - **滤波器编程**:依据实际应用场景定义接收过滤条件,防止非法ID的消息进入系统处理流程; ```c /* 初始化 S32K3xx FDCAN 模块 */ void Init_FDCAN(void){ /* 设置全局模式为配置状态 */ FDCAN1->CCCR |= FDCAN_CCCR_INIT; /* ...其他必要的寄存器配置... */ /* 启用FDCAN功能 */ FDCAN1->CCCR &= ~FDCAN_CCCR_INIT; /* 确认退出初始化模式 */ while (FDCAN1->CCCR & FDCAN_CCCR_INIT); } ``` 上述代码片段展示了如何切换至配置模式并对特定硬件资源进行初步设定的过程[^1]。 #### 应用实例 假设正在构建款电动汽车电池管理系统(BMS),其中多个节点间需要频繁交换大量传感器读数和其他控制指令,则利用FD CAN的优势尤为明显。例如,可以在短时间内完成对整个动力电池组电压电流采样值的次完整轮询操作,进而及时作出相应决策优化充电策略或触发保护措施等动作。 为了更好地理解这些概念之间的关系以及具体实践中的注意事项,请参考以下几点进步探讨的话题:
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值