一、概述
本文将会介绍如何导入 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