0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学技术 | 【S32K 进阶之旅】S32K3 RTD LLD 从零开始创建工程及烧录

大大通 2022-11-02 16:20 次阅读

前言

大家好,又见面了。前文我们详细介绍了 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 的一个插件来安装,这是因为工具链不同。

3dad4fec-57a1-11ed-b116-dac502259ad0.jpg

打开S32DS 3.4,进入菜单栏“Help”->“Install New Software”,按下图步骤添加安装包。

3dbb4368-57a1-11ed-b116-dac502259ad0.jpg

创建工程并输入工程名,选择芯片型号以及编译器版本,根据Release Note文档的描述,我们需要使用2版本的GCC。SDK 选择“PlatformSDK_S32K3_2022_03_S32K344_M7 v2.0.0”, Debugger选择你使用的调试器,我这里使用 PEMicro,最后点击“Finish”工程就创建好了。

3dd984f4-57a1-11ed-b116-dac502259ad0.jpg

2. 配置 CT(Configuration Tool)

下图所示为创建好的工程,双击“.mex” ,或者在菜单栏找到“配置工具”并点击“引脚”。

3e02105e-57a1-11ed-b116-dac502259ad0.jpg

配置每个引脚的功能和属性,我们使用大联大世平集团基于 S32K344 的最小系统开发板,其中 RGB 小灯使用 PTA29/30/31 分别控制红/绿/蓝三种颜色,将这三个引脚复用配置为“SIUL2,gpio”模式,方向选择“output”,初始值均设为“Low”。

3e1e8fb8-57a1-11ed-b116-dac502259ad0.jpg

可通过路由详情表格配置 I/O 属性,例如:

标识符:使用标识符字段给每个引脚一个有意义的 ID,可用于 API 函数。

Slew Rate:寄存器位MSCR_SRC

Output Buffer Enable:寄存器位MSCR_OBE

Pad keep enable:寄存器位MSCR_PKE

Driver Strength Field:寄存器位MSCR_DSE

Initial Value:寄存器位GPDO_PDO

3e432652-57a1-11ed-b116-dac502259ad0.jpg

点击界面右上角的“外设”按键或者在菜单栏找到“配置工具”并点击“外设”,按下图步骤添加 Siul2_Port 和 Siul2_Dio 两组外设驱动模块,进行 SDK 外设驱动程序的初始化配置。

3e5dc6c4-57a1-11ed-b116-dac502259ad0.jpg

点击“更新源代码”生成引脚配置代码,你可以点击“更改”来查看生成代码的更新,并勾选你想要更新的文件。

3e7e15c8-57a1-11ed-b116-dac502259ad0.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_ToggleLed_S32K344 工程的c 文件,引入相关的头文件

3e9bd2ac-57a1-11ed-b116-dac502259ad0.jpg

添加一个延时函数

3eaf78ac-57a1-11ed-b116-dac502259ad0.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,其他引脚以此类推。

3eca6fea-57a1-11ed-b116-dac502259ad0.jpg3ee092f2-57a1-11ed-b116-dac502259ad0.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端口的电平。

3efb10c8-57a1-11ed-b116-dac502259ad0.jpg

4. 编译并烧录到开发板

点击小锤子“Build” 按键编译,出现“Build Finished”并生成“.elf”文件代表编译成功。

3f17d3de-57a1-11ed-b116-dac502259ad0.jpg

如下图打开调试配置窗口。如果没有出现可参照的调试目标,右键 “GDB PEMicro Interface Debugging”选择“New Configuration”新建调试目标;如果有参考目标可以右键目标选择“Duplicate”。为工程重命名,并将Main窗口中的elf文件路径配置到工程路径。

3f3aca42-57a1-11ed-b116-dac502259ad0.jpg

切换至“PEmicro Debugger”标签页,将Executable设置为“${S32DS_GDB_ARM32_EXE}”,并选择好调试器接口和芯片型号,建议无论是不是新建的都要将这几个地方检查一遍,如下图。当Port口读到下图信息,代表Multilink已经连接到开发板上。进入debug页面,并点击绿色运行按键烧录程序。

3f5bdac0-57a1-11ed-b116-dac502259ad0.jpg

开发板上电,连接Multilink并烧录程序,可以看到 RGB LED 灯切换红、绿、蓝三色交替闪烁,程序烧录成功。

3f7b586e-57a1-11ed-b116-dac502259ad0.jpg

本次 S32K3 RTD LLD 工程建立已经完成。之后会以大联大世平集团推出的 S32K3xx-EVB 方案为硬件平台,介绍 S32K3 MCAL 各模块应用,也是对自己的学习过程做一个总结(不定期更新 =_=),如果有任何问题欢迎在博文下方留言,我们下次继续~

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    4965

    浏览量

    97228
