NXP S32K344 MCAL DIO/PORT 模塊講解

一、簡介

        本文介紹如何使用 NXP 提供的 AUTOSAR MCAL 軟體包開發 S32K344 DIO/PORT 模塊,對 GPIO 口進行讀寫操作。

Cavalry S32K344 開發板

圖 1-1 Cavalry S32K344 開發板

1.1 需求組件

硬體組件:

  • 開發板:Cavalry S32K344開發板;

軟體組件:

  • 開發軟體:S32 Design Studio for S32 Platform 3.4;
  • 配置軟體:tresos Studio 27.1;
  • RTD 版本:4_2.0.0;

二、EB 配置

       AUTOSAR 環境的各模塊配置需要使用 EB 軟體進行配置,關於基礎 Mcu、Resuorce、Os 等工程所需基礎模塊配置在此不再贅述(除 Resource 模塊配置需與晶片封裝相同外,其它模塊默認即可)。

2.1  Port 模塊配置

Port 模塊內需要配置 PortContainer 與 UnTouchedPortPin 選項其餘選項如無特殊需要使用默認配置即可。

UnTouchedPortPin 配置 4個下載口:

  • PTA4 - JTAG_TMS
  • PTA10- JTAG_TDO
  • PTC4 - JTAG_TCK
  • PTC5 - JTAG_TDI

      PortContainer 配置我們需要使用的 GPIO 口,配置引腳時需要注意 PortPin Mscr (dynamic range)、PortPin Direction、PortPin Mode 與 PortPin Level Value 選項:

  • PortPin Mscr (dynamic range) 為填入引腳編號,舉例 PTA29 引腳其引腳編號即為 29,B、C 等其他區引腳編號計算需加上在此之前的所有引腳數量,例如 PTB12 引腳編號為當前編號 12 加上 A 區 32 個引腳,所以 PTB12 引腳編號為 44。
  • PortPin Direction 為引腳方向,可配置為輸入、輸出、高阻態或者同時輸入輸出;
  • PortPin Mode 為引腳工作模式,可配置為 GPIO、UART、SPI 等工作模式;
  • PortPin Level Value 為引腳初始值,可配置高電平、低電平或不。

Port 模塊配置頁面
圖 2.1-1 Port 模塊配置頁面




圖 2.1-2 下載埠配置頁面




圖 2.1-3 引腳配置頁面

2.2  DIO 模塊配置

        DIO 模塊配置僅需修改 DioPort 選項其他保持默認配置即可,DioPort 內需要對各區埠進行 L、H 分組並進行相應編號如圖 2.2-2 所示。

        創建 L、H 分組後需要進行引腳配置,配置引腳時需要注意 Dio Channel Id 選項,該 ID 編碼規則與 PORT 模塊編碼規則不同,Dio Channel ID 編碼按分組進行編碼。

舉例:

  • A 區引腳 PTA0-PTA15 引腳對應到 DioPort_AL 分組,引腳 ID 即為其引腳編號,PTA0 引腳 ID 為 0,PTA15 引腳 ID 為 15;
  • PTA16-PTA31 引腳對應到 DioPort_AH 分組,其引腳編號從 0-15 重新開始一一對應,即 PTA16 引腳 ID 編號為 0,PTA31 引腳 ID 編號為 15。其餘分區埠 ID 編號規則相同。




圖 2.2-1 Dio 模塊配置頁面





圖 2.2-2 DioPort 配置頁面





圖 2.2-3 DioPort 引腳配置頁面


配置完各模塊後點擊 EB 軟體生成代碼按鈕進行生成並編譯生成代碼並同步到 S32DS 代碼工程。




圖 2.2-4 EB 生成代碼圖

三、主函數編寫

       各模塊初始化與功能函數在工程內 MCAL 文件夾下相對應模塊名稱的頭文件與源文件內,若使用其他版本 MCAL 軟體包則各函數名稱會有所區別調用函數需要到相應模塊文件內查找。

#include "Mcu.h"

#include "Port.h"

#include "Dio.h"  //頭文件引用

 

 

void TestDelay(uint32 delay);  //延時函數聲明

 

void TestDelay(uint32 delay)

{

    static volatile uint32 DelayTimer = 0;

    while(DelayTimer<delay)

    {

        DelayTimer++;

    }

    DelayTimer=0;

}  //延時函數編寫

 

int main(void)

{

    Mcu_Init(&Mcu_Config_VS_0);

    Mcu_InitClock(McuClockSettingConfig_0);

    Mcu_SetMode(McuModeSettingConf_0);  //MCU 時鐘初始化與設置

 

    Port_Init(NULL_PTR);  //Port 模塊初始化

 

    while (1)

    {

        Dio_WriteChannel(DioConf_DioChannel_DioChannel_PTA29, 1);  //PTA29 埠置高

        TestDelay(5000000);

        Dio_WriteChannel(DioConf_DioChannel_DioChannel_PTA29, 0); //PTA29 埠置低

        TestDelay(5000000);

    }

    return (0U);

}




圖 3-1 主函數頁面

四、調試測試

        將上文主函數進行編譯生成 .elf 文件並調試下載進入 S32K344EVB 內部進行調試 S32K344 開發板上紅燈將會間隔亮滅。

五、參考文獻

[1] S32K3XX Reference Manual.pdf,NXP

[2] S32K3XX Data Sheet.pdf,NXP

 

歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   
作者:Hobo


更多資訊,請掃碼關注我們!


★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

評論