当前位置: 首页 > news >正文

从AUTOSAR角度理解CAN以及CANFD

一、AUTOSAR对CAN和CAN FD的基础定位

  • CAN:基于传统CAN 2.0B协议,是AUTOSAR早期版本(如4.0.3及之前)的核心车载通信协议,支持最大8字节 payload,仲裁段波特率通常≤1Mbps,适用于低带宽、高实时性场景(如车身控制、底盘控制)。
  • CAN FD:作为CAN的扩展协议,在AUTOSAR 4.2.2及以上版本中被正式支持,解决了传统CAN带宽限制问题,支持可变数据速率(仲裁段保持低波特率兼容传统CAN,数据段可提升至8Mbps)和更长payload(最大64字节,部分硬件支持2048字节),适用于高带宽场景(如自动驾驶传感器数据、诊断报文)。

二、AUTOSAR通信栈模块中的CAN与CAN FD差异

AUTOSAR通信栈对CAN/CAN FD的支持通过分层模块实现,核心模块包括Can Driver(硬件驱动层)、CanIf(CAN接口层)、CanTp(CAN传输协议层)、PDU Router(PDU路由层)等,两者的差异主要体现在以下模块:

1. Can Driver(硬件抽象层,MCAL层)
  • 功能定位:直接与CAN控制器硬件交互,负责帧的发送/接收、波特率配置、错误检测等底层操作。
  • CAN与CAN FD的核心差异
    • 波特率配置
      • CAN仅需配置单一波特率(仲裁段=数据段);
      • CAN FD需配置双波特率
        • 标称波特率(Nominal Bit Rate):仲裁段使用,需与传统CAN节点兼容(如500kbps);
        • 数据波特率(Data Bit Rate):数据段使用,可更高(如2Mbps、5Mbps),由BRS(Bit Rate Switch)位触发切换。
    • 位时间配置
      • CAN的位时间由SYNC_SEG+PROP_SEG+PHASE_SEG1+PHASE_SEG2组成(固定结构);
      • CAN FD需分别配置仲裁段位时间(与CAN兼容)和数据段位时间(更短,支持高速率),且需设置SJW(同步跳转宽度)适配时钟偏差。
    • 帧格式支持
      • CAN仅支持标准帧(11位ID)和扩展帧(29位ID),payload≤8字节;
      • CAN FD支持FD帧(含FDF位标识),payload可配置为64字节(基础)或2048字节(扩展,需硬件支持),且需处理EDL(扩展数据长度)、BRSESI(错误状态指示)等新增控制位。
2. CanIf(CAN接口层,服务层)
  • 功能定位:作为Can Driver与上层模块(如CanTpPDU Router)的中间层,负责帧的路由、优先级管理、状态反馈等。
  • CAN与CAN FD的核心差异
    • 帧类型区分
      • CanIf需通过PduId区分CAN帧和CAN FD帧,在配置中明确帧的类型(CanIfFrameTypeCAN_FRAME_STD/CAN_FRAME_EXT vs CAN_FD_FRAME_STD/CAN_FD_FRAME_EXT)。
    • payload长度适配
      • 对于CAN帧,CanIf限制payload≤8字节;
      • 对于CAN FD帧,CanIf需支持64/2048字节的payload,并确保与下层Can Driver的缓冲区大小匹配(配置CanIfTxBufferSizeCanIfRxBufferSize)。
    • 回调函数扩展
      • 新增针对CAN FD的状态回调(如CanIf_Callback_FdTxConfCanIf_Callback_FdRxInd),通知上层CAN FD帧的发送确认/接收指示。
3. CanTp(CAN传输协议层,服务层)
  • 功能定位:负责长帧的分段与重组(基于ISO 15765-2),支持超过8字节的payload传输。
  • CAN与CAN FD的核心差异
    • 分段需求减少
      • 传统CAN因payload≤8字节,长帧需大量分段(如100字节数据需13个分段帧);
      • CAN FD支持64字节payload,长帧分段数显著减少(如100字节仅需2个分段帧),降低CanTp的处理开销。
    • 超时配置适配
      • CAN FD数据段波特率更高,CanTp需调整超时参数(如N_AsN_Ar),避免因传输速度提升导致的超时误判。
