从AUTOSAR角度理解CAN以及CANFD

从AUTOSAR角度看CAN与CAN FD差异

一、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版本,选择合适的协议并配置对应的模块参数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值