SemiDrive E3 MCAL 开发系列(2) – Port Dio 模块的使用

news2025/2/25 21:31:11

一、概述

本文将会介绍如何导入  SemiDrive E3 系列 MCU 的 MCAL 配置工程以及介绍 Port 和 Dio 模块的基本配置,并且会结合实际操作的介绍,帮助新手快速了解并掌握这两个模块的使用,文中的 MCAL 是基于 PTG3.0 的版本,开发板是官方的 E3640 网关板。

二、MCAL 配置工程的导入

首先打开 EB 软件,导入 E3 的 MCAL 配置工程 ,本文介绍的 E3 的配置及实操是基于 SemiDrive 的 E3640 网关板,导入的 MCAL 配置工程路径如图 2.1 所示,其具体操作流程如图 2.2 所示。

 


 

                                                                    图 2.1 E3 MCAL 配置工程路径

 


 

                                                                           图 2.2 导入EB 配置工程
 

导入完 MCAL 配置工程之后可以点击 “generate project”的按钮生成配置代码,点击后会有提示框提示错误和警告的数量,如果没有错误,则配置代码生成成功。

 


 

                                                                           图 2.3 生成配置代码

三、Port 模块的主要配置

Port 模块主要用于配置每个引脚的功能,包括引脚的功能复用、上下拉配置、驱动电流、引脚方向、是否使能引脚中断等等。

关于 Port 模块的配置流程,首先双击 Port 这个模块,EB 会显示 Port 模块的配置界面,如图 3.1 所示,Gerneral 部分主要配置是否使能对应的 API 以及是否使能输入引脚中断检测。PortContainer 则是针对每组 Port 引脚进行配置,主要是引脚数量的填写,要和实际配置的引脚数量保持一致。我们后面的实际操作需要使用到中断检测,因此需要勾选上 “PortSetPinINTDetect”这个选项。

 


 

                                                                                图 3.1 Port 模块配置界面
 

接着针对每个 Port 引脚进行具体的配置,配置界面及主要配置项的功能如图 3.2 所示,这里我们配置 E25 和 E26 两个引脚,一个配置为输入引脚、一个配置为输出引脚,具体配置如图中的红框所示。这里我们 E25 引脚的中断配置配置为上升沿触发。
 

                                                                        图 3.2 Port 模块具体引脚配置界面
 

四、Dio 模块的主要配置

Dio 模块的配置也比较简单,主要是 DioPortId 和 DioChannelId 的配置。例如我们要配置的 E25 引脚,可以通过查看工程中的 Port_Hw_E3_PinCtrl.h 文件,如图 4.1 所示,E25 引脚的 Id 为 212,这个值就是这个引脚的 DioChannelId,我们只需要根据这个值找到其对应的 Port。
 

                                                                    图 4.1 Port_Hw_E3_PinCtrl.h 文件
 

那么如何根据 DioChannelId 找到其对应的 Port 呢?我们可以通过芯驰提供的 Dio 配置文档《SemiDrive_Dio_User_Manual.pdf》中查看,具体对应关系如下表所示。从表中我们可以知道 E25 和 E26 引脚都是 Port 7。

Port Id

DioChannelId

0

0-31

1

32-63

2

64-95

3

96-127

4

128-134

5

135-166

6

167-198

7

199-213

 

表 4.1 port id 对应关系

如图 4.2 所示,我们只需在 Port7 的配置中添加我们需要的两个引脚即可,引脚的名称我们可以自由命名,后续调用 Dio 模块的相关接口时会引用到。


 

                                                                                   图 4.2 添加两个引脚
 

五、实际操作

下面将基于 E3 MCAL 工程进行 Dio 模块的测试,我们使用 E26 引脚作为输出引脚,E25 引脚为输入引脚,修改 Dio 的测试代码,让输出引脚连续翻转 10 次,间隔 500 ms,输入引脚则会检测输入电平变化,当有上升沿会触发中断,我们在中断里打印 Port Id 及寄存器的值,测试时我们需要将 E25 引脚和 E26 引脚连在一起。代码主要修改两个部分,一个是 Dio 的测试代码,一个是 Dio 的中断函数,具体修改如图 5.1 和图 5.2 所示。

 


 

                                                                           图 5.1 dio_test 函数修改

 


 

                                                                               图 5.2 Dio 中断函数修改
 

修改完代码后编译下载到开发板,接上串口,上电运行,输入测试命令“dio test”,可以观察到 LED 会每秒闪烁一次,连续 10次,另外也可以看到串口打印出输出引脚的 Port id 以及该 Port的寄存器状态,如图 5.3 所示。
 

                                                                                       图 5.3 串口打印
 

六、参考资料

1.《SemiDrive_Dio_User_Manual.pdf》,2022.05

2.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android应用开发基础知识,安卓面试2020

第一章:设计思想与代码质量优化 1、设计思想六大原则 2、三大设计模式 3、数据结构 4、算法 第二章:程序性能优化 1、启动速度和执行效率优化 2、布局检测与优化 3、内存优化 4、耗电优化 5、网络传输与数据存储优化 6、APK大小优化 7、屏幕适配 8、…

【教3妹学编程-算法题】标记所有下标的最早秒数 II

3妹:2哥2哥,你有没有看到上海女老师出轨男学生的瓜啊。 2哥 : 看到 了,真的是太毁三观了! 3妹:是啊, 老师本是教书育人的职业,明确规定不能和学生谈恋爱啊,更何况是出轨。 2哥 : 是啊…

【小沐学QT】QT学习之信号槽使用

