编辑推荐: |
本文主要对AutoSAR
CAN通讯过程、PDU、 基于AutoSAR CAN通讯数据流等相关内容的介绍。
本文来自于微信底蕴底盘,由火龙果软件Alice编辑、推荐。 |
|
01基于AutoSAR CAN通讯过程简介
随着汽车电子化与自动驾驶的发展,AutoSAR汽车开放式系统架构得到越来越多的重视与应用。继之前对AutoSAR进行简介之后,本文进一步深入对基于AutoSAR的CAN通讯进行介绍。
如下图1所示为常见AutoSAR基础框架,其中红框部分为与通讯相关的部分,包括LIN、CAN、Eth等。
图1 AutoSAR基础框架
CAN总线通讯取消地址编码的方式,采用消息编码的方式,总线上各个节点都能收到总线发出的消息。各个节点根据ID判断是否为自身所需要的消息进行接收。总线到应用层之间的消息传递以及数据转换过程如下:
1、总线上只能传递高低电平的物理信号,CAN收发器(软件上包含CAN Driver,CAN transceiver,Driver
for CAN ASIC)将总线传递过来的差分电平转换为逻辑电平(TTL电平)(发送时相反)生成二进制码流;CAN收发器将二进制码流发送给CAN控制器(软件上包含CAN
Interface)。(数据链路层)
2、CAN控制器将在二进制码流的基础上生成CAN帧(CAN帧最大传输数据为8byte,此处不详细介绍CAN帧结构以及种类),同时进行位填充、添加CRC校验、应答检查等操作(发送时类似)。(网络层)
3、通讯服务在收到下层传递过来的CAN帧消息之后进行解析提取、处理CAN帧中包含的信号,通过路由转发给需要的模块。(交互层)
02 PDU简介
在介绍完基本数据流向之后,介绍一个重要概念:PDU。PDU是AutoSAR通讯过程中一个重要的概念,全称:协议数据单元(protocol
data unit),是数据传输的基本单位。在不同的架构层有不同的PDU分为以下几种:
I-PDU(交互层)
N-PDU(网络层)
L-PDU(数据链路层)
PDU包含PCI和SDU两部分,PCI包含源地址和目标地址信息,SDU是数据信息。如下图2所示为PDU基本组成。
图2 PDU组成
03 基于AutoSAR CAN通讯数据流
接下来结合具体AutoSAR模块进行详细数据流介绍。如图3所示为通讯数据流,其中红色方框中为CAN通讯数据流;图4为不同的架构层对应的协议数据单元以及对应的AutoSAR模块及对应的CAN帧。
图3 通讯数据流
图4
CAN通讯数据流如下:
1、在CAN Driver收取Bus上传来的信号电平之后生成L-PDU,L-PDU传输至CANIf;
2、CANIf生成CAN帧,生成N-PDU。此时CANIf判断CAN帧的传输方式(单针传输/连续帧传输)。当为单帧传输时,N-PDU传输SF(single
frame),如下图5所示:
图5 单帧传输
当无法利用单帧传输时,需要多帧传输。在多帧传送方式中,网络层根据需要,将数据进行拆分成一个首帧(FF:First
Frame)和多个连续帧(CF:Consecutive Frame)。首帧包含了分段数据的总长度信息以及一些数据帧;每个连续帧的第一个字节都包含拆分的顺序编号,后面的七个字节用于存放数据。接收端在接收到连续帧后根据接收数据帧的编号重组服务数据。如下图所示:流控制帧(FC:Flow
Control)向发送端传递接收端的接收及响应能力,即最多能够接收多少连续帧以及响应时间STmin等。
图6 多帧传输
3、N-PDU传输到CAN TP经过如上图过程,生成由单帧或组合帧组成的I-PDU。
4、I-PDU进入PDUR进行分配,根据地址信息(PCI)将进入COM模块的I-PDU传入COM。(PDUR:给PUD提供路由功能,通过地址信息分配到不同的目标地)
5、COM对I-PDU的数据信息SDU进行解析,生成signals,signals通过RTE传输给应用层。
CAN消息发送过程与接收过程相反。
图7 接收与发送过程
以上就是基于AutoSAR架构的CAN通讯简介,相关的诊断刷新功能也是在通讯功能的基础上进行扩展的。 |