感谢大大通这次的活动,给了我一次学习的机会,NXP S32K312 是一颗汽车通用型 MCU,可应用在汽车和工业等领域,包括车身、域控制器、以及电气化等应用。
此次大大通联合世平集团推出基于 NXP S32K312 系列核心板免费试用活动,
还给我们提供了丰富的使用教程、案例分享来快速上手。
也借这次机会来介绍一下 S32K312 的开发环境,和大家推荐自己常用的工具。
环境搭建
KEIL
1. 下载芯片包
打开 KEIL 官网,找到对应的芯片包。
不过这样开发还是太麻烦了,今天推荐的是 DS IDE 来进行开发(之后会介绍我自己常用的 VSCode 对开发也非常的友好)
S32 Design Studio for S32 Platform
1. 下载
下载 S32 Design Studio for S32 Platform 3.5 安装包(也可以是 3.6 版本,我自己用的 3.6 但是网上 3.5 的资料比较多)
打开 S32 Design Studio | NXP 半导体链接,页面往下拉,在“下载”页找到 S32 Design Studio 3.5 –
Windows/Linux,单击右侧下载

图 1

图 2

图 3
2. 安装
下载完成后,双击安装包,按照提示安装即可。
在弹出的“NXP Software Activation”中,填入图 3 中的 License,单击 OK;

图 4
接着在“Choose activation type”中,选择 Online;

等待安装完成就可以打开 S32 Design Studio 了。
先要创建工作空间

在这里可以找到可以安装的插件

3. 创建工程
在创建工程前我们必须了解我们使用 DS 的重要原因
“实时驱动 RTD(Real-Time Driver)”
实时驱动程序(RTD)是一套全新的创新型驱动程序集,可支持 AUTOSAR? 、非 AUTOSAR 应用上的实时软件,主要用于 Arm?Cortex ?- M 内核,使所有软件层均符合 ISO 26262 要求,这套驱动程序集提供完整的 IP 和功能:
AUTOSAR 应用可创建一个丰富的生态体系,其中考虑到复杂设备驱动程序(CDD)和各种标准驱动程序。 非 AUTOSAR 应用适合代码高度优化的低级驱动程序。
RTD 可能会在平台级的中间件(EEP 的 FATFS、MCAL 衍生的 FLS 的 FEE)和堆栈(LIN、NFC、TCIP)上进行集成。AUTOSAR 功能(多核、用户模式)也扩展到非 AUTOSAR 环境,以前仅适用于 AUTOSAR 环境。
这么重要的工具通过 DS 的集成可以说为我们的开发节省了非常多的时间接下来我们就安装一下这个 RTD 插件
网络上大家可能会推荐大家在上文说的插件商城中下载,但是如果你下载的是新版本的 SD 现在应该是不行的,
我们选择手动安装
打开链接S32K 汽车通用 MCU | NXP 半导体,页面往下翻,找到软件中的 S32K3 Standard Software,单击下载。

找到这个

找一个合适的版本,我选择了网上很多人选择的(资料比较多)
点进去下载

RTD 包下载完成后,菜单栏依次选择 Help –> Install New Software…;

在弹出的对话框中,选择 Add;

单击 Archive…,找到实时驱动 RTD(Real-Time Driver)的存放路径,选中 SW32K3_RTD_4.4_3.0.0_P01_HF02_DS_updatesite_D2305.zip 并打开。

单击 Next,加载实时驱动 RTD(Real-Time Driver)。

下载期间会出现进度条同时会有一些弹窗记得随时查看,下载完成后重启。

有了这些,您可以通过 S32DS Project from Example 配置 MCAL,FreeRTOS...了。

例程非常多

4. 新建工程
不过我们还是先写一个点灯,DS 还有非常多的功能等待我们去探索

●I/O Support:有以下选项 No I/O,Debugger Console 和 Real-time printf with ITM。这里选择 No I/O。
●FPU Support:有以下选项 Toolchain Default,Software: No FPU (-mfloat-abi=soft),Hardware : -mfloat- abi=hard 和 Hardware : -mfloat-abi=softfp。这里选择 Toolchain Default。
●Language:编程使用的语言,这里默认 C。
●SDKs:选择一个 RTD 中,对应芯片的驱动,我们只下载了一个。

好了,我们的环境搭建到此结束,下面我们开始写点代码吧其实不用写多少

首先是喜闻乐见的点灯
使用 DS 的重要原因就是这个 IDE 会有非常强大的适配,就像 cubeMX 一样可以自动生成代码,以及可视化的配置引脚和时钟
来看一下 LED 的引脚定义


●PTB10:GPIO[42],用于控制红色灯光
●PTB9:GPIO[41],用于控制绿色灯光
●PTB8:GPIO[40],用于控制蓝色灯光
来到引脚配置界面

在引脚配置界面中,勾选 PTB10,接着在弹出的对话框中,选择 SIUL2:gpio42;然后在弹出的“需要指明方向”,选择 Output;

下发有路由详情可以配置

比较常用的配置有:
● 标签和标识符:为每个 PIN 配置一个字符串名称,用于 API 函数的传参。
●Slew Rate:寄存器位 MSCR_SRC
●Output Buffer Enable:寄存器位 MSCR_OBE
●Pad keep enable:寄存器位 MSCR_PKE
●Driver Strength Field:寄存器位 MSCR_DSE
●Initial Value:寄存器位 GPDO_PDO
我们给这个引脚定义取一个标签“red_LED”
在刚才的配置工具中选择”外设“,添加 Siul2_Dio 外设驱动模块;
最后单击“更新源代码”生成 Pin 配置代码。在图 2-15 中,可以选择需要更新的文件;

这是生成的代码,可以看到红色 LED 的引脚配置已经完成。
#define NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals 2//引脚数量
/*! @brief User configuration structure */
extern const Siul2_Port_Ip_PinSettingsConfig g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripheral
#define PORT_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "Port_MemMap.h"
/*! @brief Defines for user pin and port configurations */ #define red_LED_PIN 10u//引脚号
#define red_LED_PORT PTB_L_HALF//引脚所在端口

根据接口写一下简单的点灯程序吧
int main(void)
{
/* Write your code here */ Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals,
g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals); Siul2_Dio_Ip_TogglePins(red_LED_PORT, (1 << red_LED_PIN));
for (;;) {
if (exit_code != 0) {
}
}
return exit_code;
}
最后就是最重要的编译和烧写了
接着在菜单栏中,依次选择 Debug 下拉箭头 -- > Debug Configuration;

在弹出的 Create,manage,and run confugurations 对话框,选中 GDB SEGGER J-Link Debugging,鼠标右键在其上下文中选择 New Configuration;

这几项需要按照你的配置修改,然后 debug

弹出 Confirm Perspective Switch 对话框,单击 Switch 按钮。

OK,简单的点灯就完成了!

文章来自“S32K312 开发板评测活动”测评者:劉瑞陽
欢迎在博文下方留言评论,我们会及时回复您的问题。


219

被折叠的 条评论
为什么被折叠?



