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

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

3天内不再提示

AUTOSAR通信之CanIf模块简介3

jf_78858299 来源:汽车控制与人工智能 作者:Demu 2023-02-13 14:29 次阅读

PDU模式控制服务

每个L-PDU分配给一个专用的物理CAN通道,该通道连接CAN控制器和CAN网络。通过这种方式,所有属于物理通道的L-PDU都可以在处理逻辑上,单一的L-PDU通道组上进行控制。这些逻辑组表示ECU连接到底层CAN网络的所有I-PDU。图 展示了L-PDU信道组与上层或网络的关系。

图片

图5 PDU组的通道

一个L-PDU只能分配给一个信道组。PduR或网络管理等典型用户负责控制PDU的操作模式。CanIf提供了服务CanIf_SetPduMode()和CanIf_GetPduMode()来防止处理:

  • 所有的I-PDU都属于一个逻辑通道,
  • 所有发送I-PDU和接收I-PDU属于一个逻辑通道。

只允许在对应的控制器模式等于CAN_CS_STARTED时,更改PDU通道模式。而CANIF_ONLINE和CANIF_OFFLINE在PDU信道模式下影响整个通信,分别启用和禁用CANIF_TX_OFFLINE和CANIF_TX_OFFLINE_ACTIVE传输路径。CanIf通过服务CanIf_GetPduMode()提供关于当前PDU通道模式的信息

图片

图6 PDU组的通道模式控制

在初始化期间,CanIf应该将每个通道切换到CANIF_OFFLINE。如果调用CanIf_SetControllerMode(),则CanIf会将对应通道的PDU通道模式设置为CANIF_OFFLINE。

对于切换到CANIF_OFFLINE模式的物理通道,CanIf应该:

  • 防止将相关L-PDU的传输请求CanIf_Transmit()转发给CanDrv,
  • 清除相应的CanIf传输缓冲区,
  • 防止调用上层模块的接收指示回调服务,
  • 防止调用上层模块的传输确认回调服务。

如果调用CanIf_SetControllerMode()或CanIf_ControllerBusOff(),则CanIf应将相应通道的PDU通道模式设置为CANIF_TX_OFFLINE。

对于切换到CANIF_TX_OFFLINE模式的物理通道,CanIf应该:

  • 防止将相关L-PDU的传输请求CanIf_Transmit()转发给CanDrv,
  • 清除相应的CanIf传输缓冲区,
  • 防止调用上层模块的传输确认回调服务。
  • 支持调用上层模块的接收指示回调服务。

在CANIF_OFFLINE和CANIF_TX_OFFLINE的情况下,BusOff通知被隐式地抑制,因为没有I-PDU可以被传输,因此CAN控制器不能通过新请求的L-PDU进入BusOff模式进行传输。

如果已经在CAN transmission硬件对象中等待传输的L-PDU在切换到CANIF_TX_OFFLINE或CANIF_OFFLINE模式并发生后续BusOff事件后立即被传输,那么CanIf不禁止执行BusOff通知。唤醒通知不受PDU通道模式更改的影响。

对于切换到CANIF_ONLINE模式的物理信道,CanIf应该:

  • 允许将相关L-PDU的传输请求CanIf_Transmit()转发到CanDrv,
  • 支持调用上层模块的接收指示回调服务,
  • 允许调用上层模块的传输确认回调服务。

如果CanIfTxOfflineActiveSupport为TRUE,CanIf提供通过CANIF_TX_OFFLINE_ACTIVE模式成功传输的模拟。该模式是通过调用CanIf_SetPduMode()来启用的,并且只影响传输路径。

对于每个被分配到CANIF_TX_OFFLINE_ACTIVE模式信道的L-PDU, CanIf会立即调用上层模块的传输确认回调服务,而不是在调用CanIf_Transmit()时将L-PDU缓冲或转发到CanDrv。

在CANIF_TX_OFFLINE_ACTIVE模式下,上层必须处理传输确认的执行。发送确认处理在发送请求结束时立即执行。这个功能对于实现特殊的操作模式(如诊断无源模式)是有用的,以避免总线流量而不影响通知机制。此模式通常用于诊断。

5 API