4. 诊断与错误管理
  • 错误处理
    • CAN与CAN FD共享基础错误检测机制(如CRC校验、位填充错误、ACK错误),但CAN FD的CRC字段更长(32位,传统CAN为15位),错误检测能力更强;
    • AUTOSAR的Can模块通过Can_GetErrorState接口反馈错误状态(如CAN_ERROR_ACTIVE/CAN_ERROR_PASSIVE),CAN FD需额外处理因波特率切换导致的同步错误。
  • 诊断报文
    • 诊断服务(如UDS)通过CanTp传输,CAN FD可支持更长的诊断报文(如大容量DTC数据),减少交互次数。

三、AUTOSAR配置工具中的CAN与CAN FD差异

在AUTOSAR配置工具(如Vector DaVinci Configurator、EB tresos Studio)中,CAN与CAN FD的配置差异主要体现在:

  • 控制器配置:需为CAN FD控制器单独设置Nominal Bit RateData Bit Rate,并关联对应的位时间参数(TSEG1TSEG2SJW)。
  • 帧配置:在CanIf模块中,需为CAN FD帧指定Frame FormatCAN_FD,并设置Max Data Length(64/2048)。
  • 硬件抽象层(MCAL)适配:需选择支持CAN FD的Can Driver(如Vector VN1630的驱动),并配置控制器的FD Mode使能。

四、兼容性与迁移要点

  • 向下兼容:CAN FD节点可与传统CAN节点共存于同一总线(仲裁段波特率兼容),但传统CAN节点无法解析CAN FD帧(会将其视为错误帧)。
  • AUTOSAR版本依赖:若需支持CAN FD,ECU的AUTOSAR版本需≥4.2.2,且CanCanIfCanTp模块需启用FD功能(通过CanFdSupport开关配置)。

总结

从AUTOSAR角度看,CAN FD是对传统CAN的功能扩展,而非替代:

  • 两者共享核心通信栈架构(Can DriverCanIfCanTp),但CAN FD在波特率配置、payload长度、帧格式上引入了新特性;
  • AUTOSAR通过分层模块的功能扩展(如双波特率支持、长帧处理),实现了对CAN FD的兼容,同时保持与传统CAN的互操作性;
  • 实际应用中需根据带宽需求(低带宽用CAN,高带宽用CAN FD)和AUTOSAR版本,选择合适的协议并配置对应的模块参数。
http://www.dtcms.com/a/316695.html

相关文章:

  • 权值树状数组
  • 政务信息化项目建设管理办法的主要内容有哪些
  • 防火墙和网闸的区别,什么场景下,需要用到网闸?
  • iOS混淆工具有哪些?技术演进与选型趋势全景解析
  • 《C++》继承完全指南:从入门到精通
  • BeanFactory 和 ApplicationContext 的区别?
  • python-自定义抠图
  • 【分析学】内积空间中的线性算子
  • lumerical——多模干涉耦合器(MMI)
  • 机械学习--决策树(实战案例)
  • lumerical——Y分支功分器
  • Linux学习-数据结构(链表)
  • GISBox一键转换IFC到3DTiles
  • 【PCIE044】基于 JFM7VX690T 的全国产化 FPGA 开发套件
  • 分布式网关技术 + BGP EVPN,解锁真正的无缝漫游
  • 防火墙安全策略练习
  • PBX Feature Code(功能码)
  • 【DAB收音机】DAB系统架构介绍
  • mq_unlink系统调用及示例
  • 图像处理控件Aspose.Imaging教程:使用 C# 将 SVG 转换为 EMF
  • C++ 变量初始化方式总结 | 拷贝初始化 | 列表初始化 | 值初始化
  • 【PCB】3. 信号部分设计
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘keras’问题
  • Nginx入门:高性能Web服务器详解
  • 商用密码应用安全性评估(密评)实施指南:法律依据与核心要点解析
  • 神坛上的transformer
  • 如何测量滚珠花键的旋转方向间隙?
  • PYQT的QMessageBox使用示例
  • unity之 贴图很暗怎么办
  • Redis作为MySQL缓存的完整指南:从原理到实战