前言
大家好,又见面了。前文我们详细介绍了 S32K3 RTD MCAL 开发环境的搭建过程,包括软件的下载、安装、例程介绍等。本文将在开发环境都完备的前提下继续展开,如果你还没有搭建好 S32K3 开发环境,请参考:
S32K3 RTD MCAL 开发环境搭建(详细教程)
如果不使用 MCAL(Microcontroller Abstraction Layer),只想生成 LLD (Low Level Driver)程序的话,我们该如何配置呢? 下面我们用版本号为 “SW32K3_RTD_4.4_2.0.0”的 RTD 软件包为例,创建一个简单的工程,编译、烧录并进行功能演示。
1. 建立工程
- 在 NXP 官网上找到“4_2.0.0”的 RTD 包,下载并安装(参考前文的第2.3和3.3章节)。其中 MCAL 是 exe 执行程序安装,而 LLD 则是 zip 格式作为 S32DS 的一个插件来安装,这是因为工具链不同。
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa2uAYWuaAADwrAo8SQA697.jpg)
- 打开S32DS 3.4,进入菜单栏“Help”->“Install New Software”,按下图步骤添加安装包。
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa2uAGAFOAAFS54WEEJg040.jpg)
- 创建工程并输入工程名,选择芯片型号以及编译器版本,根据Release Note文档的描述,我们需要使用2版本的GCC。 SDK 选择“PlatformSDK_S32K3_2022_03_S32K344_M7 v2.0.0”, Debugger选择你使用的调试器,我这里使用 PEMicro,最后点击“Finish”工程就创建好了。
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa2uAAfaAAAInPv47c8k372.jpg)
2. 配置 CT(Configuration Tool)
- 下图所示为创建好的工程,双击“.mex” ,或者在菜单栏找到“配置工具”并点击“引脚”。
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa2uASFIfAACkd5RmD4Y336.jpg)
- 配置每个引脚的功能和属性,我们使用大联大世平集团基于 S32K344 的最小系统开发板,其中 RGB 小灯使用 PTA29/30/31 分别控制红/绿/蓝三种颜色,将这三个引脚复用配置为“SIUL2,gpio”模式,方向选择“output”,初始值均设为“Low”。
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa2uARS9IAAGXegg4Z54142.jpg)
- 可通过路由详情表格配置 I/O 属性,例如:
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa2yAEWJRAAESeTjLSiQ473.jpg)
- 点击界面右上角的“外设”按键或者在菜单栏找到“配置工具”并点击“外设”,按下图步骤添加 Siul2_Port 和 Siul2_Dio 两组外设驱动模块,进行 SDK 外设驱动程序的初始化配置。
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa2yADoCWAAJJ9RgE18A085.jpg)
- 点击“更新源代码”生成引脚配置代码,你可以点击“更改”来查看生成代码的更新,并勾选你想要更新的文件。
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa2yABs7rAAGIfshVyHQ705.jpg)
3. 编写程序
- S32DS CT 生成的文件结构
- Siul2_Port 相关的驱动代码文件:
- RTD\include\Siul2_Port_Ip_Types.h
- RTD\include\Siul2_Port_Ip.h
- RTD\src\Siul2_Port_Ip.c
- Siul2_Port包含引脚配置结构的文件:
- Board\Siul2_Port_Ip_Cfg.h
- Board\Siul2_Port_Ip_Cfg.c
- Siul2_Dio 相关的驱动代码文件:
- RTD\include\Siul2_Dio_Ip.h
- RTD\src\Siul2_Dio_Ip.c
- Siul2_Dio 包含引脚配置结构的文件:
- generate\include\Siul2_Dio_Ip_Cfg.h
- Siul2_Port 相关的驱动代码文件:
- 打开 Siul2_ToggleLed_S32K344 工程的c 文件,引入相关的头文件
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa2yACqh6AAAqoNAfcqI926.jpg)
- 添加一个延时函数
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa2yAd6DVAAAxofh5Bdo081.jpg)
- 在< Siul2_Port_Ip_Cfg.h > 中我们可以找到下图所示的宏定义,这是因为我们在配置 I/O 属性时,在标识符字段填写了引脚 ID。那“PTA_H_HALF”是什么意思呢,为什么 PTA29 的 PIN 设为 13?
通过《S32K3xx Reference Manual》附件中的《S32K344 IOMUX_Rev1.1.xlsx》表格可看出 IO 口按照A、B、C、D、E、F、G编号分成了7组(以 BGA257 为例),每组有0~31号共32个IO口,而H和L分别代表高16位和低16位,所以 PTA29实际属于高16位的第13-Pin,其他引脚以此类推。
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa2yAFd8DAAA-gvAlJU8283.jpg)
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa2yABtLBAABczBJX3t4749.jpg)
- 主函数实现功能:红、绿、蓝三色小灯依次闪烁。
Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);
//初始化所有引脚配置,“g_pin_mux_InitConfigArr0”在之前生成的代码中定义。
Siul2_Dio_Ip_TogglePins(LED_PTA29_PORT, 1<<(LED_PTA29_PIN+led_Switch));
//切换指定GPIO端口的电平。
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa2yAclAqAABuSloOU5o587.jpg)
4. 编译并烧录到开发板
- 点击小锤子“Build” 按键编译,出现“Build Finished”并生成“.elf”文件代表编译成功。
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa2yAF8GEAAFiSvxhZX4011.jpg)
- 如下图打开调试配置窗口。如果没有出现可参照的调试目标,右键 “GDB PEMicro Interface Debugging”选择“New Configuration”新建调试目标;如果有参考目标可以右键目标选择“Duplicate”。为工程重命名,并将Main窗口中的elf文件路径配置到工程路径。
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa22AAnqBAAN9tHmgOPM052.jpg)
- 切换至“PEmicro Debugger”标签页,将Executable设置为“${S32DS_GDB_ARM32_EXE}”,并选择好调试器接口和芯片型号,建议无论是不是新建的都要将这几个地方检查一遍,如下图。当Port口读到下图信息,代表Multilink已经连接到开发板上。进入debug页面,并点击绿色运行按键
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa22AbBh1AAADL8nKq3w087.jpg)
- 烧录程序。
![](https://file.elecfans.com/web2/M00/9A/1C/pYYBAGQZa22ANo5jAAK8BkMGvxI518.jpg)
- 开发板上电,连接Multilink并烧录程序,可以看到 RGB LED 灯切换红、绿、蓝三色交替闪烁,程序烧录成功。
![](https://file.elecfans.com/web2/M00/99/98/poYBAGQZa22ABQORAAKsYYUszWs108.jpg)
本次 S32K3 RTD LLD 工程建立已经完成。之后会以大联大世平集团推出的 S32K3xx-EVB 方案为硬件平台,介绍 S32K3 MCAL 各模块应用,也是对自己的学习过程做一个总结(不定期更新 =_=),如果有任何问题欢迎在博文下方留言,我们下次继续~
参考资料
[1] S32K3xx Reference Manual, Rev.2 Draft C, 04/2021, NXP
[2] Cavalry (S32K3 Core Board) Rev.1 - Schematic
登陆大大通,了解更多S32K进阶之旅系列文章
-
NXP
+关注
关注
60文章
1292浏览量
185675 -
恩智浦
+关注
关注
14文章
5892浏览量
108520 -
s32k
+关注
关注
1文章
14浏览量
9798
发布评论请先 登录
相关推荐
零基础开发小安派-Eyes-S1【进阶篇】——初识 LVGL 并搭建最小工程
![<b class='flag-5'>零</b>基础开发小安派-Eyes-<b class='flag-5'>S</b>1【<b class='flag-5'>进阶</b>篇】——初识 LVGL 并搭建最小<b class='flag-5'>工程</b>](https://file1.elecfans.com//web3/M00/05/05/wKgZO2d7kMSAJAFJAACo0k1Ogbo923.jpg)
k8s和docker区别对比,哪个更强?
基于 NXP S32K312+FS23 的汽车通用评估板方案
![基于 NXP <b class='flag-5'>S32K</b>312+FS23 的汽车通用评估板方案](https://file1.elecfans.com/web3/M00/01/83/wKgZPGdWQI-ADJZPAACxoN9-kLM614.png)
k8s云原生开发要求
![<b class='flag-5'>k8s</b>云原生开发要求](https://file1.elecfans.com/web2/M00/0B/06/wKgaomcZ5XOAO7bVAAGe1drYtZc769.png)
零死角带你玩转S32K344之实时时钟RTC
![<b class='flag-5'>零</b>死角带你玩转<b class='flag-5'>S32K</b>344之实时时钟RTC](https://file.elecfans.com/web2/M00/20/B3/pYYBAGGfNNmAK-PZAAJsGM5Cgk0227.jpg)
S32K376 电池管理系统和车辆控制单元概念验证
关于STM8S103K3的数据保存问题求解
亮钻科技推出重磅新品:基于RK3588S平台的K-3588S
![亮钻科技推出重磅新品:基于RK3588<b class='flag-5'>S</b>平台的<b class='flag-5'>K-3588S</b>](https://file1.elecfans.com/web2/M00/E3/4C/wKgZomY8aXKAUuN5AAB5ELoenZo098.png)
基于S32K3的ECU参考设计集成电池管理方案
【从0开始创建AWTK应用程序】编译应用到RTOS平台
![【从0<b class='flag-5'>开始创建</b>AWTK应用程序】编译应用到RTOS平台](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
评论