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