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 ~~
評論