AUTOSAR CAN Driver模块(3)--功能描述“L-PDU的接收”

本文介绍了AUTOSAR CAN驱动中LPDU的接收流程,包括CAN模块如何调用回调函数传递接收信息,以及在接收数据一致性方面,如FIFO和“影子缓冲”的使用,以防止报文丢失。同时讨论了硬件对象的配置和错误处理,如‘复写’和‘溢出’事件的检测与上报。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

LPDU的接收

接收数据一致性


传送门==>《AUTOSAR黑神话之总目录(持续更新)_大表哥汽车人的博客-优快云博客


 

LPDU的接收

SWS_Can_00279,LPUD的接收,需要CAN模块调用RX回调函数CanIf_RxIndication,参数MaiBox中应包括:ID,Hoh,抽象的CANIF ControllerId;参数PduInfoPtr应包括:数据长度,LSDU缓冲的指针。
SWS_Can_00423,对于扩展帧,CAN模块应转换ID到标准格式,因为CANIF不知道接收到的CAN报文是标准帧还是扩展帧,接受到的CAN报文ID的MSB需要当作“1”来作为CAN扩展帧的掩码。
SWS_Can_00396,RX中断服务或轮询模式下的Can_MainFunction_Read都应调用CanIf_RxIndication回调函数。

SWS_Can_00060,数据映射到内存:收到的第一个字节为数组的元素0,收到的最后一个字节为元素7或63(CANFD)

如果CAN硬件缓冲内部表达有别于AUTOSAR定义,需要CAN模块提供合适的SDU缓冲给上层模块。

SWS_CAN_00501,CanDrv应标明收到的报文时传统的CAN报文还是CANFD报文,这在Can_IdType中有所描述。

接收数据一致性


为了防止接收报文的丢失,一些控制器通过一组硬件对象组成FIFO,同时其他一些控制器有能力去配置另一个同属性的硬件对象来作为“影子缓冲”,在主硬件对象忙时才介入。

SWS_CAN_00489,CAN驱动应支持控制器FIFO,FIFO的尺寸由“CanHwObjectCount”进行配置。

SWS_CAN_00490,不支持FIFO的控制器应有“影子缓冲”的机制,当主硬件对象忙时,附加的硬件对象才接手。硬件对象的数量通过“CanHwObjectCount”来配置。

 SWS_Can_00299,如果RX缓冲不能被CAN硬件进行保护(锁住)以防止被新接收的报文所复写,那么CAN模块在接收之后应拷贝LSDU到一个“影子缓冲”。

SWS_Can_00300,如果CAN硬件不是全局可访问的,那么CAN模块应拷贝LSDU到一个“影子缓冲”中。
完整的RX过程(包含拷贝到目标层,例如COM)在RX中断中或Can_MainFunction_Read中完成。

SWS_Can_00012,须保证ISR或Can_MainFunction_Read都不可被自己所打断。

如果硬件没有配置为接收后“锁定”,那么有可能硬件缓冲会被新接收的报文所复写,那么CAN控制器应该检测到一个“复写”(overwrite)事件。

如果硬件配置为接收后“锁定”,那么新到达的报文可能会被抛弃掉,这种情况下,CAN控制需检测到一个“溢出”(overrun)事件。
SWS_Can_00395,如果默认错误检测使能,那么CAN模块应在检测到“复写”或“溢出”事件后上报一个CAN_E_DATALOST错误。

提示:

系统设计人员应保证报文接收(中断或轮询)的运行时间与系统中最快的接收相关。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大表哥汽车人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值