CANIF
概要
如下图所示,CANIF(CAN Interface)模块位于底层CAN设备驱动程序(CAN驱动和收发器驱动)和上层通信服务层(CAN状态管理器、CAN网络管理、CAN传输协议、PDU路由器)之间,它表示到上层通信层的CAN驱动程序的服务或接口。CAN接口模块提供了唯一的接口来管理不同类型的CAN硬件设备,如CAN控制器和CAN收发器。
CANIF模块由所有与CAN硬件无关的任务组成,属于相应ECU的CAN通信设备驱动程序。这些功能在CAN接口模块中实现一次,因此底层的CAN设备驱动程序只关注对相应的特定CAN硬件设备的访问和控制。
CanIf满足PDU路由器的主控制流和数据流要求AUTOSAR COM栈的上层通信模块:发送请求处理,发送确认/接收指示/错误通知并启动/停止CAN控制器,从而唤醒/参与网络。它的数据处理和通知API基于CAN L-SDUs,而控制API则基于CAN L-SDUs模式处理提供了一个与CAN控制器相关的视图。
在发送请求的情况下,可以用相应的完成L-PDU的传输参数和继电器的CAN L-PDU通过适当的CanDrv到CAN控制器。在接待处,CanIf将接收到的l - pdu分发为lsdu到上层。接收L-SDU与上层之间的分配是静态配置。在发送确认时,CanIf负责通知上层关于成功的传播。
CAN接口模块提供了对CAN通信的抽象访问可以驱动和可以收发驱动服务进行控制和监督吗可以网络。CAN接口向下转发状态更改请求从CAN状态管理器到底层CAN设备驱动程序,再往上CAN驱动程序/ CAN收发器驱动程序事件由CAN接口转发模块到例如相应的NM模块。
模块配置
CanIfCtrlDrvCfg
所有底层CAN的配置参数驱动程序模块在此容器下聚合。对于每个CAN驱动模块,必须提供此容器的独立实例。
CanIfCtrlId
此参数从CAN驱动程序特定的参数中抽象出来控制器。所有连接的CAN驱动模块的每个控制器都应该分配给一个特定的控制器。
范围:0..所有CAN驱动模块配置的控制器数量。
CanIfCtrlWakeupSupport
此参数定义引用的各个控制器是否可以驱动模块可以查询唤醒事件。
True:启用False:禁用
CanIfCtrlCanCtrlRef
此参数从CAN提供的CAN驱动程序模块引用底层CAN控制器的逻辑句柄
接口模块。这个链接需要引用CanController配置容器的以下参数:CanWakeupSourceRef
范围:0 . . max。支持的底层CAN控制器的数目
CanIfCtrlDrvInitHohConfigRef
引用Init Hoh配置。
CanIfCtrlDrvNameRef
CAN接口驱动程序参考。该引用可用于获取任何信息(例如,驱动程序名,供应商ID)从CAN驱动程序。可以从CAN驱动程序模块的短名称派生出CAN驱动程序名称。
CanIfDispatchCfg
回调函数由CanIf的上层模块提供。这个容器中定义的回调函数对于所有配置的CAN Driver /都是通用的可以收发驱动模块。
CanIfInitCfg
此容器包含CAN的init参数接口。
CanIfInitHohCfg
此容器包含对每个底层CAN驱动程序的配置设置的引用。
CanIfHrhCfg
此容器包含每个硬件接收对象(HRH)的配置参数。
CanIfHthCfg
此容器包含与每个HTH相关的参数。
CanIfHthCanCtrlIdRef
指向HTH所属的控制器Id。一个控制器可以包含一个或多个HTH。
CanIfHthIdSymRef
该参数引用CanDrv中的一个特定的HTH对象配置(参见CanHardwareObject)。
CanIf通过此接收CanDrv模块的以下信息:CanHandleType、CanObjectId
CanIfHrhSoftwareFilter
通过使用HRH范围/列表选择硬件接收对象可以配置驱动程序来定义,其中HRH软件过滤必须在接收处理期间执行。
True:启用软件过滤;False:启用软件过滤
CanIfHrhCanCtrlIdRef
对HRH所属的控制器Id的引用。一个控制器可以包含一个或多个hrh。
CanIfHrhIdSymRef
该参数引用CanDrv中的特定HRH对象配置(参见CanHardwareObject)。
CanIf通过此接收CanDrv模块的以下信息:
CanHandleType\CanObjectId
CanIfHrhRangeCfg
定义为给定的同一HRH配置多个CANID范围所需的参数。
CanIfRxPduCanId
CAN接口使用的接收CAN L-PDUs的CAN标识符。穰:软件过滤。如果可以,则使用此参数标识符被分配给Pdu。如果指定了范围,则参数应使用。
范围:11位标准CAN标识符…扩展CAN标识符的29位
CanIfRxPduCanIdMask
标识符掩码,它表示CAN标识符中的相关位。此参数以另一种方式定义CAN标识符范围CanIfRxPduCanIdRange。它标识配置的CAN的位必须与接收到的CAN标识符匹配的标识符。范围:标准CAN标识符为11位,扩展CAN标识符为29位。
CanIfRxPduCanIdType
可以接收的标识符可以L-PDUs使用的CAN驱动程序可以L-PDU接待。
CanIfRxPduDataLength
接收到的CAN L-PDUs的数据长度由CAN接口使用。
此信息用于数据长度检查。此外,它可以指定有效的位在离散DLC的情况下可以FD L-PDUs >8个字节。CAN L-PDU的数据区域大小可以是0到64字节。
CanIfRxPduDataLengthCheck
此参数切换消息特定数据长度检查。
True:数据长度检查将在接收该PDU时执行。
False:在接收这个PDU时不会执行数据长度检查。
CanIfRxPduId
ECU宽独特,符号句柄为接收可以L-SDU。对于常量定义,它应该满足ANSI/AUTOSAR定义。
范围:0 . . max。已定义的canrxpduid的数目
CanIfRxPduReadData
启用和禁用用于读取接收的L-SDU数据的Rx缓冲。
True:启用False:禁用
CanIfRxPduReadNotifyStatus
启用和禁用接收指示,每个接收可以L-SDU读取其通知状态。
True:启用False:禁用
CanIfRxPduUserRxIndicationName
该参数定义了< user_rx指示>的名称。该参数取决于参数CanIfRxPduUserRxIndicationUL。如果CanIfRxPduUserRxIndicationUL = CAN_TP, CAN_NM, PDUR,XCP, CAN_TSYN, J1939NM或J1939TP,的名称< User_RxIndication >是固定的。如果CanIfRxPduUserRxIndicationUL等于CDD,则< user_rxindication>的名称是可选择的。
CanIfRxPduUserRxIndicationUL
此参数定义了上层(UL)模块,成功接收到的CANRXPDUID的指示必须通过 < user_rxsignal> 路由到该模块。当配置的CANRXPDUID的指示将由来自CAN驱动程序模块的Rx指示事件接收时,必须调用此 < user_rx> 。的CANRXPDUID的Rx指示事件时,不必调用 < user_rx > 可以驱动模块。
CanIfRxPduHrhIdRef
Rx L-PDU所属的HRH通过该参数引用。
CanIfRxPduRef
引用“全局”Pdu结构,以便协调comStack中的标识符。
CanIfRxPduCanIdRange
允许映射CAN范围的可选容器id到一个PduId。
CanIfTTRxFrameTriggering
在SWS中指定了canifttrxframetriggerTTCAN接口,定义TTCAN接收的帧触发器。这个容器只有在TTCAN被控制器支持的情况下才有效CanIfSupportTTCAN和一个joblist用于接收。
CanIfTxPduCanId
发送的标识符可以被L-PDUs用于CAN驱动程序,可以L-PDU传播。
范围:标准CAN标识符为11位…扩展CAN标识符的29位
对于动态传输L-PDUs,可以省略CAN标识符。
CanIfTxPduCanIdMask
标识符掩码,它表示CAN标识符中的相关位。该参数可用于保持部分动态发送L-PDUs的CAN标识符为静态。范围:标准CAN标识符为11位,扩展CAN标识符为29位。
CanIfTxPduCanIdType
CAN使用的传输CAN L-PDU的CAN标识符的类型用于CAN L-PDU传输的驱动模块。
CanIfTxPduId
ECU唯一的,符号句柄为传输可以L-SDU。
范围:0 . . max。CantTxPduIds数量
CanIfTxPduPnFilterPdu
如果启用了CanIfPublicPnFilterSupport,则可以通过该参数配置PDUs,它将通过CanIfPnFilter。如果没有为每个控制器配置CanIfTxPduPnFilterPdu,则相应的控制器不应用CanIfPnFilter。
CanIfTxPduReadNotifyStatus
启用和禁用每个传输CAN的传输确认读取其通知状态的L-SDU。
True:启用False:禁用
CanIfTxPduTriggerTransmit
确定是否CanIf应为此使用API触发器传输PDU。
CanIfTxPduTruncation
启用/禁用超过配置大小的pdu的截断。
CanIfTxPduType
定义每个传输CAN L-PDU的类型。
CanIfTxPduUserTriggerTransmitName
该参数定义了< user_triggertransmission >的名称。这个参数取决于参数CanIfTxPduUserTxConfirmationUL。如果CanIfTxPduUserTxConfirmationUL = CAN_TP, CAN_NM, PDUR,XCP, CAN_TSYN, J1939NM或J1939TP,的名称< User_TriggerTransmit >是固定的。如果CanIfTxPduUserTxConfirmationUL等于CDD,则<User_TxConfirmation>的名称是可选的。
此参数依赖于与CanIfTxPduUserTxConfirmationName相同的参数。应该明确哪个上层负责该PDU。
CanIfTxPduUserTxConfirmationName
该参数定义了<User_TxConfirmation>的名称。这个参数取决于参数CanIfTxPduUserTxConfirmationUL。如果CanIfTxPduUserTxConfirmationUL = CAN_TP, CAN_NM, PDUR,XCP, CAN_TSYN, J1939NM或J1939TP,的名称< User_TxConfirmation >是固定的。如果CanIfTxPduUserTxConfirmationUL等于CDD,则<User_TxConfirmation>的名称是可选的。
CanIfTxPduUserTxConfirmationUL
该参数定义了上层(UL)模块,成功传输的CanTxPduId的确认必须通过<User_TxConfirmation>路由到该模块。当配置的CanTxPduId的确认将被来自CAN驱动程序模块的Tx确认事件接收时,必须调用这个<User_TxConfirmation>。如果没有配置上层(UL)模块,则没有必须调用<User_TxConfirmation>,以防来自CAN驱动程序模块的CanTxPduId的Tx确认事件。
CanIfTxPduBufferRef
对CanIf缓冲区配置的可配置引用。
CanIfTxPduRef
引用“全局”Pdu结构,以便协调comStack中的标识符。
CanIfTTTxFrameTriggering
在SWS中指定了caniftttxframetriggerTTCAN接口,定义TTCAN传输的帧触发器。这个容器只有在TTCAN被控制器支持的情况下才有效使用CanIfSupportTTCAN和joblist。
CanIfBufferSize
此参数定义可以在一个Txbuffer中缓冲的CanIf Tx L-PDUs的数量。如果该值等于0,则CanIf不会对分配给它的CanIf Tx L-PDUs执行TxbufferingTxbuffer。如果CanIfPublicTxBuffering等于False,则该参数等于0为所有TxBuffer。如果引用的HTH的CanHandleType等于这个TxBuffer的参数为0。
CanIfBufferHthRef
对HTH的引用,它定义为传输而配置的硬件对象或硬件对象池。所有的CanIf Tx L-PDUs都通过CanIfBufferCfg和该参数向HTHs if引用是否启用TxBuffering。每个HTH不得分配给一个以上的缓冲区。
CanIfPrivateCfg
此容器包含私有配置(参数)的CAN接口。
CanIfFixedBuffer
此参数定义缓冲区元素长度是否应固定为8只分配给PDUs < 8字节的缓冲区的字节数。
TRUE:最小缓冲区元素长度固定为8字节。
FALSE:缓冲区元素的长度取决于引用的pdu的大小。
CanIfPrivateDataLengthCheck
选择是否支持数据长度检查。
True:启用False:禁用
CanIfPrivateSoftwareFilterType
只选择接收所需的软件过滤机制。每个已实现的软件过滤方法由此枚举号标识。
范围:类型实现的软件过滤方法
CanIfSupportTTCAN
定义是否支持TTCAN。
TRUE:支持TTCAN。
FALSE:不支持TTCAN,只有正常的CAN通信是可能的。
CanIfPublicCfg
此容器包含公共配置(参数)的CAN接口。
CanIfBusMirroringSupport
启用对总线镜像的支持。
CanIfDevErrorDetect
打开或关闭开发错误检测和通知。
true:启用检测和通知。
false:检测和通知被禁用。
CanIfMetaDataSupport
支持使用L-SDU元数据进行动态ID处理。
CanIfPublicCddHeaderFile
定义回调函数的头文件,在使用CDDs时应包括这些头文件。字符的范围是1..32。
CanIfPublicHandleTypeEnum
此参数用于配置Can_HwHandleType。
Can_HwHandleType表示CAN硬件单元的硬件对象句柄。对于超过255个HW对象的CAN硬件单元,扩展范围为应使用(UINT16)。
CanIfPublicIcomSupport
在CanIf中选择对虚拟网络特性的支持。TRUE:启用、FALSE:禁用
CanIfPublicMultipleDrvSupport
选择对多个CAN驱动程序的支持。
True:启用False:禁用
CanIfPublicPnSupport
CanIfTr选择在CanIf中支持部分网络特性。
TRUE:启用
FALSE:禁用
CanIfPublicReadRxPduDataApi
启用/禁用API CanIf_ReadRxPduData()来读取接收到的L-SDU数据。
True:启用False:禁用
CanIfPublicReadRxPduNotifyStatusApi
启用和禁用用于读取接收L-PDUs的通知状态的API。
True:启用False:禁用
CanIfPublicReadTxPduNotifyStatusApi
启用和禁用用于读取传输L-PDUs的通知状态的API。
True:启用False:禁用
CanIfPublicSetDynamicTxIdApi
启用和禁用用于重新配置每个传输L-PDU的CAN标识符的API。
True:启用False:禁用
CanIfPublicTxBuffering
启用和禁用传输L-PDUs的缓冲数据。
True:启用False:禁用
CanIfPublicTxConfirmPollingSupport
配置参数,以启用/禁用用于轮询Tx的API确认状态。
CanIfPublicWakeupCheckValidByNM
如果启用,只有NM消息将验证在CanIf中检测到的唤醒事件。如果禁用,则所有接收到的与配置的Rx PDU对应的消息都应验证此类唤醒事件。该参数依赖于CanIfPublicWakeupCheckValidSupport,只有在启用该参数时才可进行配置。
True:启用False:禁用
CanIfPublicWakeupCheckValidSupport
选择对唤醒验证的支持。
True:启用False:禁用
CanIfSetBaudrateApi
配置参数,以启用/禁用CanIf_SetBaudrate API来更改CAN控制器的波特率。如果该参数设置为true,则应该支持CanIf_SetBaudrate API。否则不支持该API。
CanIfTcvDrvCfg
此容器包含每个底层的所有寻址CAN收发器的配置(参数)CAN收发驱动模块。对于每个CAN收发器驱动器,应提供此容器的独立实例。
CanIfTrcvId
此参数抽象自CAN收发器驱动程序特定的参数收发器。每个收发器都可以连接收发机驱动模块应指定一个具体模块经发射装置。
范围:0 . .所配置的收发器数量均可收发驱动模块
CanIfTrcvWakeupSupport
此参数定义引用的各个收发器CAN收发器驱动模块可查询唤醒事件。
True:启用False:禁用
CanIfTrcvCanTrcvRef
要提供服务的CAN收发器驱动程序模块的基础CAN收发器的逻辑句柄接口模块。
范围:0 . . max。底层支持的CAN收发器的数目
自动配置生成
ISOLAR软件可以通过导入DBC、ODX等文件,创建系统配置,进而通过系统配置生成部分底层软件配置。
以CAN模块为例,通过ConfGen工具,可以自动生成CAN节点、CANObject配置,其他配置一般以默认值填充。
Step1
DBC文件检查
删除属性: BA_ "GenSigStartValue" SG_ xxx SigName;
补充节点信息: BU_: VCU ABS …
补充每帧报文的接收发送节点: BO_ CanID MsGName: DLC ABS
SG_ SigName : 0|2@1+ (1,0) [0|3] "" VCU
Step2
导入DBC文件
Step3
生成配置
Step4
参考<模块配置>对生成的CAN模块配置进行修改、适配。
参考文档
[1] AUTOSAR_SRS_CAN.pdf
[2] AUTOSAR_SWS_CANInterfacepdf文章来源:https://www.toymoban.com/news/detail-613605.html
[3] RTA-BSWReferenceGuide.pdf文章来源地址https://www.toymoban.com/news/detail-613605.html
到了这里,关于【AUTOSAR】 项目和代码详解(八)----AUTOSAR CANIF 配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!