第八章異步串口_第1頁
第八章異步串口_第2頁
第八章異步串口_第3頁
第八章異步串口_第4頁
第八章異步串口_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 UART簡介1 UART功能應(yīng)用2UART基本操作3 通用異步收發(fā)器(UART)是實(shí)現(xiàn)設(shè)備間異步串行通信的關(guān)鍵模塊,LPC1700系列ARM具有4個(gè)符合16C550工業(yè)標(biāo)準(zhǔn)的異步串口。16字節(jié)收發(fā)FIFO 內(nèi)置小數(shù)分頻器 支持DMA發(fā)送接收UART1增加Modem和RS-485/EIA-485模式UART0、UART2、UART3增加IrDA接口 UART簡介1 UART功能應(yīng)用2UART基本操作3 RS-232是PC機(jī)與設(shè)備通信里應(yīng)用最廣泛的一種串行接口。它被定義為一種在低速率串行通訊中增加通訊距離的單端標(biāo)準(zhǔn),由于其最大通信距離的限制,因此它常用于本地設(shè)備之間的通信。 最高速率約為20kb

2、/s 傳輸最大距離約為15m 共模抑制比能力差RS-232特性打印機(jī)PCRS-232電平轉(zhuǎn)換 與TTL電平兼容 傳輸距離實(shí)際達(dá)1200m 共模抑制比能力強(qiáng) RS-485是一種常用遠(yuǎn)距離和多機(jī)通信的串行接口。RS-485只是定義電壓和阻抗,編程方式和普通串口類似,與RS-232主要區(qū)別在于其特性。RS-485特性 成本低 體積小、功耗低 數(shù)據(jù)傳輸干擾較小 LPC1700系列ARM的UART0/2/3可以工作在UART模式,也可以工作在IrDA模式,這兩種不同的工作模式不能在各自的應(yīng)用里互換。IrDA是一種利用紅外進(jìn)行點(diǎn)對點(diǎn)無線通信的技術(shù)。IrDA的優(yōu)點(diǎn) LPC1700系列ARM僅有UART1具有

3、Modem接口,通過該接口可以接入電話線網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)距離通信。 UART簡介1 UART功能應(yīng)用2UART基本操作3引腳配置引腳配置波特率設(shè)置波特率設(shè)置幀格式設(shè)置幀格式設(shè)置FIFO設(shè)置設(shè)置UnLCR字符長度停止位、校驗(yàn)位UART的初始化的初始化 1UnDLL、UnDLM、手動波特率 UnFCRFIFO自動復(fù)位 Rx觸發(fā)點(diǎn)選擇波特率設(shè)置波特率設(shè)置 PCLKUnDLL波特率發(fā)生器UnDLMUnFDR目標(biāo)波特率:Baud = FPCLK / (16xUnDLM:UnDLL)假設(shè)APB時(shí)鐘為24MHz,UART0要得到的目標(biāo)波特率為9600:U0LCR = 0 x83;usFdiv = (FPCLK /

4、 16) / 9600;U0DLM = usFdiv / 256;U0DLL = usFdiv % 256;U0LCR = 0 x03;操作示例:允許設(shè)置波特率設(shè)置波特率鎖存波特率手動波特率配置模式:手動波特率配置模式: UART波特率發(fā)生器的時(shí)鐘源是波特率發(fā)生器的時(shí)鐘源是APB時(shí)鐘,時(shí)鐘,APB時(shí)鐘經(jīng)過時(shí)鐘經(jīng)過16分頻后將該值保存在除數(shù)鎖存寄分頻后將該值保存在除數(shù)鎖存寄存器存器DLM與與DLLusFdiv/256對256取模是完成將16位數(shù)拆分為兩個(gè)8位,就是對低8位取模,低8位最大存放255,加上0為256,即進(jìn)制為256進(jìn)制幀格式設(shè)置幀格式設(shè)置 UART通信時(shí)需保證收發(fā)兩端的幀格通信時(shí)需

