• 202查看
  • 0回复

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

[复制链接]


该用户从未签到

发表于 11-4-2024 20:17:29 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


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模块将会把数据存入其缓存,供应用层软件读取使用。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 3-3-2025 12:48 , Processed in 0.503436 second(s), 33 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.