NXP S32K312 系列核心板體驗之二—串口配置與使用

關鍵字 :NXPS32K3系列s32k312nxpip開發板世平wpi

一、前言

啊哈,又是我,新年快樂啊!!這一次給大家寫一下後續帖子將會一直使用到的串口的配置教程,這裡配置需要用到上次的pin配置方法,以及新的知識點IntCtrl_Ip、Siul2_Port、Lpuart_Uart以及時鐘樹的配置。話不多說直接開始。
二、配置步驟
1、配置PIN

通過原理圖可知本次拿到手的開發板上面的串口PIN為PTC2(RX)、PTC3(TX)。

根據上一次PIN配置教程直接將他們配置為串口:

最後兩個是標籤和標識符的名字,同樣和上一次一樣,建議命名為一模一樣的和功能的名稱。(因為開發板這邊引出的是uart0,所以這邊建議的話命名的話用uart0命名啊,不要像我這樣直接一個串口的單詞)

2、外設驅動添加

點擊IDE右上角外設標誌,來進行添加相關外設的驅動庫。

點擊Driver旁邊的加號,然後添加對應的外設驅動,也就是我圖片中的Driver下面的那幾個。

3、Lpuart_Uart配置

這個名字想必一看就知是專門用來配置串口的。你在添加Driver的時候應該也能看到其他的驅動庫函數,那些函數的話我這一次沒做詳細的研究,感興趣的話可以自己去研究一下,這邊的話我們就用最容易操作的Lpuart來講解這一次。

3.1 雙擊Driver下面的Lpuart_Uart進入配置頁面。

3.2 按照下圖順序依次配置。其中步驟三中的波特率根據自己的需求更改,這邊我選擇的是115200。

3.3 這裡這個是配置uart超時間隔,us單位,用於同步傳輸的超時時間設置。



4、IntCtrl_Ip配置

這個是用來配置中斷的,本次代碼沒有使用到,但是可以先了解一下。

這裡配置的時候需要注意一下Handler欄位的命名要和圖片一致。那個零是中斷優先級數字越小優先級越高,這邊的話可以根據自己的需求進行配置。

5、Siul2_Port配置


這裡紅框裡面配置根據PTC2、PTC3的編號填入:

分別設置兩pin的配置(+是添加)

6、時鐘樹配置


將SCS_CLK的時鐘輸入源切換到FIRC,其他配置如上圖配置即可。

三、操作API介紹

1、串口發送函數

Lpuart_Uart_Ip_StatusType Lpuart_Uart_Ip_AsyncSend(const uint8 Instance,

const uint8 * TxBuff,

const uint32 TxSize)

三個參數分別為:

  • const uint8 Instance, // UART 實例編號
  • const uint8 * TxBuff, // 要發送的數據緩衝區
  • const uint32 TxSize // 要發送的數據大小

其中Instance UART 實例編號為串口號,比如我們這一次用的是串口0所以值為0。



2、串口接收函數

Lpuart_Uart_Ip_StatusType Lpuart_Uart_Ip_AsyncReceive(const uint8 Instance,

uint8 * RxBuff,

const uint32 RxSize)

三個參數分別為:

  • const uint8 Instance, // UART 實例編號
  • const uint8 * RxBuff, // 數據緩衝區
  • const uint32 RxSize // 數據大小
四、代碼編寫

#include "Mcal.h"

#include "Siul2_Port_Ip.h"

#include "Siul2_Dio_Ip.h"

#include "Lpuart_Uart_Ip.h"

#include "Lpuart_Uart_Ip_Irq.h"

#include "Clock_Ip.h"

#include "IntCtrl_Ip.h"

#include "string.h"

#define UART_LPUART0_INTERNAL_CHANNEL 0

#define MSG "Helloworld!\r\n"

volatile int exit_code = 0;

uint8 RX_Buffer[50];

int main(void)

{

/* Write your code here */

Clock_Ip_Init(&Clock_Ip_aClockConfig[0]);

Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);

IntCtrl_Ip_Init(&IntCtrlConfig_0);

Lpuart_Uart_Ip_Init(UART_LPUART0_INTERNAL_CHANNEL, &Lpuart_Uart_Ip_xHwConfigPB_0);

Lpuart_Uart_Ip_AsyncSend(UART_LPUART0_INTERNAL_CHANNEL,(const uint8 *)MSG, strlen(MSG));

//Lpuart_Uart_Ip_AsyncReceive(UART_LPUART0_INTERNAL_CHANNEL,RX_Buffer,1);

for(;;)

{

}

return exit_code;

}

結果如下:

 


此文章來自“S32K312 開發板評測活動”測評者:付楚楚

 

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

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

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

 

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

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

評論