【 ATU NXP-S32K系列 】 S32K UART 通訊教學

1.  概述

1.1  功能描述

本範例將使用 S32DS for ARM 平台,由 S32K148_EVB 與電腦進行 Uart

通訊,並驗證電腦端是否接收正確,與 S32K148 是否正確接收電腦端由鍵盤

輸入的 ASCLL_CODE資料,確認資料接收無誤與沒有資料的缺失

 

1.2    硬體開發工具

S32K148-EVB 評估板

PEmicro Multilink Universal 燒錄器

USB 轉 Uart 轉換器

1.3    軟體開發工具

S32 Design Studio for ARM

TeraTerm ( Uart 介面)

1.4    參考相關程式碼

S32K148_Uart.zip

 

 

2.   Uart 原理

2.1 Baud (調製速率)

1 Baud 代表一秒傳輸1個 bit 的訊號

9600 Baud 代表一秒傳輸9600  bits 的訊號

 

2.2 Uart 通訊格式

2.2.1 起始欄位 ( start bit )

Uart 在閒置狀態時為高電位 ( 1 ),傳送1 個 bit 的start bit ( 0 )將電位轉換為低電位來表示開始傳送資料( data ),一般 data 位元為8 個 bits

2.2.2 結束欄位 ( stop bit )

傳送完資料位元後,傳送1 個 bit 的stop bit ( 1 )來表示資料傳輸完畢。

 

2.3 全雙工模式

使用 buffer 來實現全雙工模式,將資料儲存於 buffer 再 shift register 同時接收與傳送資料。

 

3.  程式碼功能描述

3.1 功能概述

將傳輸速率設定調整電腦端與 S32K148 EVB 一致後,輸入欲傳輸資料,利用 UART 通訊與TeraTerm 軟體介面,將資料顯示於電腦螢幕上,並由鍵盤輸入訊號,由 S32K148  接收,資料為 ASCLL_CODE,傳送資料為2 個陣列 data ,確認上筆陣列 data 資料成功傳輸後,換下個陣列 data

 

3.2 程式流程圖

 

4.  硬體接線圖

4.1  S32K148 EVB UART 內部線路圖

 S32K148 EVB 板有 UART to USB converter

 

4.2  外部接線圖

 

S32K148 EVB 實體接線圖

 

USB 轉 Uart 連接器

 

4.3  block diagram

5. 相關 function 介紹

5.1  UART_Init

5.1.1 功能描述

設置字元長度,傳輸速率

指定錯誤回授、狀態回授的暫存器

Parity、stop bit 設定

5.1.2 函式原型

UART_Init ( const uart_instance_t * const instance , const uart_user_config_t *config )

5.1.3 參數

參數名稱

類型

描述

const instance

const uart_instance_t *

指定 UART 函式模塊

config

const uart_user_config_t *

設置 baud rate、字元長度、Parity、stop bit 設定……等等

 

5.1.4  return 值

STATUS_SUCCESS

STATUS_ERROR

STATUS_BUSY

STATUS_TIMEOUT

STATUS_UNSUPPORTED

5.1.5  範例

UART_Init(&uart_pal1_instance, &uart_pal1_Config0)

 

5.2  UART_SendDataBlocking

5.2.1 功能描述

傳送資料有time out功能

5.2.2 函式原型

UART_SendDataBlocking ( const uart_instance_t * const instance , const uint8_t * txBuff ,

        uint32_t txSize,uint32_t timeout ) ;

5.2.3 參數

參數名稱

類型

描述

const instance

const uart_instance_t *

指定 UART 函式模塊

txBuff,

const uint8_t *

欲傳送的資料

txSize

uint32_t

傳送buffer的大小

timeout

uint32_t

Timeout 的時間

 

5.2.4  return 值

     回傳STATUS_SUCCESS

 

5.2.5  範例

    UART_SendDataBlocking (&uart_pal1_instance,(uint8_t*)test_mode, 5,500);

5.3  UART_SendData

5.3.1 功能描述

傳送資料

5.3.2 函式原型

UART_SendData ( const uart_instance_t * const instance , const uint8_t * txBuff , uint32_t txSize ) ;

5.3.3 參數

參數名稱

類型

描述

const instance

const uart_instance_t *

指定 UART 函式模塊

txBuff

const uint8_t

欲傳送的資料

txSize

uint32_t

傳送buffer的大小

 

5.3.4  return 值

回傳 STATUS_SUCCESS

5.3.5  範例

UART_SendData ( &uart_pal1_instance , ( uint8_t* ) test_mode , 5 );

 

5.4  UART_ReceiveDataBlocking

