0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AUTOSAR的CAN通讯介绍

工程师邓生 来源:汽车电子与软件 作者:糊涂振 2022-09-20 18:09 次阅读

1、信号角度

从信号角度,主要想再说明下:信号在CAN总线上是电压形式,在软件中是二进制数,这是怎么转换的?信号在软件中是如何变化的?

1.1 数模转换

通过本系列前面文章,我们知道ECU之间通过CAN总线通讯。从信号转换角度:模拟信号到数字信号,比如接收,如图1所示。

其具体过程为:在CAN总线上,信号表现为电压形式,其具体值根据ISO11898和ISO11519标准的定义而来。然后电压信号经过CAN收发器转换成数字信号,即逻辑电平0和1。

接着这些逻辑电平序列将被ECU硬件单元处理,丢弃或存入寄存器。反之,发送过程其实就是一个数字信号到模拟信号的转换过程。

pYYBAGMpkbaASI61AABto10r2q0931.jpg


图1 CAN总线到ECU的信号转换

这里若需掌握各个环节的细节:

关于CAN总线特性,可通过ISO11898,ISO11519系列标准研究总线的电器和物理特性。

关于信号转换实现,可研究CAN收发器的原理与特性等。

关于寄存器存储,可细读相应的芯片手册,并动手去配置芯片和调试代码。

1.2 信号变化

上述的逻辑电平序列有什么规律?有什么作用?通过前面文章我们知道CAN协议标准定义了这些逻辑电平序列,使这些数据有了实际意义,其实就是一些数据帧,遥控帧等的信息

通过配置CAN硬件单元,比如利用IDE的数据就可以决定ECU是否接收某个CanId的数据,进而再准确将接收的相应数据存入相应的寄存器,比如IDE存入IDE相关的寄存器,DLC存入长度相关的寄存器。

当软件通过硬件接口访问相应的寄存器,就可以读取到对应的数据,比如长度,数据等信息。这样软件按照OSI参考模型的架构将这些读取的数据以协议数据单元(PDU)格式逐层向上传输,直到将PDU解包成报文通讯协议规定的信号形式,整个过程如下图2所示。

pYYBAGMpkc2AOeAhAAEH3lCZWwc387.jpg

图2 CAN通讯的信号变化过程 这里若研究各个环节的实现:

关于CAN帧定义,可细读CAN协议和ISO11898-1标准。

关于寄存器的存储与提取,可研究相应的芯片手册。

关于CAN通讯架构,可参考OSI参考模型,ISO17356和AUTOSAR文档等。

2、软硬件角度

从软硬件角度,要实现怎么样CAN通讯功能,就决定了要用怎样的硬件和软件。那么从软件工程师角度,是怎么看硬件?又是怎么看软件的?

2.1 硬件

从软件工程师角度,主要是根据芯片手册,ECU原理图和其他驱动的用户手册来助于对软件的理解,比如了解CAN的硬件连接,即从总线连接到哪个PIN,PIN连接到什么收发器,收发器连接到芯片的哪些引脚。或者了解提取寄存器数据,要对芯片进行的哪些配置,怎么配置等。或者更深入地就是硬件特性变化会对软件产生怎样的影响等等。

2.2 软件

从前面文章我们知道,先明确了一个清晰的软件架构,如下图3的中间部分,再从控制流和数据流考虑。若采用一个极其简单的架构,如图3最左侧部分,从寄存器提取完数据,直接给应用层去解析。

但这样的架构显然满足不了软件的安全性,可移植性,可重用性和可扩展性等要求,所以为了满足这些要求,会采用基于OSI参考模型的AUTOSAR架构,如图3最右侧部分,只允许CAN Driver 访问硬件,向上只对接CAN Interface,与上层的模块通讯均由CAN Interface统一管理,通过PduR路由到更多的上层模块,减少接口等等。

当然前面文章出于内容更易懂且精炼的考虑,采用了图3中间部分的基于OSI参考模型的AUTOSAR架构的简约版。

poYBAGMpkeKARYI8AAEYebpCsl0163.jpg

图3 CAN通讯的软件架构,引自[1]

这个软件架构的CAN通讯控制流如下图4所示。前面文章已经大体上介绍了CAN发送与接收的控制过程,比如不同模块如何进行数据传输,同一模块中数据传输所需具备的条件。另外也介绍了这些过程所涉及的接收通知,发送,发送确认的相关函数与动作。抽象地讲就是实现一个功能需先要以一定的时序组织不同的模块,然后各个模块要满足各自一定的条件才去采取执行某些活动,最后考虑这些活动如何具体地一步一步实施。

pYYBAGMpkfeADnLTAACpfpTaY_o486.jpg

