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,备注:车载。")
  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AUTOSAR,CAN协议栈COM模块主要负责CAN通信的上层协议处理。COM模块实现了自动识别和配置CAN网络的所有ECU,并且支持多种CAN通信模式,如周期性发送、事件触发发送、远程请求和诊断等。 下面是CAN协议栈COM模块的详细介绍: 1. 总体架构 CAN协议栈COM模块的总体架构如下图所示: ![image-20211014165955845](https://gitee.com/wu_xiaoshi/blog_img/raw/master/img/20211014170001.png) 2. 模块功能 - 支持CAN通信的上层协议处理,如UDS、J1939等。 - 自动识别和配置CAN网络的所有ECU。 - 支持多种CAN通信模式,如周期性发送、事件触发发送、远程请求和诊断等。 - 支持CAN网络的故障诊断和错误处理。 - 支持对CAN消息的过滤和控制。 - 提供API接口,方便应用层进行CAN通信的控制和管理。 3. 模块组成部分 CAN协议栈COM模块由以下几个部分组成: - PDU Router:用于将不同的PDU映射到不同的CAN ID上,并进行CAN帧的发送和接收。 - Routing Table:用于存储PDU与CAN ID之间的映射关系。 - Transmission Handler:用于处理发送PDU的请求,包括周期性发送、事件触发发送等。 - Reception Handler:用于处理接收到的CAN帧,并将其转化为对应的PDU。 - Diagnostic Handler:用于处理CAN网络的诊断和错误处理。 4. 模块接口 CAN协议栈COM模块提供了以下几个API接口: - Com_Init():初始化COM模块。 - Com_DeInit():关闭COM模块。 - Com_SendSignal():发送信号到CAN总线上。 - Com_ReceiveSignal():接收CAN总线上的信号。 - Com_SendPdu():发送PDU到CAN总线上。 - Com_ReceivePdu():接收CAN总线上的PDU。 - Com_MainFunction():主函数,用于处理COM模块的各种任务。 5. 应用场景 CAN协议栈COM模块通常应用于车辆电子控制系统,用于实现车内各个ECU之间的CAN通信。在汽车电子控制系统,CAN网络通常用于传输各种控制、监测和诊断信息,如发动机控制、车身控制、仪表盘显示、车载娱乐系统等。CAN协议栈COM模块可以方便地处理这些信息,并且支持多种CAN通信模式,保证了CAN网络的可靠性和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Kevin的学习站

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

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

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

打赏作者

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

抵扣说明:

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

余额充值