2016年8月4日 星期四

DIY - PIC24:通用非同步收發器 UART 接收器(三十三)

DIY - PIC24:通用非同步收發器 UART 接收器(三十三): 

Microchip PIC24FJ64GA008 內通用非同步收發器(Universal Asynchronous Receiver TransmitterUART)的接收器是作接收數據之用,接收器的核心是接收(串列)移位寄存器(UxRSR)。在 UxRX 引腳上接收資料,並發送到資料恢復區中。資料恢復區以 16倍串列傳輸速率運行,而主接收串列移位元器以串列傳輸速率運行。在採集到 UxRX 引腳上的停止位後,UxRSR 中接收到的資料傳輸到接收 FIFO(如果為空)。擇多檢測電路(majority detect circuit)對 UxRX 引腳上的資料採樣三次,以判定 UxRX 引腳上出現的是高電平還是低電平。


PIC24FJ64GA008 接收器框圖
接收緩衝器(UxRXREG): 
UART 接收器有一個4級深、9位元寬的 FIFO 接收資料緩衝器。UxRXREG 是一個記憶體映射的寄存器,可提供對 FIFO 輸出的訪問。在緩衝器溢出發生以前,可以有 4個字的資料被接收並傳輸到 FIFO,從第 5個字開始將資料移位元到 UxRSR 寄存器中。

接收器錯誤處理:
如果 FIFO 已滿(4個字元),而第 5個字元已經完全接收到了 UxRSR 寄存器,溢出錯誤位元OERRUxSTA<1>)就將置 1UxRSR 中的字將被保留,但是只要 OERR 位置 1,就被禁止繼續向接收 FIFO 傳輸。用戶必須用軟體清零 OERR 位元,以允許繼續接收資料。 

如果需要保存溢出前接收到的資料,用戶應該先讀所有 5個字元,然後清零 OERR 位。如果這 5個字元可以丟棄,則用戶只要清零 OERR 位即可。這可有效地復位接收 FIFO,同時先前接收到的所有資料都將丟失。

PIC24FJ64GA008 UART 接收器時序
設置 UART 接收時應該遵循的步驟: 
1UxBRG 寄存器初始化,以獲得合適的串列傳輸速率(設置 “UART 串列傳輸速率發生器(BRG)”)。 
2通過寫 PDSEL<1:0>UxMODE<2:1>)和 STSELUxMODE<0>)位元來設置資料位元數、停止位元數和奇偶校驗選擇。 
3如果需要中斷,就要將相應的中斷允許控制(IEC)寄存器中的 UxRXIE 位置1。使用相應的中斷優先順序控制寄存器(IPC)中的 UxRXIP <2:0>控制位來指定該中斷的優先順序。同時,通過寫 URXISEL<1:0>UxSTA<7:6>)位元來選擇接收中斷模式。
4通過清零 UARTENUxMODE<15>)位元來使能 UART 模組。 
5接收中斷取決於 URXISEL<1:0> 控制位的設置。如果沒有允許接收中斷,用戶可以查詢 URXDA 位。在 UART 接收中斷服務程式中,UxRXIF 位元應該清零。
6從接收緩衝器中讀取資料。如果選擇了 9位發送,則讀一個字;否則,讀一個位元組。無論何時,只要緩衝器中有資料可讀,URXDA 狀態位元(UxSTA<0>)就將被置 1 

2016年 8月 4日 天氣報告
氣溫:26.5@ 20:10
相對濕度:百分之 94%
天氣:微雨

沒有留言:

張貼留言