图4

当然通过控制流不难发现,数据流也极其重要。基于OSI参考模型,协议数据单元(PDU)在不同的层会有不同的名字,比如数据链路层的PDU叫L-PDU,网络层的PDU叫N-PDU,交互层的PDU叫I-PDU。我们根据这些PDU和其他信息的映射关系,链接关系,就可构建起整个CAN通讯功能的数据流,类似于图5。

这样使得我们能更好理解AUTOSAR配置工具,比如VECTOR或EB工具配置内容的设置和链接关系;也能更深入AUTOSAR的CAN通讯实现原理与方法,比如硬件的访问机制,从L-PDU到N-PDU到I-PDU的映射逻辑等。

pYYBAGMpkhiANhFdAAEa6MWkdaY177.jpg
poYBAGMpkh6AYIbfAACwb_tsZB4456.jpg

图5 PDU的传输,引自[1]

这里若想研究软件的各个模块,可根据ISO11898-1, ISO17356-4和相关AUTOSAR文档。

3、功能视角

功能需求决定了硬件和软件,所以先看软件实现了怎么样的功能,然后再看软件具体是怎样实现的。正如目前文章介绍的只是最常见的CAN通讯发送与接收功能,没有考虑通讯错误的情况,也没有考虑总线关闭的情况。为了完善CAN通讯基本功能,也为了强化CAN通讯功能,下面将大概列举出来,也算是预告下后面文章的内容。

对于CAN通讯错误的情况,CAN协议标准定义了一套完成的错误处理机制。比如: 针对总线信号有定义错误帧,下图6所示。

poYBAGMpklaAFxaEAACbtXE-Z90093.jpg

图6 错误帧定义,引自[2]

针对总线通讯单元有定义主动错误,被动错误和总线关闭状态,如图7所示。


poYBAGMpkm-AWnXNAAC2D6I8YBs151.jpg

图7 单元的错误状态,引自[2]

针对CAN通讯网络有定义无通讯模式,静默模式,完全通讯模式,如图8所示。


poYBAGMpko6AGbw5AACW9wMVmUc358.jpg

图8 CanSM状态机,引自[3]

对于CAN数据帧数据长度不够的情况,有提出一种更灵活的CAN数据帧,即CANFD。


poYBAGMpkqqAYYLDAAFtK34PXDI366.jpg

图9 CANFD概念,引自[4]

对于CAN通讯网络能被唤醒的情况,如下图10所示。

pYYBAGMpksWAJiLMAACzt1uKLHA069.jpg

图10 具备唤醒的CAN网络示意,引自[5]

就先列出这些典型的CAN通讯功能,通过这些新功能不难发现:为了应对日益增加的功能需求,不管是针对个人还是企业,硬件还是软件,其实都需要不断地进行更新和强化。

到此我们就从3个视角既回顾了CAN通讯的基本发送与接收功能,也提出了CAN通讯的新功能,为了让大家更加全面且系统地了解CAN通讯功能,后面文章将在CAN发送与接收的主树干上继续生枝发叶。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 收发器
    +关注

    关注

    10

    文章

    2976

    浏览量

    104800
  • AUTOSAR
    +关注

    关注

    9

    文章

    330

    浏览量

    21138
  • can通讯
    +关注

    关注

    1

    文章

    23

    浏览量

    10646

原文标题:从3个视角谈CAN通讯