5、保證收發(fā)兩端的幀格式一致,否則會出現(xiàn)通信錯誤式一致,否則會出現(xiàn)通信錯誤停止位2奇偶設(shè)置3奇偶選擇5 : 4字長功能1 :0位UnLCR可有可無 12位操作示例:要求UART0的工作模式為:8位字符長度,1個(gè)停止位,無奇偶校驗(yàn)U0LCR = 0 x03;FIFO設(shè)置設(shè)置位75:3210功能Rx觸發(fā)選擇保留Tx FIFO復(fù)位Rx FIFO復(fù)位FIFO使能 FIFO的初始化比較簡單,主要設(shè)置包的初始化比較簡單,主要設(shè)置包括括Rx的觸發(fā)深度,的觸發(fā)深度,Tx FIFO與與Rx FIFO的復(fù)的復(fù)位,以及位,以及FIFO的使能。的使能。UnFCR操作示例:U0FCR = 0 x87; UART0接收緩沖區(qū)

6、觸發(fā)點(diǎn)為8字節(jié),同時(shí)使能并復(fù)位發(fā)送和接收FIFOUART的數(shù)據(jù)收發(fā)的數(shù)據(jù)收發(fā)2UART數(shù)據(jù)收發(fā)UnLSR UnIIR查詢發(fā)送狀態(tài)查詢接收狀態(tài)UnLSR UnIIR接收數(shù)據(jù)UnRBR 發(fā)送數(shù)據(jù)UnTHR發(fā)送過程接收過程 在數(shù)據(jù)收發(fā)的過程中,通常采用查詢和中斷兩種方式來進(jìn)行。它們的基本原理如下:中斷方式:通過中斷實(shí)現(xiàn)對數(shù)據(jù)的收發(fā),然后查詢中斷標(biāo)志寄存器(UnIIR)來進(jìn)行不同處理。查詢方式:通過查詢線狀態(tài)寄存器(UnLSR)來獲得數(shù)據(jù)發(fā)送和接收的狀態(tài),然后進(jìn)行相應(yīng)操作。 UART數(shù)據(jù)收發(fā)原理 UART發(fā)送單元 UnTHR是發(fā)送FIFO的最高字節(jié)。它包含了TX FIFO中的最新字符,可以通過總線接口

7、對其操作UnTSRTxFIFO發(fā)送單元內(nèi)部結(jié)構(gòu)發(fā)送單元內(nèi)部結(jié)構(gòu)THR發(fā)送單元u發(fā)送移位寄存器(UnTSR)u發(fā)送保持寄存器(UnTHR)u發(fā)送FIFO UART查詢方式發(fā)送 UnTSR151413121110987654321UnTHRFIFOCPU向發(fā)送保持寄存器(UnTHR)寫數(shù)據(jù),數(shù)據(jù)進(jìn)入發(fā)送FIFO,然后通過發(fā)送移位寄存器將數(shù)據(jù)從TXD引腳發(fā)送出去 UnLSR5UnLSR5反映發(fā)送FIFO中是否包含數(shù)據(jù)。FIFO有數(shù)據(jù) U0THR = ucDat; while (U0LSR & 0 x20) = 0); TXD注意:注意: UnLSR5和和UnLSR6有什么區(qū)別?有什么區(qū)別?

8、UART接收單元接收單元u接收移位寄存器(UnRSR)u接收保持寄存器(UnRBR)u接收FIFOUnRSRRxFIFO接收單元內(nèi)部結(jié)構(gòu)接收單元內(nèi)部結(jié)構(gòu)RBR UnRBR是接收FIFO的最高字節(jié),它包含了最高接收到的字符,可以通過總線接口讀取它。 UART查詢方式接收 UnRSR151413121110987654321UnRBRFIFOUnLSR0UnLSR0反映接收FIFO中是否包含數(shù)據(jù)。移位寄存器(RSR)從RXD引腳接收串行數(shù)據(jù)后,送入接收FIFO;CPU從接收保持寄存器(UnRBR)將收到的數(shù)據(jù)讀出 while (U0LSR & 0 x01) = 0); ucRcvData

9、= U0RBR; FIFO有數(shù)據(jù)若無數(shù)據(jù),則始終查詢,浪費(fèi)CPU的資源 UART中斷寄存器中斷狀態(tài)0中斷標(biāo)志3 : 1功能位UnIIR位位0: 表示中斷是否掛起表示中斷是否掛起 0:至少:至少1個(gè)中斷掛起個(gè)中斷掛起 1:沒有掛起中斷:沒有掛起中斷位位31:表示中斷狀態(tài):表示中斷狀態(tài) 001:發(fā)送中斷:發(fā)送中斷 010:接收數(shù)據(jù)中斷:接收數(shù)據(jù)中斷 110:字符超時(shí)中斷:字符超時(shí)中斷 其他:略其他:略 UART中斷方式接收 UnRSR151413121110987654321UnRBRFIFO觸發(fā)點(diǎn)當(dāng)RX FIFO中數(shù)據(jù)未達(dá)8個(gè)字節(jié),且在一斷時(shí)間內(nèi)未放入數(shù)據(jù),會產(chǎn)生接收器超時(shí)中斷;當(dāng)RX FIFO

