【AUTOSAR COM 3.信号的收发流程TX/RX】

在这里插入图片描述
本系列文章的主题是CAN通讯,即属于通讯功能,对该功能再按模块细分,如下图3所示。其中CAN通讯的核心模块有4个:COM模块,PDU Router模块, CAN Interface模块和CAN Driver模块

从整个Com通信结构上看我们可以发现:

对于CAN Driver来说,与上层模块通讯的唯一接口就是CAN接口模块,通过这个模块可实现我们熟知的3个ECU通讯功能:

CAN通讯,通过接口层到PDU Router模块;(路径:CanDrv–CanIf–PduR–Com)
UDS服务,通过接口层到CANTp模块;(路径:CanDrv–CanIf–CanTp–PduR–Dcm)
XCP服务,通过接口层到XCP模块。(路径:CanDrv–CanIf–XCP)

1.Can的接收

回顾之前文章 menghuyouyou:根据ISO 11898-1标准可知, CAN接收功能需要使用通知(Indication)服务,那么怎么基于AUTOSAR架构实现呢?总的来说,AUTOSAR架构的CAN接收的软件实现流程图如下图4所示:
在这里插入图片描述
BSW调度器周期性调用CAN Driver模块的Can_MainFunction_Read函数;

CAN Driver模块的Can_MainFunction_Read函数将访问CanController(硬件)的寄存器,如前面文章所述的仲裁寄存器,数据寄存器和数据长度寄存器,并读取这些寄存器的数据

数据读取结束后,这时继续调用CAN Interface模块的CanIf_RxIndication函数,这样数据从CAN Driver模块传给了上一层的CAN Interface模块;

CAN Interface模块再调用PduR模块的PduR_RxIndication函数,将数据传到PduR模块;

PduR模块路由到Com模块,调用Com_RxIndication函数,将数据传到Com模块,Com模块将会把数据存入其缓存,供应用层软件读取使用。

另外再根据ISO 11898-1标准说明本文及之后内容,如下图5的红线之上部分。上述的4个核心模块,除了CAN Driver能够访问或配置硬件,其他模块均不能。它们之间将通过数据协议单元(PDU)形式实现数据传输,这些内容后面文章会进行详细介绍。

在这里插入图片描述

2.Can的发送

CAN发送功能需使用请求(Request)服务和确认(Comfirmation)服务,AUTOSAR架构的CAN发送功能如下图6、7所示。

在这里插入图片描述
BSW调度器周期性调用Com模块的Com_MainFunction_Tx函数,Com模块将从其缓存器中读取需发送的数据;

Com模块的Com_MainFunction_Tx函数将调用PduR模块的PduR_ComTransmit函数,将数据传给PduR模块;

PduR模块路由到CAN Interface模块,调用CanIf_Transmit函数,这样数据从PduR模块传给了下层的CAN Interface模块;

CAN Interface模块再调用Can Driver模块的Can_Write函数,将数据写入相应的寄存器;

与CAN接收功能一样,Can_Write函数将访问仲裁,数据长度和数据寄存器,将数据写入。

图7描述了数据发送后的确认过程,即:

BSW调度器周期性调用CAN Driver模块的Can_MainFunction_Write函数;

CAN Driver模块的Can_MainFunction_Write函数将访问CanController(硬件)有关寄存器,读取有关数据供向上层确认;

数据读取结束后,这时继续调用CAN Interface模块的CanIf_TxComfirmation函数,这样数据从CAN Driver模块传给了上层的CAN Interface模块;

CAN Interface模块再调用PduR模块的PduR_TxConfirmation函数,将数据传到PduR模块;

PduR模块路由到Com模块,调用Com_TxConfirmation函数,确认发送状态。

在这里插入图片描述

  • 5
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值