前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CAN通信协议栈(一) 之框架

CAN通信协议栈(一) 之框架

作者头像
xbai921031
发布2022-05-25 14:54:54
2.8K0
发布2022-05-25 14:54:54
举报
文章被收录于专栏:汽车软件工程师

CAN(Controller Area Network)是汽车电子中应用最广泛的一种通信总线。就目前笔者所接触到的开发模式,都是从EB或者Vector公司买来软件包进行配置,然后自动生成这部分代码,也就是说手写的不多。虽然不需要手写代码,但是基本的框架和思想还是要知道的,不然很可能出现即使有工具也配不出来的情况。

1 CAN通信协议的概念

在AUTOSAR框架下,CAN通信协议栈位于运行时环境(RTE)和微控制器抽象层(MCAL)之间,以实现应用层和底层之间的数据交互,总体框架如下图所示:

图1 CAN协议栈架构

(1)CAN Driver:硬件相关,CAN驱动

(2)CAN IF:CAN Interface,主要实现驱动和上层之间联系的接口

(3)CAN TP:CAN Transport Protocol,负责CAN报文的组包拆包

(4)PDUR:PDU(Protocol Data Uint),PDU路由器,起路由作用。 CAN的通信消息分为3种,App报文、NM报文和诊断报文,PDUR将接收到的App报文和诊断报文区分开来,分别发给 COM模块和DCM模块

(5)COM:服务层通信,COM层就是负责App报文通信的

(6)DCM:诊断通信模块

2

通信过程

数据发送:

图2 CAN总线数据发送示意(图源:Vector)

(1)COM层收到应用层信号(Signal),写入PDU Buffer

(2)PDUR将PDU发送至Interface相应通道

(3)Interface再把数据发送到CAN驱动,最终实现数据发送

数据接收:

图3 CAN总线数据接收示意(图源:Vector)

(1)CAN Driver发出Rx中断,数据被传输到Interface

(2)Interface传给PDUR

(3)PDUR把数据传给COM层,最终通过RTE层传给应用层

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击的程序喵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档