文章出处:【微信号:智能汽车电子与软件,微信公众号:智能汽车电子与软件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AUTOSAR架构中复杂驱动设计

    复杂驱动(Complex Driver,CDD)是一种不受 AUTOSAR 标准化约束的软件实体,它可以通过 AUTOSAR 接口和/或基础软件模块 API 进行访问 AUTOSAR 组件或者被
    的头像 发表于 12-21 10:13 953次阅读
    <b class='flag-5'>AUTOSAR</b>架构中复杂驱动设计

    AUTOSAR架构下的多核通信介绍

    随着汽车ECU迅速的往域控制器方向发展,ECU要处理的任务越来越多,单核CPU的负载越来越大,多核ECU势在必行。AUTOSAR架构下OS支持多核处理,本系列文章将详细介绍AUTOSAR架构下的多核机制。本文
    的头像 发表于 11-13 09:24 799次阅读
    <b class='flag-5'>AUTOSAR</b>架构下的多核通信<b class='flag-5'>介绍</b>

    AUTOSAR CAN时钟同步问题

    请问有没有AUTOSAR CAN时钟同步的能运行的代码,或者有没有能做这一块的大佬,主要是CanTsyn和STBM这两个模块的。有偿,价格都好商量,急需。
    发表于 11-09 00:00

    AUTOSARCAN信号是如何触发COM回调的呢?

    AUTOSAR中,COM模块提供了两种机制来处理接收到的PDU:ComRxPduCallout和ComNotification
    的头像 发表于 11-01 10:26 753次阅读
    <b class='flag-5'>AUTOSAR</b>中<b class='flag-5'>CAN</b>信号是如何触发COM回调的呢?

    AUTOSAR经典平台介绍

    经典平台(AUTOSAR CP) AUTOSAR经典平台(AUTOSAR CP)是AUTOSAR软件架构的一种实现,旨在提供一种标准化的方法来开发和管理汽车电子系统的软件。
    的头像 发表于 10-27 15:30 930次阅读
    <b class='flag-5'>AUTOSAR</b>经典平台<b class='flag-5'>介绍</b>

    基于Tricore芯片的AUTOSAR架构下的多核启动

    随着汽车ECU迅速的往域控制器方向发展,ECU要出来任务越来越多,单核CPU的负载越来越大,多核ECU势在必行。AUTOSAR架构下OS支持多核处理,本系列文章将详细介绍AUTOSAR架构下的多核机制。本文
    的头像 发表于 10-23 10:15 1237次阅读
    基于Tricore芯片的<b class='flag-5'>AUTOSAR</b>架构下的多核启动

    CAN与RS485通讯详解

    网络搜集的关于CAN与485通讯两种通讯方式的详细解释。
    发表于 09-26 17:02 17次下载

    AUTOSAR中通信协议栈配置详解

    通讯协议栈几乎是CP AUTOSAR中最庞杂的一块。由于其涉及的模块比较多(仅实现CAN信号的收发就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP这么多模块的协
    的头像 发表于 09-21 10:02 2399次阅读
    <b class='flag-5'>AUTOSAR</b>中通信协议栈配置详解

    一文解析AUTOSAR CAN网络管理

    AUTOSAR CAN 网络管理是一个独立于硬件的协议,只能在 CAN 上使用。它的主要目的是协调网络的正常运行和总线休眠模式之间的转换。
    的头像 发表于 09-09 10:32 2704次阅读
    一文解析<b class='flag-5'>AUTOSAR</b> <b class='flag-5'>CAN</b>网络管理

    详解CAN总线的AUTOSAR网络管理报文

    官方一点: AUTOSAR 就是AUTomotive Open System ARchitecture的简称,中文翻译就是汽车开放系统架构。
    的头像 发表于 07-31 11:27 2936次阅读
    详解<b class='flag-5'>CAN</b>总线的<b class='flag-5'>AUTOSAR</b>网络管理报文

    车载AUTOSAR中gPTP协议介绍

    AUTOSAR中gPTP协议介绍 相比IEEE802.1AS规范中定义的gPTP协议,AUTOSAR组织结合车载网络应用场景针对其部分内容也做了进一步限制与约束,以便能够更加灵活应用,降低整个系统
    的头像 发表于 07-24 10:39 1998次阅读
    车载<b class='flag-5'>AUTOSAR</b>中gPTP协议<b class='flag-5'>介绍</b>

    介绍一下AUTOSAR各个软件层之间交互的接口

    AUTOSAR中有三种类型的接口,分别是:AUTOSAR接口,标准化AUTOSAR接口和标准化接口。
    发表于 07-08 16:48 2841次阅读
    <b class='flag-5'>介绍</b>一下<b class='flag-5'>AUTOSAR</b>各个软件层之间交互的接口

    介绍一下AUTOSAR各个组件之间用来交换数据的基础

    AUTOSAR中,应用程序被设计为相互连接的SWC组合。虚拟功能总线是这些SWC互相交互的通讯机制。
    的头像 发表于 07-08 16:45 1520次阅读
    <b class='flag-5'>介绍</b>一下<b class='flag-5'>AUTOSAR</b>各个组件之间用来交换数据的基础

    一文入门AUTOSAR OS

    Autosar Os 在Autosar 框架中上至RTE 下至驱动,中间可以和BSW 基础模块进行交互。是整个autosar 框架下最重要的组成部分。
    的头像 发表于 06-29 10:34 2646次阅读
    一文入门<b class='flag-5'>AUTOSAR</b> OS

    C#:CAN通讯上位机的简单示例

    写在前面:前几周刚刚学习控制CAN通讯电机时过得很痛苦,网上很难找到很基础的资料和控制办法,最后通过逐字逐句看Kvaser的例程、别人的程序终于摸索明 白,现将基础步骤整理出来供大家交流
    发表于 05-29 16:14 10次下载
    C#:<b class='flag-5'>CAN</b><b class='flag-5'>通讯</b>上位机的简单示例