目录
概述
随着汽车智能化、网联化的快速发展,CAN总线作为汽车内部通信的核心技术,扮演着举足轻重的角色。AUTOSAR(AUTomotive Open System ARchitecture)作为汽车软件架构的开放标准,为汽车软件的模块化、标准化和可重用性提供了强有力的支持。在AUTOSAR框架下,CAN通信的收发流程不仅关系到数据的准确传输,更关乎整个汽车系统的稳定性和安全性。
本文主要介绍CAN自下而上以及以上而下在AUTOSAR架构下的通信流程。
一、框图
二、发送流程
1.应用层SWC通过调用Rte_write接口,将数据传到Rte层。
2.Rte层调用COM层的Com_SendSignal()将数据传至COM层。
3.COM层将Rte层发过来的数据存入缓存,等待发送。
4.BSW将会周期性的调度Com_MainFunctionTx(),并通过PduR_ComTransmit()将数据传递给PDR模块。
5.PDUR模块通过CanIf_Transmit()将数据传递给CAN IF模块。
6.CAN IF在通过调用Can_Write()将数据写入寄存器。
7.CAN Driver将对硬件进行访问,并将数据转换为适合CAN控制器处理的格式及打包CAN帧,包括标识符,数据和检验码等传递给CAN控制器。
8.CAN控制器根据接收帧中的信息控制CAN总线的物理层接口(及CAN收发器)来发送数据。
9.CAN收发器会解码并转换CAN控制器传递过来的数据为适合物理层传输的电平信号。
三、接收流程
1.CAN收发器接收来自总线的物理信号,它会将其解码并转换为数字信号。
2.CAN控制器处理CAN收发器接收转换后的数字信号以供CAN Driver访问。
3.BSW周期性调度Com_MainFunctionRX()函数,在函数中检查是否有新接收的数据CAN控制器,并访问控制器的相关寄存器,读取寄存器中接收到的数据。
4.数据接收完成后通知CANIF层并调用CANIf_RxIndication()函数,将数据传递到CAN IF模块。
5.CAN IF模块调用PDUR中的PduR_RxIndication函数,将数据传递到PDUR模块。
6.PduR模块通过调用COM模块中的Com_RxIndication()通知函数,将数据传递到COM模块,COM会将接收到的数据存入缓存。
7.Rte模块通过Com_ReceiverSignal()读取COM中的缓存数据
8.应用层通过Rte的Rte_Read()函数读取数据。
总结
在Autosar架构中,应用层到硬件CAN数据的传递过程是一个精心设计和协同工作的结果。它确保了数据在复杂的汽车系统中能够准确、高效地传输,满足了汽车通信的实时性和可靠性要求。
通过以上内容的学习,希望对初学者有所帮助,不足之处,还请多多指点。