AUTOSAR中 CAN总线数据通过COM模块收发流程

发布时间:2024年01月03日

在这里插入图片描述

AUTOSAR中CAN总线数据通过COM模块收发流程

printf("欢迎关注公众号:车载嵌入式探索者,博主建立了一个车规级开发交流群,
感兴趣的朋友可以关注公众号,加个人WX:_kevin0123456789,备注:车载。")

1、AUTOSAR中 CAN总线数据通过COM模块发送流程

①、SWC会将数据发送给RTE层;
②、RTE层调用COM模块的Com_SendSignal()函数将数据发送至COM模块;
③、BSW任务调度器EcuM周期性的调用Com_MainFunctionTx()函数,Com模块将从其缓存器中读取需发送的数据打包成PDU格式;
④、Com模块的Com_MainFunctionTx()函数将调用PduR模块的PduR_ComTransmit()函数,将数据传给PduR模块;
⑤、PduR模块将不会对数据做任何处理,直接进行路由;PduR模块路由到CAN Interface模块,调用CanIf_Transmit()函数,这样数据从PduR模块传给了下层的CAN Interface模块;
⑥、CAN Interface模块再调用Can Driver模块的Can_Write()函数,将数据写入相应的寄存器;
⑦、与CAN接收功能一样,Can_Write()函数将访问仲裁,数据长度和数据寄存器,将数据写入。

2、AUTOSAR中 CAN总线数据通过COM模块接收流程

①、BSW任务调度器EcuM周期性的调用Can模块的接收函数Can_MainFunction_Read()函数;
②、在Can模块Can_MainFunction_Read()函数中检查所有潜在的新接收数据的Can控制器;将访问CanController(硬件)的寄存器—仲裁寄存器,数据寄存器和数据长度寄存器(保证读取数据的有效性),并读取这些寄存器的数据;即包括ID、 DLC、 SDU
③、数据读取结束后,这时继续调用CAN Interface模块的CanIf_RxIndication()函数,这样数据从CAN Driver模块传给了上一层的CAN Interface模块;
④、CAN Interface模块再调用PduR模块的PduR_RxIndication()函数,将数据传到PduR模块;
⑤、PduR模块路由到Com模块,调用Com_RxIndication()函数,将数据传到Com模块,Com模块将会把数据存入其缓存,供应用层软件读取使用。

printf("欢迎关注公众号:车载嵌入式探索者,博主建立了一个车规级开发交流群,
感兴趣的朋友可以关注公众号,加个人WX:_kevin0123456789,备注:车载。")
文章来源:https://blog.csdn.net/qq_44705488/article/details/135374636
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。