在 Microchip PIC24FJ64GA008 內通用非同步收發器(Universal Asynchronous Receiver Transmitter,UART)的接收器是作接收數據之用,接收器的核心是接收(串列)移位寄存器(UxRSR)。在 UxRX 引腳上接收資料,並發送到資料恢復區中。資料恢復區以 16倍串列傳輸速率運行,而主接收串列移位元器以串列傳輸速率運行。在採集到 UxRX 引腳上的停止位後,UxRSR 中接收到的資料傳輸到接收 FIFO(如果為空)。擇多檢測電路(majority detect circuit)對 UxRX 引腳上的資料採樣三次,以判定 UxRX 引腳上出現的是高電平還是低電平。
PIC24FJ64GA008 接收器框圖 |
接收緩衝器(UxRXREG):
UART 接收器有一個4級深、9位元寬的 FIFO 接收資料緩衝器。UxRXREG 是一個記憶體映射的寄存器,可提供對 FIFO 輸出的訪問。在緩衝器溢出發生以前,可以有 4個字的資料被接收並傳輸到 FIFO,從第 5個字開始將資料移位元到 UxRSR 寄存器中。
UART 接收器有一個4級深、9位元寬的 FIFO 接收資料緩衝器。UxRXREG 是一個記憶體映射的寄存器,可提供對 FIFO 輸出的訪問。在緩衝器溢出發生以前,可以有 4個字的資料被接收並傳輸到 FIFO,從第 5個字開始將資料移位元到 UxRSR 寄存器中。
接收器錯誤處理:
如果 FIFO 已滿(4個字元),而第 5個字元已經完全接收到了 UxRSR 寄存器,溢出錯誤位元OERR(UxSTA<1>1>)就將置 1。UxRSR 中的字將被保留,但是只要 OERR 位置 1,就被禁止繼續向接收 FIFO 傳輸。用戶必須用軟體清零 OERR 位元,以允許繼續接收資料。
如果需要保存溢出前接收到的資料,用戶應該先讀所有 5個字元,然後清零 OERR 位。如果這 5個字元可以丟棄,則用戶只要清零 OERR 位即可。這可有效地復位接收 FIFO,同時先前接收到的所有資料都將丟失。
PIC24FJ64GA008 UART 接收器時序 |
1‧將 UxBRG 寄存器初始化,以獲得合適的串列傳輸速率(設置 “UART 串列傳輸速率發生器(BRG)”)。
2‧通過寫 PDSEL<1:0>1:0>(UxMODE<2:1>2:1>)和 STSEL(UxMODE<0>0>)位元來設置資料位元數、停止位元數和奇偶校驗選擇。
3‧如果需要中斷,就要將相應的中斷允許控制(IEC)寄存器中的 UxRXIE 位置1。使用相應的中斷優先順序控制寄存器(IPC)中的 UxRXIP <2:0>2:0>控制位來指定該中斷的優先順序。同時,通過寫 URXISEL<1:0>1:0>(UxSTA<7:6>7:6>)位元來選擇接收中斷模式。
4‧通過清零 UARTEN(UxMODE<15>15>)位元來使能 UART 模組。
5‧接收中斷取決於 URXISEL<1:0>1:0> 控制位的設置。如果沒有允許接收中斷,用戶可以查詢 URXDA 位。在 UART 接收中斷服務程式中,UxRXIF 位元應該清零。
6‧從接收緩衝器中讀取資料。如果選擇了 9位發送,則讀一個字;否則,讀一個位元組。無論何時,只要緩衝器中有資料可讀,URXDA 狀態位元(UxSTA<0>0>)就將被置 1。
2016年 8月 4日 天氣報告
氣溫:26.5度 @ 20:10
相對濕度:百分之 94%
天氣:微雨
沒有留言:
張貼留言