收藏 人收藏

    评论

    相关推荐

    混合云部署k8s集群方法有哪些?

    混合云部署k8s集群方法是首先需在本地与公有云分别建立K8s集群,并确保网络连接。接着,配置kubeconfig文件连接两集群,并安装云服务插件以实现资源互通。然后,编写Deployment文件部署应用,并使用kubectl命令应用至集群。最后,验证应用状态并监控集群性能
    的头像 发表于 11-07 09:37 114次阅读

    k8s云原生开发要求

    Kubernetes(K8s)云原生开发对硬件有一定要求。CPU方面,建议至少配备2个逻辑核心,高性能CPU更佳。内存至少4GB,但8GB或更高更推荐。存储需至少20-30GB可用空间,SSD提升
    的头像 发表于 10-24 10:03 176次阅读
    <b class='flag-5'>k8s</b>云原生开发要求

    死角带你玩转S32K344之实时时钟RTC

    一、概述通过阅读手册可以知道S32K344是拥有一个内部的RTC,并且可以运行在正常模式和低功耗模式之下,还可以用于低功耗的唤醒等等。而在配置时需要注意时钟的配置,因为对于S32DS软件来说,RTC
    的头像 发表于 08-02 08:11 1801次阅读
    <b class='flag-5'>零</b>死角带你玩转<b class='flag-5'>S32K</b>344之实时时钟RTC

    S32K376 电池管理系统和车辆控制单元概念验证

    S32K3 平台的 S32K3 BMS SL SDK DEMO AUTOSAR 4.4 版本 1.0.0 版本。此版本中包含的 Bcc_775a_SL、Bcc_774a_SL、Bcc_772c_SL
    发表于 05-20 15:50

    关于STM8S103K3的数据保存问题求解

    关于STM8S103K3的数据保存问题,我用STM8S103K3开发一套温控板小批量投产,现在遇到的问题是,设置报警温度有的时候不能保存(断电后自动归),并不是都不保存有的就可以保存,不知道是哪的问题,编程器换了也没效果,程序
    发表于 05-10 06:38

    亮钻科技推出重磅新品:基于RK3588S平台的K-3588S

    近日,基于RK3588S平台,亮钻科技推出重磅新品:K-3588S,其性能与RK3588相媲美,拥有高性能、高算力和8K视频编解码等优势,且性价比更高,满足用户降本需求。
    的头像 发表于 05-09 14:11 2278次阅读
    亮钻科技推出重磅新品:基于RK3588<b class='flag-5'>S</b>平台的<b class='flag-5'>K-3588S</b>

    基于S32K3的ECU参考设计集成电池管理方案

    S32K396/376 BMS-EVB板现已供货,同时S32K39 / 37 / 36系列芯片将于今年6月正式上市。相关的集中式电芯监控参考设计板也已上市。
    发表于 04-26 10:59 491次阅读

    【从0开始创建AWTK应用程序】编译应用到RTOS平台

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植到其它平台。在
    的头像 发表于 03-21 08:23 578次阅读
    【从0<b class='flag-5'>开始创建</b>AWTK应用程序】编译应用到RTOS平台

    基于 NXP S32K311 评估板的方案

    该方案是以 NXP S32K311 芯片为主控制器的评估板方案,S32K311 是基于 ARM Cortex-M7 的嵌入式应用微控制器,有 64 KB 的 Dflash、1 MB 的 Pflash
    的头像 发表于 02-18 11:22 747次阅读
    基于 NXP <b class='flag-5'>S32K</b>311 评估板的方案

    恩智浦 NXP S32K31x 系列简介

    、电池管理系统、车身域控制器等。S32K31x的特点ARMCortex-M7内核,频率最高可达160MHz。符合车规级AEC-Q100标准,耐温150℃,输入3V/5
    的头像 发表于 01-26 08:28 1743次阅读
    恩智浦 NXP <b class='flag-5'>S32K</b>31x 系列简介

    S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(1)

    大联大世平集团推出了一款基于NXP车规级MCUS32K344的开发板——花名“Cavalry”,它使用BGA257封装的32位ArmCortex-M7S32K344作为主控芯片,在69.6
    的头像 发表于 01-18 08:26 2247次阅读
    【<b class='flag-5'>S32K</b> <b class='flag-5'>进阶</b><b class='flag-5'>之旅</b>】 NXP <b class='flag-5'>S32K3</b> 以太网 RMII 接口调试(1)

    芯圣SDK工具 让开发更方便——HC89S103K6

    SDK-HC89S103K6是基于HC89S103K6设计的快速开发工具。SDK-HC89S103K6由HC89S103K6微控制器的主控板和HC-LINKV4.0仿真
    的头像 发表于 01-10 10:33 471次阅读
    芯圣SDK工具 让开发更方便——HC89<b class='flag-5'>S103K</b>6

    K8S落地实践经验分享

    k8s 即 Kubernetes,是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。
    的头像 发表于 01-02 11:45 1044次阅读
    <b class='flag-5'>K8S</b>落地实践经验分享

    入门篇3基础开发小安派-Eyes-S1——新建工程烧录调试

    01 新建工程文件 1、复制helloworld工程 2、将工程移动到AiPi-Open-Kits下 3、修改helloworld文件夹下的Makefile文件 Makefile文件的
    的头像 发表于 12-12 16:35 541次阅读
    入门篇<b class='flag-5'>3</b>:<b class='flag-5'>零</b>基础开发小安派-Eyes-<b class='flag-5'>S</b>1——新<b class='flag-5'>建工程</b>并<b class='flag-5'>烧录</b>调试

    【从0开始创建AWTK应用程序】创建应用程序并在模拟器运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植到其它平台
    的头像 发表于 12-01 08:24 472次阅读
    【从0<b class='flag-5'>开始创建</b>AWTK应用程序】<b class='flag-5'>创建</b>应用程序并在模拟器运行