一,写在前面 目前STM32H7系列全部支持CAN_FD,现在互联网上的关于STM32 CAN_FD的内容基本没有,寥寥几篇也都是关于滤波器的,所以就决定来研究一下,这篇博客就抛砖引玉了,希望大家看完批评指正。 ; o5 h$ q: |; R$ K+ D CAN是(Controller Area Network)的缩写,即控制器局域网络,属于工业现场总线,是ISO国际标准化的串行通信协议。$ [7 _8 P y+ h; ]3 b; |2 o FDCAN是(CAN with Flexible Data rate)继承了CAN总线的主要特性。CAN总线采用双线串行通讯协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制使CAN总线有很高的安全性,但CAN总线带宽和数据场长度却受到制约。CAN FD总线弥补了CAN总线带宽和数据场长度的制约。 FDCAN与CAN_FD的关系 FDCAN是ST公司在编写库的时候取的名字。CAN_FD是发明这个总线协议的博世公司取的名字。、
要想弄清楚他们自己的区别,就需要了解他们的历史。 CAN:1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议. CAN_FD:随着人们对数据传输带宽要求的增加,传统的CAN总线由于带宽的限制难以满足这种增加的需求。此外为了缩小CAN网络(max. 1MBit/s)与FlexRay(max.10MBit/s)网络的带宽差距,2011年BOSCH公司推出了CAN FD 。 虽然CAN_FD在2011年就推出了,但是目前使用普及率以及资料寥寥无几。 CAN_FD和CAN对比的优势: CAN_FD全称是Flexible Data-Rate,意思就是帧报文中数据段波特率可变的特性,即仲裁段和数据控制段使用标准的通信波特率,而传输数据段时就会切换到更高的通信波特率,数据传输率可大于1Mbit/s,5Mbit/s(STM32H7目前最高支持5Mbit/s)。& Z0 F4 i$ L- [3 x1 A. u; ] 支持的数据长度更长 优化CRC。. i5 e& V; h8 B' f8 y$ }5 i2 h5 ^ 在这里插入图片描述 控制场增加控制位; L+ \; |; m5 q9 k! J+ g9 A' C: o 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) " W+ Q. O; m+ ^0 D% Z: L 四,CAN_FD帧结构分析 为了区分经典CAN数据帧和CAN_FD数据帧,使用先前保留的位之一,该位称之为FD帧位。如果他是隐性值,则下列序列被解释为CAN_FD数据帧。如果他具有显性值,则它是经典数据或远程帧。在新引入的BRS(比特率开关)位中,当它具有阴性(r)值时,应用第二比特。如果它具有显性(d)值,则仲裁阶段比特时间设置也用于数据阶段。 CAN_FD协议控制器还必须支持经典CAN帧。两种CAN协议(经典和CAN_FD)在ISO 11898-1:2015中都是国际标准化的。具有11位标识符的CAN FD数据帧使用FBFF(FD基本帧格式),具有29位标识符的CAN FD数据帧使用FEFF(FD扩展帧格式)。CAN FD协议不支持远程请求的数据帧。 控制字段包括经典CAN数据帧不提供的附加位。FDF(FD格式)位指示FD帧格式的使用。在BRS(比特率开关)位的采样点处,执行比特率切换。这保证了最大的稳健性。以下ESI(错误状态指示符)位提供有关错误状态的信息:显性值表示错误活动状态。/ b) `# _0 j0 j& ~, Q2 m3 e; P' j$ b' T 在CAN FD协议的标准化过程中,引入了一些额外的安全防护装置以提高通信可靠性。这就是CRC字段包括17位(对于有效载荷高达16字节的帧)或21位(对于大于16字节的帧)多项式和8位填充位计数器加上奇偶校验位的原因。CRC字段使用具有与前一位相反的值的固定填充位(FSB)。所有这些安全防护装置可确保在所有条件下都能检测到所有单一故障。即使检测到多个故障的可能性也得到了改善。9 g2 Y" `# M% t7 n ; n4 x8 q, |4 _; M' Q/ G7 a 本文由我个人编辑并整理,难免存在一些错误;- j: _9 ^1 X+ E- V3 t$ S( o |
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
【Wio Lite AI视觉开发套件】+cube.ai与食物识别
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK】基于 rtthread 适配 lcd 驱动移植 lvgl
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK】rtthread 增加 psram 内存管理
【STM32H7S78-DK】开箱与rtthread工程初体验
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】-4 LTDC&DMA2D 基本测试
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题