10、中寄存器字節(jié)數(shù)達(dá)到8個(gè)時(shí),觸發(fā)RDA中斷。收到8個(gè)字符,到達(dá)預(yù)設(shè)值,產(chǎn)生RDA中斷產(chǎn)生字符超時(shí)中斷(CTI)假設(shè)此時(shí)UnFCR7:6為10,則RX的觸發(fā)點(diǎn)設(shè)置為8個(gè)字節(jié)等待3.5-4.5個(gè)字節(jié)的時(shí)間可以一次讀取多個(gè)數(shù)據(jù),當(dāng)對UnRBR執(zhí)行讀操作,中斷標(biāo)志被清除。仍然沒有接收到數(shù)據(jù) RDA中斷服務(wù)程序 switch(U0IIR & 0 x0f) case 0 x04: /* 發(fā)生發(fā)生 RDA 中斷中斷 */ for(i = 0; i 8; i+) /* 連續(xù)讀取連續(xù)讀取 U0RBR 寄存器寄存器 8 次次 */ RvBufi=U0RBR; /*將接收到的數(shù)據(jù)保存到接收緩沖區(qū)將接收到的數(shù)據(jù)

11、保存到接收緩沖區(qū) RcvBuf中中 */ CTI中斷服務(wù)程序 switch(U0IIR & 0 x0f) case 0 x0c: /* 發(fā)生超時(shí)中斷發(fā)生超時(shí)中斷CTI */ while(U0LSR & 0 x01) = 1) /* 如果接收如果接收 FIFO 中含有數(shù)據(jù),中含有數(shù)據(jù), 就讀取就讀取 UnRBR 寄存器寄存器 */RcvBuf i+ = U0RBR; /* 將數(shù)據(jù)保存到接收緩沖區(qū)將數(shù)據(jù)保存到接收緩沖區(qū) RcvBuf中中 */ break 初始化例程#define UART_BPS 115200 /* 定義通訊波特率定義通訊波特率 */ /*/* 函數(shù)名稱:函數(shù)名稱

12、: UART0_Ini * 函數(shù)功能:函數(shù)功能: 初始化串口初始化串口 0。設(shè)置為。設(shè)置為 8 位數(shù)據(jù)位,位數(shù)據(jù)位, 1 位停止位,無奇偶位停止位,無奇偶校驗(yàn),校驗(yàn), 波特率為波特率為 115200 */void UART0_Ini(void) uint32_t Fdiv = 0; U0LCR = 0 x83; /* DLAB = 1,可設(shè)置波特率,可設(shè)置波特率 */ Fdiv = (Fpclk / 16) / UART_BPS; /* 設(shè)置波特率設(shè)置波特率 */ U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0 x03; /* 鎖定除數(shù)訪問鎖

13、定除數(shù)訪問 */ U0FCR = 0 x07; /* 使能并復(fù)位使能并復(fù)位 FIFO */ 查詢方式發(fā)送例程/* 函數(shù)名稱:函數(shù)名稱: UART0_SendByte * 函數(shù)功能:函數(shù)功能: 向串口發(fā)送字節(jié)數(shù)據(jù),并等待發(fā)送完畢向串口發(fā)送字節(jié)數(shù)據(jù),并等待發(fā)送完畢 * 入口參數(shù):入口參數(shù): data 要發(fā)送的數(shù)據(jù)要發(fā)送的數(shù)據(jù) * 出口參數(shù):無出口參數(shù):無 */void UART0_SendByte(uint8 data) U0THR = data; /* 發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) */ while ( (U0LSR&0 x40)=0 ); /* 等待數(shù)據(jù)發(fā)送完畢等待數(shù)據(jù)發(fā)送完畢 */ 查詢方式接收例程/* 函數(shù)名稱:函數(shù)名稱: UART0_RcvByte * 函數(shù)功能:函數(shù)功能: 從串口接收一個(gè)字節(jié)的數(shù)據(jù)。使用查詢方式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論