感謝大大通這次的活動,給了我一次學習的機會,NXP S32K312 是一顆汽車通用型 MCU,可應用在汽車和工業等領域,包括車身、域控制器,以及電氣化等應用。
此次大大通聯合世平集團推出基於 NXP S32K312 系列核心板的免費試用活動。
還提供了豐富的使用教學和案例分享,幫助快速上手。
也藉這次機會來介紹一下 S32K312 的開發環境,並向大家推薦自己常用的工具。
環境建置
KEIL
1. 下載晶片包
打開KEIL 官方網站找到對應的晶片包。
不過這樣開發還是太麻煩了,今天推薦的是 DS IDE 來進行開發。之後會介紹我自己常用的 VSCode,對開發也非常友善。)
S32 平台的 S32 設計工作室
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 中的授權碼,點擊確定;

圖 4
接著在「選擇啟用類型」中,選擇線上。
等待安裝完成後就可以打開 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 並打開。
點擊「下一步」,載入即時驅動 RTD(Real-Time Driver)。

下載期間會出現進度條,同時會有一些彈窗,記得隨時查看,下載完成後請重新啟動。
有了這些,您可以透過 S32DS Project from Example 配置 MCAL、FreeRTOS...了。

例行程序非常多

4. 新建專案
不過我們還是先寫一個點燈,DS 還有非常多的功能等待我們去探索

●I/O 支援:有以下選項 No I/O、Debugger Console 和 Real-time printf with ITM。這裡選擇 No I/O。
●FPU 支援:有以下選項 Toolchain Default,Software: No FPU (-mfloat-abi=soft),Hardware : -mfloat-abi=hard 和 Hardware : -mfloat-abi=softfp。這裡選擇 Toolchain Default。
●語言:程式設計使用的語言,這裡預設為 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
●輸出緩衝啟用:寄存器位 MSCR_OBE
●Pad 保持啟用:寄存器位 MSCR_PKE
●驅動強度欄位:寄存器位 MSCR_DSE
●初始值:寄存器位 GPDO_PDO
我們給這個引腳定義取一個標籤「red_LED」
在剛才的配置工具中選擇「外設」,添加 Siul2_Dio 外設驅動模組;
最後點擊「更新原始碼」以生成 Pin 配置代碼。在圖 2-15 中,可以選擇需要更新的檔案。

這是生成的程式碼,可以看到紅色 LED 的腳位配置已經完成。
#define NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals 2//引腳數量
/*! @brief 使用者配置結構 */
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 定義用於使用者的引腳和端口配置 */
#define red_LED_PIN 10u//引腳號
#define red_LED_PORT PTB_L_HALF//引腳所在端口

根據介面寫一個簡單的點燈程式吧
int main(void)
{
/* 在這裡撰寫您的程式碼 */
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 configurations」對話框中,選擇「GDB SEGGER J-Link Debugging」,然後在其上下文中點擊滑鼠右鍵,選擇「New Configuration」。

這幾項需要按照你的配置修改,然後進行除錯。

彈出確認視角切換的對話框,點擊切換按鈕。
OK,簡單的點燈就完成了!

文章來自「S32K312 開發板評測活動」測評者:劉瑞陽
歡迎在文章下方留言評論,我們會儘快回覆您的問題。
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:WPIg
更多資訊,請掃碼關注我們!

評論