API这里罗列一下,就不展开赘述了,后续有机会再串起来介绍。

  • CanIf_Init
  • CanIf_DeInit
  • CanIf_SetControllerMode
  • CanIf_GetControllerMode
  • CanIf_GetControllerErrorState
  • CanIf_Transmit
  • CanIf_ReadRxPduData
  • CanIf_ReadTxNotifStatus
  • CanIf_ReadRxNotifStatus
  • CanIf_SetPduMode
  • CanIf_GetPduMode
  • CanIf_GetVersionInfo
  • CanIf_SetDynamicTxId
  • CanIf_SetTrcvMode
  • CanIf_GetTrcvMode
  • CanIf_GetTrcvWakeupReason
  • CanIf_SetTrcvWakeupMode
  • CanIf_CheckWakeup
  • CanIf_CheckValidation
  • CanIf_GetTxConfirmationState
  • CanIf_ClearTrcvWufFlag
  • CanIf_CheckTrcvWakeFlag
  • CanIf_SetBaudrate
  • CanIf_SetIcomConfiguration
  • CanIf_GetControllerRxErrorCounter
  • CanIf_GetControllerTxErrorCounter
  • CanIf_EnableBusMirroring

回调函数

  • CanIf_TriggerTransmit
  • CanIf_TxConfirmation
  • CanIf_RxIndication
  • CanIf_ControllerBusOff
  • CanIf_ConfirmPnAvailability
  • CanIf_ClearTrcvWufFlagIndication
  • CanIf_CheckTrcvWakeFlagIndication
  • CanIf_ControllerModeIndication
  • CanIf_TrcvModeIndication
  • CanIf_CurrentIcomConfiguration

总****结

CanIf位于底层CAN驱动、CAN收发器和上层通信服务层、CanTp、PduR之间。它表示上层通信层的CAN驱动程序服务接口。其中涉及众多API函数和回调函数,具体功能最好结合函数的定义和应用场景理解。

缩略词:

L-PDU : CAN Protocol Data Unit,

CAN协议数据单元

L-SDU : CAN Service Data Unit,

CAN服务数据单元

CanDrv : CAN Driver module,

CAN驱动模块

CAN FD : CAN with Flexible Data-Rate

CanId : CAN Identifier,

CAN标识符

CanIf: CAN Interface module,

CAN接口模块

Can Nm : CAN Network Management module,

CAN网络管理模块

CanSm : CAN State Manager module,

CAN状态管理模块

CanTp : CAN Transport Layer module,

CAN传输层模块

CanTrcv : CAN Transceiver Driver module,

CAN收发器驱动模块

CanTSyn : Global Time Synchronization overCAN,

ComM : Communication Manager module,

通信管理模块

DCM: Diagnostic Communication Manager module,诊断通信管理模块

EcuM : ECU State Manager module,

ECU状态管理模块

HOH : CAN hardware object handle,

硬件对象句柄

HRH : CAN hardware receive handle,

硬件接收句柄

HTH: CAN hardware transmit handle,

硬件发送句柄

PduR : PDU Router module,

PDU路由模块

SchM : Scheduler Module,

进程模块

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

    关注

    10

    文章

    3393

    浏览量

    105859
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2715

    浏览量

    463361
  • 路由器
    +关注

    关注

    22

    文章

    3706

    浏览量

    113529
  • PDU
    PDU
    +关注

    关注

    0

    文章

    93

    浏览量

    16963
