AUTOSAR架构的CAN通讯学习(二)——CAN Driver

本文是针对如下链接文章的学习笔记:
https://mp.weixin.qq.com/s?__biz=MzUyODA2MjkyNA==&mid=2247490064&idx=1&sn=638103e9fe5f073f636e84ba71b1a3f1&chksm=fa775ab3cd00d3a5615ddf74864ee5b22851c0f4b3758bb870358186272397d1a94d98a4ee47&scene=178&cur_album_id=1584282669947912193#rd

1、协议数据单元(Protocol Data Unit, PDU)
PDU包括协议控制信息(Protocol Control Information,PCI)和服务数据单元(Service Data Unit, SDU)。

PDU不仅仅是数据(SDU),还携带了来自哪要去哪的信息(PCI);每到哪都会删掉之前的信息,添加这是哪要去哪的信息(不同层的PCI更新)

2、L-PDU
如图1,针对OSI参考模型,会根据不同的OSI层相应地给PDU添加前缀,在CAN模块中,数据链路层的PDU就叫L-PDU。
AUTOSAR架构的CAN通讯学习(二)——CAN Driver_第1张图片
图1

知识点补充:
ISO 11898-1定义了CAN的数据链路层和部分物理层,如图2。数据链路层具体可分为逻辑链路控制、媒介访问控制
AUTOSAR架构的CAN通讯学习(二)——CAN Driver_第2张图片
图2 ISO 11898的定位

如图3,其中LLC(逻辑链路控制)包括接受过滤、过载通知以及恢复管理;MAC层包括数据封装与解封、帧编码、介质访问管理、错误检测、序列及反序列。
AUTOSAR架构的CAN通讯学习(二)——CAN Driver_第3张图片
图3 ISO 11898包含的规范

在CAN的四个核心模块:CAN Driver模块、CAN Interface模块、PDUR模块、COM模块中,只有CAN Driver模块能够访问或配置硬件,其他模块均不能。它们之间将通过数据协议单元(PDU)形式实现数据传输,如图4。
AUTOSAR架构的CAN通讯学习(二)——CAN Driver_第4张图片
图4

3、Hth、Hrh:
针对写数据操作,CAN Interface模块调用Can_Write函数,其定义如图5:
AUTOSAR架构的CAN通讯学习(二)——CAN Driver_第5张图片图5
该函数中,参数Hth的定义:
用来存储写入数据的硬件对象就叫Hth;
(用来存储接收数据的硬件对象就叫Hrh)

每一个硬件对象都由ID,DLC和 SDU三部分组成,如图6。
AUTOSAR架构的CAN通讯学习(二)——CAN Driver_第6张图片图6
所以不难理解,Can_Write的输入参数Hth其实就是硬件对象的编号(id),而且实际上是已经定义好了硬件对象的编号与CAN ID的映射关系,比如图7所示,如果想发送CAN ID 为0x001的数据,那么调用Can_Write函数的输入参数Hth应该为4。
AUTOSAR架构的CAN通讯学习(二)——CAN Driver_第7张图片
图7

4、CAN Driver相关函数(部分):
Can_SetControllerMode()
Can_Init()
Can_MainFunction_Write()
Can_MainFunction_Read()
Can_Write()

你可能感兴趣的:(autosar学习,学习)