在 Microchip PIC24FJ64GA008 內通用非同步收發器(Universal Asynchronous Receiver Transmitter,UART)的發送器是用作發送數據,發送器的核心是發送移位寄存器(UxTSR)。移位寄存器從發送 FIFO(First-In, First-Out)緩衝器 UxTXREG 獲取資料,UxTXREG 寄存器中的資料由軟體寫入,在前一次裝入資料的停止位元發送前,不會向 UxTSR 寄存器裝入新資料。一旦停止位元發送完畢,UxTXREG 寄存器中的新資料(如果有)就會被裝入 UxTSR。
PIC24FJ64GA008 UART 發送器框圖 |
為了選擇 9位發送,PDSEL<1:0>1:0> 位(UxMODE<2:1>2:1>)應設置為 11並且第 9位應該寫入 UTX8 位(UxTXREG<8>8>),應該向 UxTXREG 執行一個字寫操作,這樣可以同時寫入所有的 9位。
發送緩衝器(UxTXREG):發送緩衝器有 9位寬和 4級深。算上發送移位寄存器(UxTSR),用戶實際有一個5級深的緩衝器。它按先進先出(FIFO)的方式組織。一旦 UxTXREG 的內容被傳送到UxTSR寄存器,當前緩衝單元就可以寫入新的資料,下一個緩衝單元將成為 UxTSR 寄存器的資料源。無論何時,只要緩衝器滿了,UTXBF(UxSTA<9>9>)狀態位元就會置1。如果用戶試圖向已經滿的緩衝器執行寫操作,則新資料將不會被 FIFO 接收。
FIFO 在任何器件復位時復位,但當器件進入省電模式或從省電模式喚醒時,FIFO 不受影響。
設置發送時應該遵循的步驟:
1‧對 UxBRG 寄存器進行初始化,設置合適的串列傳輸速率(設置 “UART 串列傳輸速率發生器(BRG)”)。
2‧通過寫 PDSEL<1:0>1:0>(UxMODE<2:1>2:1>)和STSEL(UxMODE<0>0>)位元來設置資料位元數、停止位元數和奇偶校驗選擇。
3‧如果需要發送中斷,就要將相應的中斷允許控制寄存器(IEC)中的 UxTXIE 控制位置 1。使用相應的中斷優先順序控制寄存器(IPC)中的 UxTXIP<2:0>2:0> 控制位來指定發送中斷的中斷優先順序。同時,通過寫 UTXISEL<1:0>1:0>(UxSTA<15>15>)位元來選擇發送中斷模式。
4‧通過清零 UARTEN(UxMODE<15>15>)位元來使能 UART 模組。
5‧通過將 UTXEN(UxSTA<10>10>)置 1來使能發送,與此同時將 UxTXIF 位置 1。在 UART 發送中斷服務程式中,UxTXIF 位元應該清零。UxTXIF 位的操作由 UTXISEL<1:0>1:0> 控制位控制。
6‧將資料裝入 UxTXREG 寄存器(開始發送)。如果選擇了 9位發送,則裝入一個字。如果使用了 8位發送,則裝入一個位元組。資料可以裝入緩衝器,直到 UTXBF 狀態位元(UxSTA<9>9>)被置 1為止。
PIC24FJ64GA008 UART發送器時序 |
2016年 8月 3日 天氣報告
氣溫:27.5度 @ 20:10
相對濕度:百分之 92%
天氣:微雨
沒有留言:
張貼留言