本應用筆記介紹了用于 Z8 Encore 的中斷驅動 UART!XP? 和 Z8 Encore!MC? 微控制器。它描述了 UART 寄存器描述、循環緩沖區實現,以及中斷驅動的 UART 實現和硬件設置。
Z8 Encore 中的 UART 外設概述設備
通用異步接收器/發送器 (UART) 是一種能夠處理異步數據傳輸的全雙工通信通道。UART 使用具有可選奇偶校驗的單個 8 位數據模式。UART 的特性包括:
- 8 位異步數據傳輸
- 可選擇的偶數或奇數奇偶校驗生成和檢查
- 一或兩個停止位的選項
- 獨立的發送和接收中斷
- 單獨的發送和接收使能
- 幀、奇偶校驗、溢出和中斷檢測
- 16 位波特率發生器 (BRG)
- 具有三種可配置中斷方案的可選多處理器(9 位)模式
- 波特率發生器定時器模式
- 驅動器啟用外部總線收發器的輸出
UART 由三個主要功能塊組成:發送器、接收器和波特率發生器。UART 的發送器和接收器各自獨立運行,但使用相同的波特率和數據格式。圖 1 顯示了 UART 架構。
圖 1 Z8 Encore 示意圖!XP UART 模塊
循環緩沖區實現
本節介紹循環緩沖區的實現。此處介紹的例程可用于任何排隊或緩沖應用程序。
緩沖區通常用作臨時數據存儲,通常用于流式傳輸數據。類似地,循環緩沖區(或環形緩沖區)是具有內存分配方案的臨時數據存儲,其中緩沖區可以具有固定大小,并且當索引指針返回到起始位置時可以重用每個內存位置。這種緩沖方案被廣泛使用,并且有幾個現有版本,每個版本都根據應用需求而變化。本節描述一個簡單的緩沖機制。
為了初始化循環緩沖區,需要初始化一個內存段或任何預定義長度的數組。這是緩沖數據的存儲位置。
《br》#define RBUF_IN_BUFFERSIZE (UINT8) 64)《br》UINT8 RBUF_InBuff [RBUF_IN_BUFFERSIZE];《br》
為了便于管理循環緩沖區,初始化了兩個索引指針和一個數據計數器。
《br》UINT8 RBUF_InRdPtr; // Pointer to the next read location《br》UINT8 RBUF_InWrPtr; // Pointer to the next write location《br》UINT8 RBUF_InLength // Buffer length《br》
初始化時,緩沖區不包含任何內容,指針位于緩沖區的開頭,如圖 2 所示。
圖 2 初始化緩沖區
當數據被寫入緩沖區時,寫指針增加,數據計數器也增加。類似地,當從緩沖區讀取數據時,讀取指針會遞增,而數據計數器會遞減。參見圖 3。
圖 3 緩沖區的讀/寫操作
當讀或寫指針到達緩沖區的末尾時,它會跳回到開頭,造成環繞效應。因此,之前使用讀取操作獲取的數據將被覆蓋。見圖 4。
圖 4 環繞
中斷驅動的 UART 實現
本節介紹通過Z8 Encore 的UART 外設初始化、發送和接收數據的方法!設備。
本文檔中介紹的 UART 軟件實現支持基本格式,即 8 個數據位、無奇偶校驗和 1 個停止位。程序等待接收一個字符串(以換行符結束),然后回顯到輸入字符串。
為了便于通過 UART 進行數據輸入/輸出,上一節中討論的循環緩沖區用于存儲數據。單獨的緩沖區用于處理發送和接收數據。可以根據用戶需要更改緩沖區大小 RBUF_IN_BUFFERSIZE 和 RBUF_OUT_BUFFERSIZE。
硬件設置
圖 5 Z8 Encore 通過 RS-232 端口連接到 PC
圖 5 顯示了 Z8 Encore 的硬件設置!開發套件通過超級終端連接到 PC。超級終端設置為 8-N-1,流量控制設置為無。源代碼和本文檔中的默認波特率設置使用 115 kbps。用戶可以根據需要更改設置。
編輯:ymf
-
uart
+關注
關注
22文章
1235瀏覽量
101354 -
波特率
+關注
關注
2文章
307瀏覽量
34115 -
中斷驅動
+關注
關注
0文章
2瀏覽量
1715
發布評論請先 登錄
相關推薦
評論