AUTOSAR CP架构通信篇——Can通信概念明白

打印 上一主题 下一主题

主题 516|帖子 516|积分 1548

从传统的软件方向换到车企底软每个东西都是自己不懂的,所以最近也挺充实的。拿最底子的Can通信来说,耳熟能详的东西,让我来讲透彻却是个问题,所以尽量记载一些东西。
ps: Can本身是什么,帧结构等,自有大佬们写的够多了,我作为嵌软的小白主要记载记载,也不想写一些大而空的东西。
前言感想可以跳过

  1.     最近刚结束一个Can通信方面的小功能,使用的DaVinci的工具链,靠着大佬同事勉为其难完成。
  2.     其实单纯功能很简单,只是感觉自己对Can这方面的内容模棱两可,对工具链的使用也含糊不清,因此做的磕磕绊绊。
  3.     只能说希望这篇文章能够帮助同学们少走弯路,尽快成长,诸君共勉。
复制代码
Can通信团体结构

在搜索Can通信模块的时间,网上资料五花八门,有讲应用报文的,有讲诊断报文的,有讲网络管理报文。其中涉及Can、CanIf、CanTp、PduR、CanNm等等模块,让我们这些小白选手头晕脑胀的,实在Can通信涉及的模块不止如此就实现Can信号的收发就还必要CanSM、ComM、EcuC模块。很难建立一个团体概念,所以这里我主要展示一些团体概念性的东西。
信号流转路径取决于报文类型


下面的差别报文可以在此图上找到相应路径(主要多看看图)。
应用层报文

应用层TX报文:Hardware→Can→CanIf→PduR→Com→RTE→ASW。
应用层RX报文: 取相反。
诊断报文

诊断TX报文:
Hardware→Can→CanIf→CanTP→PduR→DCM
网络管理报文

网络TX报文:
Hardware→Can→CanIf→CanNM
XCP报文

XCP TX报文:
Hardware→Can→CanIf→XCP-PL
Can底层内容

主要对CanIf下的Can网络结构有简单的概念,在CanIf下主要流畅是CanIf→Can Driver→Can Controller→Can Transceiver→Can Bus line。

Can Driver

插一张从Austosar规范中整下来的图,发起去直接看看规范,毕竟网上每个人对规范的明白都差别。

CAN Driver主要是举行CAN报文级别的收发信。唯一上层为CanIf。Can Driver独立于硬件提供用于启动传输的服务,并调用CanIf模块的回调函数来通知事件。多个CAN Controller可以由一个CAN Driver控制,只要它们属于同一个CAN硬件单元。
Can Driver 状态机

Can驱动模块有个非常简单的状态机,只有两种状态CAN_UNINIT和CAN_READY。

在上电或者重置的时间,状态为CAN_UNINIT,初始化硬件单元内的全部控制器后,通过Can_Init函数应将模块状态更改为CAN_READY。Can_DeInit函数在取消初始化硬件单元内的全部控制器之前将模块状态更改为CAN_UNINIT。
(内容可真多啊,我想回头单独写一个分析分析CAN Driver的功能和主要API另有接口依靠。这边不太想写了,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表