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

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

3天内不再提示

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

大大通 2023-04-14 11:13 次阅读

大大通——大联大线上技术支持平台&方案知识库

前言

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


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


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


2. 配置 CT(Configuration Tool)

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


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


  • 可通过路由详情表格配置 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



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


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


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 文件,引入相关的头文件
  • 添加一个延时函数


  • 在< 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,其他引脚以此类推。



  • 主函数实现功能:红、绿、蓝三色小灯依次闪烁。

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端口的电平。

4. 编译并烧录到开发板

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


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

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


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


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

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

    关注

    3000

    文章

    7464

    浏览量

    161639
  • 恩智浦
    +关注

    关注

    14

    文章

    5716

    浏览量

    100793
  • Automotive
    +关注

    关注

    0

    文章

    40

    浏览量

    9094
收藏 人收藏

    评论

    相关推荐

    从零开始点亮CW32L052的LED灯

    从零开始创建LED灯工程
    的头像 发表于 07-12 07:54 609次阅读
    <b class='flag-5'>从零开始</b>点亮CW32L052的LED灯

    S32K3 RTD2.0.0和RTD3.0.0在MPU配置上的区别是什么?

    ;vertical-align:inherit;"> 您的部件号是多少? 我查了S32K312的MPU配置,RTD 2.0和3.0都是一样的,能说说你修改的MPU是哪个配置吗?这样我就可以重现这个问题。 </font>
    发表于 06-08 06:06

    求分享s32k116的示例链接描述文件和启动代码

    我已经安装了一个autosar包“SW32K1_RTD_4.4_1.0.1”,在每个插件中,例如“Adc_TS_T40D2M10I1R0”,有一个名为examples的文件夹,每个s32k衍生品
    发表于 06-05 13:09

    运行RTD示例“I2s_Sai_example_S32K344”,I2S_SAI_RECEIVER 的超时问题如何解决?

    我正在尝试运行 RTD 示例“I2s_Sai_example_S32K344”,但我遇到了 I2S_SAI_RECEIVER 的超时问题。 你能给我一些建议吗? 硬件:S32K3
    发表于 06-01 08:22

    S32K3在ESD测试时保持运行,PLL_LOL时cpu时钟可以切换到FIRC吗?

    。 我们试图通过改变GM_SET寄存器来提高晶振强度,但没有任何改善。而我们尝试设置DCMRWP3[9]为1,当PLL_LOL时S32K不会复位,但mcu会停止,只有复位才能恢复。 我们需要 S32K3 在 ESD 测试时保持运
    发表于 05-30 06:49

    假设我们有QM、ASILB、ASILD三个不同安全级别的软件组件,建议使用多少个S32K CORE?

    1、假设在S32K3的一个CORE中,我们使用MPU按照ASIL级别划分软件组件。 是否仍然无法完全避免连锁故障等问题,原因何在?能否利用RXDC模块对S32K内部资源进行分区,解决上述问题
    发表于 05-24 10:07

    S32K3xx RTD安装问题如何解决?

    包 (SW32K3xx_S32DS_3.5.0_D2303.zip)。 之后我尝试安装 RTD 文件(SW32K3_RTD_4.4_R21-11_3.0.0_D2303_DS_updatesite.zip)但我面临以下
    发表于 05-24 06:40

    S32DS S32K312 RTD2.0.0升级至RTD3.0.0报错的原因是什么?

    该项目的 RTD 版本已从 2.0 升级到 3.0。 报错: 1.linker_flash_s32k312.ld:1:语法错误; 2. linker_flash_s32k312.ld:1:忽略
    发表于 05-23 07:46

    S32DS3.4在S32K312工程issue中添加FlexCan RTD Driver,没有编译成功怎么解决?

    先生: 我用的芯片是S32K312,加了FlexCan RTD Driver,没有编译成功。更多信息如下: 创建工程:文件--->新建----->S32DS应用
    发表于 05-22 09:11

    S32K3统一引导加载程序构建问题如何解决?

    如下: 适用于 S32 平台 3.4 的 S32DS S32K3 RTD AUTOSAR 4.4 版本 2.0.0 错误信息:
    发表于 05-19 08:21

    有没有关于S32K1和S32K3 SDK接口函数区别的文档?

    基于SDK,从S32K1移植到S32K3,有没有S32K1和S32K3 SDK接口函数区别的文档,谢谢!
    发表于 05-12 06:52

    如何在S32K的simulink中添加FreeRTOS?

    如何在 S32K 的 simulink 中添加 FreeRTOS?工具箱中没有 FreeRTOS 模块。
    发表于 05-09 06:52

    请问flexio是否有模拟s32K3中sent相关例程?

    请问flexio是否有模拟s32K3中sent相关例程?
    发表于 05-09 06:09

    是否可以在S32K3上实施IEC 60730软件B类?

    我们很乐意在下一代产品中使用 S32K3。我们的一些现有客户要求产品符合 IEC 60730 软件 B 类标准。 是否可以在 S32K3 上实施 IEC 60730 软件 B 类?是否有任何现有的库/模块/支持 S32K3
    发表于 05-06 07:47

    更新S32K3 RTD v3.0.0 P01 HF01时出错了的原因?怎么解决?

    目前我们项目使用的是S32K3 RTD v2.0.3 + EB tresos v28.2。 由于针对 S32K3 RTD v3.0.0 P01 HF01 发布了更新,我们正在尝试使用
    发表于 05-05 12:43