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

在这里插入图片描述

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,备注:车载。")
  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值