文章目录 1、简介2、代码实现2.1 界面菜单“转到槽”方法2.2 界面信号槽编辑器方法2.3 QT4.0的绑定方法2.4 QT5.0之后的绑定方法2.5 C11的方法2.6 lamda表达式方法 结语 1、简介 在GUI编程中,当我们更改一个小部件时,我们通常希望通知另一个小程序。更普…

【Unity】构建简单实用的年份选择器(简单原理示范)

在许多应用程序和游戏中,年份选择是一个常见的需求。无论是在日历应用程序中查看事件,还是在历史类游戏中选择时间段,年份选择器都是用户体验的重要组成部分,下面实现一个简易的年份选择器。 一、效果预览: 目录 一、…

sylar高性能服务器-日志(P43-P48)内容记录

文章目录 P43:Hook01一、HOOK定义接口函数指针获取接口原始地址 二、测试 P44-P48:Hook02-06一、hook实现基础二、class FdCtx成员变量构造函数initsetTimeoutgetTimeout 三、class FdManager成员变量构造函数get(获取/创建文件句柄类&#x…

前端架构: 脚手架之包管理工具的案例对比及workspaces特性的使用与发布过程

npm的workspaces 特性 1 )使用或不使用包管理工具的对比 vue-cli 这个脚手架使用 Lerna 管理,它的项目显得非常清晰在 vue-cli 中包含很多 package 点开进去,每一个包都有package.json它里面有很多项目,再没有 Lerna 之前去维护和…

【Spring】回顾反射机制

一、分析方法四要素 package org.qiu.reflect;/*** author 秋玄* version 1.0* email qiu_2022aliyun.com* project Spring* package org.qiu.reflect* date 2022-11-11-17:26* since 1.0*/ public class SomeService {public void doSome(){System.out.println("public …

【Unity】如何在Unity 中创建带有缩放效果的滚动视图(具有吸附效果的实现与优化)?

效果预览: 目录 效果预览: 一、引言: 二、问题描述 三、解决方案: 三、优化: 四、结论 一、引言: 在Unity开发中,经常需要实现滚动视图(ScrollView)中的内容吸附到…

个人博客系列-Django部署-nginx(3)

使用Nginx uwsgi进行部署django项目 一. 检查项目是否可以运行 启动项目 python manage.py runserver 0.0.0.0:8099输入ip:8099 查看启动页面 出现上述页面表示运行成功 二. 安装uwsgi并配置 2.1 下载uwsgi pip install uwsgi新建文件test.py写入内容,测试一…

面试笔记系列六之redis+kafka+zookeeper基础知识点整理及常见面试题

目录 Redis redis持久化机制:RDB和AOF Redis 持久化 RDB的优点 RDB的缺点 AOF 优点 AOF 缺点 4.X版本的整合策略 Redis做分布式锁用什么命令? Redis做分布式锁死锁有哪些情况,如何解决? Redis如何做分布式锁&#xff1f…

Logic Pro:专业音乐制作软件,为你的音乐插上翅膀

Logic Pro是一款功能强大的音乐制作软件,专为专业音乐人和音乐爱好者设计。它提供了全面的音乐创作工具,包括音频录音、编辑、混音、合成以及自动化等功能,让你能够轻松实现音乐梦想。 Logic Pro软件获取 首先,Logic Pro拥有卓越…

Tomcat:Java Web

简介 Apache Tomcat 是 Java Web 应用程序开发中最为常用的服务器之一。作为一个开源、轻量级的 Servlet 容器和 JSP 容器,Tomcat 提供了一个稳定可靠的运行环境,使得开发者可以快速开发、部署和管理 Java Web 应用程序。本文将深入介绍 Tomcat 的特点、…

js 面试 sort背后原理及排序使用方法

1 sort 概念 2 原理 之前版本是用的插入排序 和 快速排序。 现在用的是冒泡排序。 3 排序方式: 2-1 根据字符码点排序 2-2 从小到大或从大到小排序 2-3 对数组中的对象进行排序

高校水电预付费管控系统

高校水电预付费管控系统在现代高校管理中扮演着重要角色。这一系统通过整合先进的科技手段,如智能计量设备和互联网技术,实现对校园水电消费的精准监控和管理。首先,高校水电预付费管控系统能够有效监测学生宿舍、教学楼等区域的实时用水用电…

Zookeeper基础入门-2【ZooKeeper 分布式锁案例】

Zookeeper基础入门-2【ZooKeeper 分布式锁案例】 四、ZooKeeper-IDEA环境搭建4.1.环境搭建4.1.1.创建maven工程:zookeeper4.1.2.在pom文件添加依赖4.1.3.在项目的src/main/resources 目录下,新建文件为“log4j.properties”4.1.4.创建包名com.orange.zk …

网站数据加密之Hook通用方案

文章目录 1. 写在前面2. 请求分析3. 编写Hook4. 其他案例 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋…

Python进阶学习:Pickle模块--dump()和load()的用法

Python进阶学习:Pickle模块–dump()和load()的用法 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您…

【c语言】探索联合和枚举---解锁更多选择

前言 上一篇 讲解的是结构体相关知识,接着本篇主要讲解的是 联合和枚举 相关知识 结构体、联合体和枚举都属于 自定义类型。 那么接下来就跟上我的节奏,准备发车~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误&#xf…

网络协议:DHCP协议工作原理,DHCP分配方式,DHCP租约,Wireshark抓包分析DHCP报文

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》 DHCP协议 一、简介二、分配方式1)自动分配2&#xff0…

C++笔记(六)--- 静态成员变量/函数(static)

目录 C语言中静态变量 C静态成员变量 C静态成员函数 C语言中静态变量 1.函数内部用static修饰的变量,只能在此函数使用,但所修饰的变量不随函数释放而释放,下次调用时的值仍为上次结束时的值2.static修饰的全局变量只能在其定义的文件使用…