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 apiapi这里罗列一下,就不展开赘述了,后续有机会再串起来介绍。
canif_initcanif_deinitcanif_setcontrollermodecanif_getcontrollermodecanif_getcontrollererrorstatecanif_transmitcanif_readrxpdudatacanif_readtxnotifstatuscanif_readrxnotifstatuscanif_setpdumodecanif_getpdumodecanif_getversioninfocanif_setdynamictxidcanif_settrcvmodecanif_gettrcvmodecanif_gettrcvwakeupreasoncanif_settrcvwakeupmodecanif_checkwakeupcanif_checkvalidationcanif_gettxconfirmationstatecanif_cleartrcvwufflagcanif_checktrcvwakeflagcanif_setbaudratecanif_seticomconfigurationcanif_getcontrollerrxerrorcountercanif_getcontrollertxerrorcountercanif_enablebusmirroring回调函数
canif_triggertransmitcanif_txconfirmationcanif_rxindicationcanif_controllerbusoffcanif_confirmpnavailabilitycanif_cleartrcvwufflagindicationcanif_checktrcvwakeflagindicationcanif_controllermodeindicationcanif_trcvmodeindicationcanif_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,
进程模块
怎么就能构造成二叉树呢?
由python入c难,由c入python易?
初学者如何读懂电子商品的电路图
SDN网络热潮终于停歇 疯狂过后的理性部署
LG Gram展出采用了LG Display的可折叠OLED
AUTOSAR通信之CanIf模块简介3
各地环保政策趋严预计将加速PCB行业洗牌,份额将向龙头企业集中
柔性电路板生产过程中废物的排放,实施清洁生产的重点
请问运放产生噪声的原理是什么?怎么可以降低?
加强3D面部识别技能,欧司朗宣布收购美国Vixar公司
智能搀扶机器人的设计特点是什么
英国电信O2计划今年在英国5G移动频谱拍卖中获得的2.3Ghz频谱
浙江元宇宙政策发布,杭州灵伴科技打造工业AR新引擎
广东潮州引入RFID等技术对古城区进行改造
【树莓派】使用USB网络摄像头替代Raspberry Pi 相机模块
耳机需不需要一个功放
微导纳米募集资金10亿元将聚焦光伏、半导体两大赛道
我们未来的家将会是什么样的呢,一起来先睹为快吧!
美大学研究人员推出公共汽车的感应式充电技术
固化领域使用的UVA紫外线手电筒波长到底哪个好?