收藏 人收藏

    评论

    相关推荐

    AUTOSAR存储模块的基础知识

    AUTOSAR存储模块的解释文章很多,本文整理存储模块基础知识。
    发表于 10-08 09:30 6581次阅读

    AUTOSAR MCAL MCU模块的相关资料分享

    简介MCU驱动程序提供微控制器初始化,掉电功能,复位和微控制器其他MCAL软件模块所需的特定功能的服务(这里主要指那些公共寄存器的设置)。需要注意的是,启动代码和用于升级的Bootloader是不在AUTOSAR负责范围内的,
    发表于 11-03 08:18

    AUTOSAR的相关资料推荐

    AUTOSAR基础篇EcuM_wto9109的博客-CSDN博客【AutoSAR】【EcuM】ECU状态管理专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。07-08
    发表于 01-27 08:25

    AUTOSAR基础软件层是由哪些部分组成的

    基础软件层主要是用于提供基础软件服务,包括标准化的系统功能以及功能接口,并且由一系列的基础服务软件组成,包括系统服务、内存服务、通信服务等。一、基础软件层模块按照类型可以分为驱动模块、接口模块
    发表于 02-17 08:00

    S32K3 MCAL支持哪些版本的Autosar

    我有几个关于 Autosar 的问题1.S32K3 MCAL支持哪些版本的Autosar?2. Autosar R19-11 支持不支持?3
    发表于 03-27 07:52

    AUTOSAR_MCAL_CAN_IM.pdf提示找不到 config/CanIf.xdm怎么解决?

    AUTOSAR_MCAL_CAN_IM.pdf 文件中声明还需要 CanIf 插件来实现 CAN 插件。但是,当我尝试在 Tresos 上添加 CanIf 模块时,它给出了一个错误
    发表于 03-30 08:48

    AUTOSAR基础篇EcuM

    ,ECU启动过程又可分为哪几个阶段呢?。。。。。。今天,我们来一起探讨并回答这些问题。为了便于大家理解,以下是本文的主题大纲:正文EcuM模块总体介绍主要功能EcuM模块作为AUTOSAR中的标准
    发表于 12-06 19:51 15次下载
    <b class='flag-5'>AUTOSAR</b>基础篇<b class='flag-5'>之</b>EcuM

    AUTOSAR 基础软件层

    基础软件层主要是用于提供基础软件服务,包括标准化的系统功能以及功能接口,并且由一系列的基础服务软件组成,包括系统服务、内存服务、通信服务等。一、基础软件层模块按照类型可以分为驱动模块、接口模块
    发表于 12-22 19:03 26次下载
    <b class='flag-5'>AUTOSAR</b> 基础软件层

    AUTOSAR通信CanIf模块简介1

    CAN接口模块(下文简“CanIf”)位于底层CAN驱动(CanDrv)、CAN收发器(CanTrcv)和上层通信服务层(CanSm、CanNm)、CAN传输协议(CanTp)、PDU路由器(PduR)之间。它表示上层
    的头像 发表于 02-13 14:29 4007次阅读
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>通信</b><b class='flag-5'>之</b><b class='flag-5'>CanIf</b><b class='flag-5'>模块</b><b class='flag-5'>简介</b>1

    AUTOSAR通信CanIf模块简介2

    CAN接口模块(下文简“CanIf”)位于底层CAN驱动(CanDrv)、CAN收发器(CanTrcv)和上层通信服务层(CanSm、CanNm)、CAN传输协议(CanTp)、PDU路由器(PduR)之间。它表示上层
    的头像 发表于 02-13 14:29 2353次阅读
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>通信</b><b class='flag-5'>之</b><b class='flag-5'>CanIf</b><b class='flag-5'>模块</b><b class='flag-5'>简介</b>2

    AutosarBSWM配置简介

    AUTOSAR基础软件层主要用于提供基础软件服务,包括标准化的系统功能以及功能接口,并且由一系列的基础服务软件组件构成,包括系统服务、内存服务、通信服务等。
    的头像 发表于 05-26 11:15 1642次阅读
    <b class='flag-5'>Autosar</b><b class='flag-5'>之</b>BSWM配置<b class='flag-5'>简介</b>

    AUTOSAR是什么?AUTOSAR软件架构简介

    AUTOSAR的全称是AUTomotive Open System Architecture,直译为汽车开放系统架构
    的头像 发表于 07-08 17:26 1.2w次阅读
    <b class='flag-5'>AUTOSAR</b>是什么?<b class='flag-5'>AUTOSAR</b>软件架构<b class='flag-5'>简介</b>

    AUTOSAR通信协议栈配置详解

    通讯协议栈几乎是CP AUTOSAR中最庞杂的一块。由于其涉及的模块比较多(仅实现CAN信号的收发就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP这么多模块的协
    的头像 发表于 09-21 10:02 5289次阅读
    <b class='flag-5'>AUTOSAR</b>中<b class='flag-5'>通信</b>协议栈配置详解

    AUTOSAR经典平台介绍

    汽车电子系统的软件组件、运行时环境和通信机制,以实现模块化、可重用和可扩展的系统开发。 在AUTOSAR CP中,软件组件被分为应用软件组件(SWC)和基础软件组件(BSW)。SWC是实现特定功能的软件
    的头像 发表于 10-27 15:30 1346次阅读
    <b class='flag-5'>AUTOSAR</b>经典平台介绍

    AUTOSAR软件开发流程简介

    软件功能和性能要求。这包括确定软件组件、接口和模块的功能和规格要求。 架构设计:在这个阶段,根据需求分析的结果,设计AUTOSAR软件的整体架构。这包括定义软件组件的功能和接口,以及确定软件模块的分层结构和
    的头像 发表于 10-27 15:55 3057次阅读
    <b class='flag-5'>AUTOSAR</b>软件开发流程<b class='flag-5'>简介</b>