5.4.1 功能描述

    接收資料有time out功能

5.4.2 函式原型

UART_ReceiveDataBlocking ( const uart_instance_t * const instance, uint8_t * rxBuff ,

        uint32_t rxSize, uint32_t timeout ) ;

5.4.3 參數

參數名稱

類型

描述

const instance

const uart_instance_t *

指定 UART 函式模塊

rxBuff

const uint8_t

欲接收資料的buffer

rxSize

uint32_t

接收buffer的大小

timeout

uint32_t

Timeout 的時間

 

5.4.4  return 值

回傳 STATUS_SUCCESS

5.4.5  範例

UART_ReceiveData ( &uart_pal1_instance , (uint8_t*)rxBuff , 30 , 500 );

  

 

5.5  UART_ReceiveData

5.5.1 功能描述

接收資料

5.5.2 函式原型

UART_ReceiveData ( const uart_instance_t * const instance , uint8_t * rxBuff , uint32_t rxSize ) ;

5.5.3 參數

參數名稱

類型

描述

const instance

const uart_instance_t *

指定 UART 函式模塊

rxBuff

const uint8_t

欲接收資料的buffer

rxSize

uint32_t

接收buffer的大小

 

5.5.4  return 值

回傳 STATUS_SUCCESS

5.5.5  範例

UART_ReceiveData ( &uart_pal1_instance , (uint8_t*)rxBuff , 30 ) ;

 

5.6  UART_SetBaudRate

5.6.1 功能描述

設定傳輸速率

5.6.2 函式原型

UART_SetBaudRate ( const uart_instance_t * const instance , uint32_t desiredBaudRate ) ;

5.6.3 參數

參數名稱

類型

描述

const instance

const uart_instance_t *

指定 UART 函式模塊

desiredBaudRate

uint32_t

欲設定 baud rate 值

 

5.6.4  return 值

STATUS_SUCCESS

STATUS_BUSY 

STATUS_ERROR

5.6.5  範例

UART_ SetBaudRate ( &uart_pal1_instance , 9600 ) ;



 

5.7  UART_GetReceiveStatus

5.7.1 功能描述

讀取當前接收資料程式狀態

5.7.2 函式原型

UART_GetReceiveStatus ( const uart_instance_t * const instance , uint32_t *    bytesRemaining );

 

5.7.3 參數

參數名稱

類型

描述

const instance

const uart_instance_t *

指定 UART 函式模塊

bytesRemaining

uint32_t

設定接收 buffer 資料未填滿,填充的值

 

5.7.4  return 值

回傳 STATUS_SUCCESS

     STATUS_BUSY             

     STATUS_UART_RX_OVERRUN   接收過程溢位產生

     STATUS_UART_ABORTED      接收被中止

     STATUS_TIMEOUT           達到 time out

     STATUS_ERROR             狀態錯誤

5.7.5  範例

UART_GetReceiveStatus ( &uart_pal1_instance ,0 )

 

5.8  UART_GetTransmitStatus

5.8.1 功能描述

讀取當前傳送資料程式狀態

5.8.2 函式原型

UART_GetTransmitStatus ( const uart_instance_t * const instance , uint32_t * bytesRemaining);

5.8.3 參數

參數名稱

類型

描述

const instance

const uart_instance_t *

指定 UART 函式模塊

bytesRemaining

uint32_t

設定傳送 buffer 資料未填滿,填充的值

 

5.8.4  return 值

回傳 STATUS_SUCCESS

     STATUS_BUSY             

     STATUS_UART_ABORTED      傳送被中止

     STATUS_TIMEOUT           達到 time out

     STATUS_ERROR             狀態錯誤

5.8.5  範例

UART_GetTransmitStatus ( &uart_pal1_instance ,0 )

 

 

5.9 其他 function

5.9.1  LINFLEXD_UART_DRV_Deinit

清除初始化的設置

5.9.2  LINFLEXD_UART_DRV_SetTxBuffer

規劃新的傳送 buffer

 

6.   範例執行 ( 基於S32K148 )

6.1 SDK架構

6.1.1 SDK 的使用,參考 “ S32 Design Studio for ARM Architecture 平台安裝教學 ”

6.1.2 點選 Components Library -> Alphabetical,選取欲使用 function ( lpuart )

 

6.1.3 顯示於左下方視窗

已添加的 function 顯示於左下方視窗,如下圖


.................................等等


欲獲得剩餘章節,請在大大通留言,或者聯絡以下信箱

Michael.Gao@wpi-group.com

   ~~ THANKS ~~





 

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

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

參考來源

評論