32位單片機知識講解:Microchip PIC32系列(四)
UART 使用標(biāo)準(zhǔn)的不歸零(Non-Return-to-Zero,NRZ)格式(1 個啟動位、8 或9 個數(shù)據(jù)位和1 或2 個停止位)。硬件提供奇偶校驗,可由用戶配置為偶校驗、奇校驗或無奇偶校驗。最普通的數(shù)據(jù)格式是8 位,無奇偶校驗,有1 個停止位(用8, N, 1 表示),這是默認的上電復(fù)位(Power-onReset, POR)設(shè)置。數(shù)據(jù)位數(shù)、停止位數(shù)以及奇偶校驗均在PDSEL1:0> (UxMODE2:1>)和STSEL (UxMODE0>)位中指定。UART 首先發(fā)送和接收最低有效位(Least Significant bit,LSb)。UART 的發(fā)送器和接收器在功能上是獨立的,但使用相同的數(shù)據(jù)格式和波特率。
使能UART通過將ON位(UxMODE15>)置1 來使能UART 模塊。此外,通過將UTXEN 位(UxSTA10>)和URXEN 位(UxSTA12>)置1 來分別使能UART 發(fā)送器和接收器。一旦將這些使能位置1,UxTX 和UxRX 引腳就分別被配置為輸出和輸入,改寫對應(yīng)I/O 端口引腳的TRISx 和PORTx 寄存器位設(shè)置。
禁止UART
通過清零ON 位來禁止UART 模塊。這是任何復(fù)位后的默認狀態(tài)。如果禁止了UART,所有UART引腳在PORTx 和TRISx 寄存器中的相應(yīng)位控制下用作端口引腳。禁止UART 模塊會將緩沖區(qū)復(fù)位為空狀態(tài)。當(dāng)禁止模塊時,緩沖區(qū)中的所有數(shù)據(jù)都將丟失。當(dāng)禁止UART 模塊時,所有與之相關(guān)的錯誤和狀態(tài)標(biāo)志都將復(fù)位。UxSTA 寄存器中的RXDA、OERR、FERR、PERR、UTXEN、URXEN、UTXBRK 和UTXBF 位被清零,而RIDLE 和TRMT位被置1。其他控制位(包括ADDEN、RXISEL1:0> 和UTXISEL)以及UxMODE 和UxBRG寄存器均不受影響。當(dāng)UART 模塊處于活動狀態(tài)時,清零ON 位將中止所有等待的發(fā)送和接收,同時如以上所述那樣將模塊復(fù)位。重新使能UART 將使用同樣的配置重新啟動UART 模塊。
UART 發(fā)送器
圖給出了UART 發(fā)送器框圖。發(fā)送器的核心是發(fā)送移位寄存器(UxTSR)。UxTSR 從發(fā)送FIFO 緩沖區(qū)UxTXREG 中獲取數(shù)據(jù)。通過軟件將數(shù)據(jù)裝入UxTXREG 寄存器。在前一次裝入數(shù)據(jù)的停止位發(fā)送之前,不會向UxTSR 寄存器裝入新數(shù)據(jù)。一旦停止位發(fā)送完畢,就會將UxTXREG 寄存器中的新數(shù)據(jù)(如果有)裝入UxTSR。
UART 發(fā)送器框圖
通過將UTXEN 使能位(UxSTA10>)置1 來使能發(fā)送。實際的發(fā)送要到UxTXREG 寄存器裝入了數(shù)據(jù)并且波特率發(fā)生器UxBRG 產(chǎn)生了移位時鐘(圖21-3)之后才發(fā)生。也可以先裝入UxTXREG 寄存器,然后將UTXEN 使能位置1 來啟動發(fā)送。通常,第一次開始發(fā)送的時候,由于UxTSR 寄存器為空,這樣傳輸數(shù)據(jù)到UxTXREG 寄存器會導(dǎo)致該數(shù)據(jù)立即傳輸?shù)経xTSR。發(fā)送期間清零UTXEN 位將中止發(fā)送并復(fù)位發(fā)送器。因此, UxTX 引腳將恢復(fù)到UTXINV 位(UxSTA13>)定義的狀態(tài)。若要選擇9 位發(fā)送, PDSEL1:0> 位(UxMODE2:1>)應(yīng)設(shè)置為11。
PIC32MX 單片機提供4 GB 的統(tǒng)一虛擬存儲地址空間。所有存儲區(qū)(包括程序存儲器、數(shù)據(jù)存儲器、SFR 和配置寄存器)都位于該地址空間中各自的唯一地址范圍內(nèi)。程序存儲器和數(shù)據(jù)存儲器可以選擇劃分為用戶存儲器和內(nèi)核存儲器。此外,數(shù)據(jù)存儲器可以是可執(zhí)行存儲器,允許PIC32MX 器件從數(shù)據(jù)存儲器執(zhí)行。
PIC32MX 存儲器構(gòu)成的主要特性包括:
? 32 位固有數(shù)據(jù)寬度
? 獨立的用戶模式地址空間和內(nèi)核模式地址空間
? 靈活的程序閃存存儲器分區(qū)
? 數(shù)據(jù)RAM 可靈活地分為數(shù)據(jù)空間和程序空間
? 受保護代碼的獨立引導(dǎo)閃存
? 強大的總線異常處理功能,阻止代碼跑飛
? 簡單的存儲器映射(通過使用固定映射轉(zhuǎn)換(Fixed Mapping Translation, FMT)單元)
? 可高速緩存的地址區(qū)和不可高速緩存的地址區(qū)
控制寄存器
本節(jié)列出了用于為數(shù)據(jù)和代碼設(shè)置RAM 和閃存分區(qū)的特殊功能寄存器(Special Function
Register, SFR)(對于用戶模式和內(nèi)核模式)。
以下是可用SFR 的列表:
? BMXCON:配置寄存器
? BMXxxxBA:存儲器分區(qū)基址寄存器
? BMXDRMSZ:數(shù)據(jù)RAM 大小寄存器
? BMXPFMSZ:程序閃存大小寄存器
? BMXBOOTSZ:引導(dǎo)閃存大小寄存器
BMXCON 寄存器
該寄存器用于配置DMA 訪問的程序閃存高速緩存功能、總線錯誤異常、數(shù)據(jù)RAM 等待狀態(tài)和仲裁模式。
BMXxxxBA 寄存器
這些寄存器用于配置內(nèi)核模式、用戶模式數(shù)據(jù)和用戶模式程序空間在RAM 中的相對基址。
BMXDRMSZ 寄存器
該只讀寄存器用于標(biāo)識數(shù)據(jù)RAM 的大小(以字節(jié)為單位)。
BMXPFMSZ 寄存器
該只讀寄存器用于標(biāo)識程序閃存存儲器的大小(以字節(jié)為單位)。
BMXBOOTSZ 寄存器
該只讀寄存器用于標(biāo)識引導(dǎo)閃存存儲器的大小(以字節(jié)為單位)。
表簡要匯總了所有與存儲器構(gòu)成相關(guān)的寄存器。該匯總表之后列出了相應(yīng)的寄存器,并且每個寄存器均附有詳細的說明。
存儲器構(gòu)成SFR 匯總
評論