CAN Driver

news/2024/5/20 4:03:50 标签: CAN, MCAL, EB

CAN Driver

前言:CAN驱动针对的是微控制器内部的CAN控制器,它可以实现以下功能:

CAN控制器进行初始化;

发送和接收报文;

对报文的数据和功能进行通知(对接收报文的指示、对发送报文的确认);

溢出和错误处理;

唤醒检测。

此外,CAN驱动还具有以下特性:单个或多个CAN通道、CAN驱动的多重实例化、对接收报文的中断/轮询模式。

CAN驱动是MCAL的一部分,可以执行硬件访问、向上层提供独立于硬件的API,而仅有的能够访问CAN驱动的上层是CAN接口(CAN Interface)。CAN驱动也可以为数据传输的初始化和通知接收事件的回调函数提供服务,该服务也是独立于硬件的。除此之外,CAN驱动也可以控制从属于同一个CAN硬件单元的CAN控制器的行为和状态。

在工具EB tresos studio(下文称EB)下,以“simple_demo_can_rte “工程为例,该工程所用MCU型号为S32K144(pin100),工程在EB工具下打开页面如图1,配置AUTOSAR MCALCAN驱动配置,涉及CAN、PORT、MCU模块相关内容。

图1:EB工程概览

1.  PORT模块配置CAN

1.1  CAN PORT 容器

如图2左下角outline窗口所示,在PortContainer的实例PortContainer_0中有PortNumberOfPortPins和PortPin两项,前者是PortPin数量后者为Port具体配置项。

图2:PortPin配置

1.2  CAN PORT 配置

如添加配置CAN0,如图2中在红框1处PortNumberOfPortPins加2,红框2处,点击添加Port配置实例。双击打开新增实例,一般需要配置下列四处红框标识处即可,其中

PortPin Pcr这个的值就是当前你所使用的引脚的MSCR number,在芯片的用户手册附件可查(图4),每一个引脚都有对应的值。选择正确的PCR值后PortPin Mode的枚举中就会有对应的选项出现。图4为CAN0_TX脚配置,CAN0_RX按照同样逻辑配置。

图3:CAN PortPin配置

图4:IO Signal Table

2.  设置CAN模块

图5:CAN 控制器配置

2.1  添加CAN控制器实例

点击图5所示outline窗口的CanConfigSet->CanController,如图所示主窗口点击箭头所指的加号添加控制器实例,双击实例进入配置页面。

图6:CAN控制器配置页面1

图7:CAN控制器配置页面2

2.2  一般配置项

如图6主要需要设置的项有硬件CAN通道选择,收、发、busoff工作方式选择,图7红框1处CAN波特率配置,红框2处CAN时钟配置。

2.3  波特率配置方式

图8:CAN波特率配置1

图9:CAN波特率配置2

图10:CAN波特率配置3

按照计划的波特率填入prop_seg、seg1、seg2等值。

    1.  CAN时钟源参考点配置

CAN时钟源可选择项在MCU模块的McuClockReferenePoint下选择,路径和添加步骤如图11所示,可以直接选择合适的时钟频率或者重新添加。点击图11的2处并双击进入图12所示页面,选择1处时钟源后点击2处图标会自动显示该时钟源大小。

图11:CAN时钟配置1

图12:CAN时钟配置2

    1.  引用配置实例

上述配置完成后,回到CAN控制器配置处,点击图13箭头所示图标,点击List referenceable nodes工具会列出可选项,从中选择需要的即可。

图13:左侧图标功能菜单

    1.  mailbox设置

按照图14添加mailbox实例并双击进入如图15所示配置页面,一般所需配置项如图红框所示,收、发、CANID过滤配置,CAN控制器配置如图13所示同样的方法,索引到合适的CAN控制器配置。

图14:mailbox设置路径

图15:mailbox配置


http://www.niftyadmin.cn/n/5031331.html

相关文章

面试题:有了 for 循环 为什么还要 forEach ?

文章目录 **本质区别****for循环和forEach的语法区别****for循环和forEach的性能区别** js中那么多循环,for for…in for…of forEach,有些循环感觉上是大同小异今天我们讨论下for循环和forEach的差异。我们从几个维度展开讨论: for循环和fo…

AntX6 DAG拖拽流程图:从0到1实现流程图05-连接桩篇

开始 很多图形都有连接桩的概念,连接桩是节点上固定的点,常用于连线。连接桩的使用方式非常灵活,本文只介绍最佳实践。 实现 连接桩定义 首先来看一个节点四周中心各一个连接桩的节点配置: javascript复制代码graph.addNode({ports:{groups: {group1: {position: top,…

华为云 云耀云服务器L实例评测|使用宝塔一键部署自己专属网站

文章目录 引言写在前面的话华为云云耀云服务器L宝塔控制面板 操作步骤购买和开通服务器登录服务器重置密码远程连接服务器 使用bt命令查看宝塔面板和默认信息安全规则放行宝塔面板端口号访问宝塔面板页面使用宝塔面板一键部署网站依赖环境安装一键部署网站数据库名称、数据库账…

type和interface的异同?

type和interface是TypeScript中用于创建自定义类型的关键字,它们有以下异同点和使用方式: 相同点: 都可以用来定义对象、函数、联合类型等自定义类型。都可以被扩展和继承。都可以描述对象的结构,包括属性的类型和可选性。 不同点…

外包干了2个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

03_ElasticSearch下载安装

概述 ElasticSearch是java开发的,jdk环境是必不可少的,至少有jre环境 1 下载ElasticSearch 最新版本需要访问 ElasticSearch 官网下载:https://www.elastic.co/cn/downloads/elasticsearch, 其他版本见Elastic 中文社区&#…

【嵌入式】2024届校招岗位汇总

公司岗位博世嵌入式自动化测试工程师博世嵌入式开发(软件刷写及启动)工程师博世Linux/C软件工程师博世自动驾驶软件开发工程师博世嵌入式软件工程师(BSP)博世嵌入式电子工程师 (BMS&电源)博世物联网嵌入式开发工程师 &#xf…

深入Android系统基础知识及基本概念

深入Android系统基础知识及基本概念 Android应用程序的基本组成部分,包括Activities(活动)、Services(服务)、Broadcast receivers(广播接收器)和Content providers(内容提供者&…