<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 32位單片機知識講解:Microchip PIC32系列(四)

          32位單片機知識講解:Microchip PIC32系列(四)

          作者: 時間:2013-05-20 來源:網(wǎng)絡(luò) 收藏
          UART 配置

            UART 使用標準的不歸零(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)。當禁止模塊時,緩沖區(qū)中的所有數(shù)據(jù)都將丟失。當禁止UART 模塊時,所有與之相關(guān)的錯誤和狀態(tài)標志都將復(fù)位。UxSTA 寄存器中的RXDA、OERR、FERR、PERR、UTXEN、URXEN、UTXBRK 和UTXBF 位被清零,而RIDLE 和TRMT位被置1。其他控制位(包括ADDEN、RXISEL1:0> 和UTXISEL)以及UxMODE 和UxBRG寄存器均不受影響。當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ā)送器框圖

          32位單片機知識講解:Microchip PIC32系列(四)

            通過將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。

          存儲器構(gòu)成

            MX 提供4 GB 的統(tǒng)一虛擬存儲地址空間。所有存儲區(qū)(包括程序存儲器、數(shù)據(jù)存儲器、SFR 和配置寄存器)都位于該地址空間中各自的唯一地址范圍內(nèi)。程序存儲器和數(shù)據(jù)存儲器可以選擇劃分為用戶存儲器和內(nèi)核存儲器。此外,數(shù)據(jù)存儲器可以是可執(zhí)行存儲器,允許MX 器件從數(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 寄存器

            該只讀寄存器用于標識數(shù)據(jù)RAM 的大小(以字節(jié)為單位)。

            BMXPFMSZ 寄存器

            該只讀寄存器用于標識程序閃存存儲器的大小(以字節(jié)為單位)。

            BMXBOOTSZ 寄存器

            該只讀寄存器用于標識引導(dǎo)閃存存儲器的大小(以字節(jié)為單位)。

            表簡要匯總了所有與存儲器構(gòu)成相關(guān)的寄存器。該匯總表之后列出了相應(yīng)的寄存器,并且每個寄存器均附有詳細的說明。

            存儲器構(gòu)成SFR 匯總

          32位單片機知識講解:Microchip PIC32系列(四)


          關(guān)鍵詞: 32位 單片機 Microchip PIC32

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();