實驗九 UART驅(qū)動實驗_第1頁
實驗九 UART驅(qū)動實驗_第2頁
實驗九 UART驅(qū)動實驗_第3頁
實驗九 UART驅(qū)動實驗_第4頁
實驗九 UART驅(qū)動實驗_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗九UART驅(qū)動實驗東南大學(xué)國家專用集成電路系統(tǒng)工程技術(shù)研究中心0. 目錄實驗?zāi)康膶嶒炘韺嶒瀮?nèi)容1. 實驗?zāi)康氖煜S232的接口概念掌握UART工作方式通過實驗掌握中斷控制的基本原理2. 實驗原理UART支持RS-232標準的非歸零的編碼格式,也支持紅外模式下的編碼格式。UART通過RS-232協(xié)議和外設(shè)間進行串行通信。另外,通過外圍電路將紅外信號轉(zhuǎn)變成電信號(接收信息時)或?qū)㈦娦盘栟D(zhuǎn)變成紅外信號(發(fā)送時),然后再和UART進行串行通信,這樣就可以支持低速紅外通信。2.1 實驗原理(RS232的接口概念)RS232是基于UART的異步串行通訊,不提供獨立的發(fā)送使能控制信號,它是符合EAT/TAI-232標準的通信接口,通訊距離短(僅15米),并且只能進行點到點通訊,不能直接組網(wǎng),常被應(yīng)用于近距離HOST機通信.2.1 實驗原理(基本概念)位傳送時間—一個位傳送時間是串行地發(fā)送或接收一個數(shù)據(jù)位的時間,等于波特率頻率的倒數(shù)。起始位—-起始位是指一位數(shù)據(jù)位的邏輯“0”,它表示一幀數(shù)據(jù)的開始。起始位必須從“1”到“0”的跳變沿開始。在此之前必須有一位的邏輯“1”。停止位—一個停止位是指一位或多位的邏輯“1”,表示一幀數(shù)據(jù)的結(jié)束。中止符—-如果在某一幀數(shù)據(jù)中所有的數(shù)據(jù)位包括停止位都是“0”,就是一個中止符。中止符表示一段信息傳送的結(jié)束或另一段數(shù)據(jù)傳送的開始。2.1 實驗原理(基本概念)幀—一幀數(shù)據(jù)包括起始位,一定位數(shù)的數(shù)據(jù)位和停止位。其中數(shù)據(jù)位(信息位)的位數(shù)取決于預(yù)先設(shè)定的格式,且這一格式必須得到收發(fā)雙方的共同確認。最為普遍的數(shù)據(jù)幀的格式是一位起始位后跟8位數(shù)據(jù)位,可選的奇偶校驗位,最后是一位或多位停止位。幀錯誤—-如果在接收方發(fā)現(xiàn)停止位丟失,這種情況就是幀錯誤。幀錯誤之所以發(fā)生是因為一幀數(shù)據(jù)的邊界和接收器的位計數(shù)器不同步。如果某一位數(shù)據(jù)位出現(xiàn)在預(yù)期的停止位的位置而這一數(shù)據(jù)位恰好是“1”,則幀錯誤就不會被發(fā)現(xiàn)。如果在發(fā)送方送出中止符,在接收方往往表現(xiàn)為幀錯誤。另外,如果UART設(shè)置為兩個停止位而在接收時僅檢測出一位停止位,那么這種錯誤沒有定義為幀錯誤。2.1 實驗原理(基本概念)空閑狀態(tài)--在非歸零的編碼格式下連續(xù)的“1”狀態(tài)或者是在紅外格式下連續(xù)的某種選定的極性狀態(tài)。溢出錯誤--接收到最后一個字符被略去以免該字符將UART接收緩沖區(qū)中已有的字符覆蓋。出現(xiàn)溢出錯誤意味著軟件讀取緩沖區(qū)中的數(shù)據(jù)的速度跟不上在RXD線上接收數(shù)據(jù)的速率。

UART也支持紅外模式下的編碼格式,通過外圍電路將紅外信號轉(zhuǎn)變成電信號(接收信息時)或?qū)㈦娦盘栟D(zhuǎn)變成紅外信號(發(fā)送時),然后再和UART進行串行通信,這樣就可以支持低速紅外通信。2.2 實驗原理(UART)2.2 實驗原理(UART工作方式)主要特征:全雙工操作5-8位字符操作可配置的奇偶校驗(偶校驗,奇校驗,不用奇偶校驗,或固定校驗位)可配置的停止位(1,1.5,2位)Break產(chǎn)生和探測功能16級深度(字節(jié)寬度)的接受FIFO,可配置觸發(fā)級和超時中斷16級深度(字節(jié)寬度)的發(fā)送FIFO,可配置觸發(fā)級中斷靈活的波特率配置2.2 實驗原理(UART工作方式)發(fā)送發(fā)送器Tx

從CPU接收并行數(shù)據(jù),存入TxFIFO,然后在字符中加入起始位,奇偶校驗位。停止位后按照設(shè)置的波特率串行(LSBfirst)發(fā)送出去。2.2 實驗原理(UART工作方式)發(fā)送發(fā)送觸發(fā)級中斷一個16級深度的FIFO,可以根據(jù)系統(tǒng)的情況配置Tx

請求數(shù)據(jù)的觸發(fā)級當(dāng)TxFIFO中的數(shù)據(jù)小于等于配置的FIFO觸發(fā)級時,產(chǎn)生中斷通過讀IIR寄存器或者向TxFIFO中寫數(shù)據(jù)直到超過配置的觸發(fā)級,可以清除中斷中斷清除后只有先使TxFIFO中的數(shù)據(jù)大于配置觸發(fā)級后,才能再次產(chǎn)生中斷2.2 實驗原理(UART工作方式)發(fā)送TxFIFO寫滿時:當(dāng)TxFIFO中數(shù)據(jù)已滿,再寫入的數(shù)據(jù)將被丟棄硬件自動流控:當(dāng)接收方中斷接收,或者接收忙時,將產(chǎn)生停止發(fā)送信號并傳送給UART,此時UART將停止發(fā)送數(shù)據(jù)并等待,直到接收方可以重新接收數(shù)據(jù)時,傳送繼續(xù)2.2 實驗原理(UART工作方式)接收接收器Rx串行地接收數(shù)據(jù),并把它們轉(zhuǎn)變成并行的字符.當(dāng)開始接收時,接收器檢測起始位,接下來,在每個數(shù)據(jù)位的中間時刻采樣該數(shù)據(jù)位以確定其邏輯狀態(tài)。一旦起始位被確認,則以后的數(shù)據(jù)位,奇偶校驗位,停止位依次被接收。2.2 實驗原理(UART工作方式)接收接收觸發(fā)中斷一個16級深度的FIFO,可以根據(jù)系統(tǒng)的情況配置Rx請求數(shù)據(jù)的觸發(fā)級當(dāng)RxFIFO中的數(shù)據(jù)大于等于配置的FIFO觸發(fā)級時,產(chǎn)生中斷通過讀取向RxFIFO中的數(shù)據(jù)直到低于配置的觸發(fā)級,可以清除中斷超時中斷(timeout)當(dāng)RxFIFO中有數(shù)據(jù)且數(shù)據(jù)數(shù)目小于觸發(fā)級,如果沒有讀取FIFO中的數(shù)據(jù)且過了一段時間后,將產(chǎn)生timeout中斷當(dāng)讀空RxFIFO后,將不再產(chǎn)生timeout中斷2.2 實驗原理(UART工作方式)發(fā)送RxFIFO寫滿時:當(dāng)RxFIFO中數(shù)據(jù)已滿,再接收的數(shù)據(jù)將被丟棄硬件自動流控:當(dāng)RxFIFO達到配置觸發(fā)級時,會通知外部設(shè)備暫停發(fā)送。讀空RxFIFO中數(shù)據(jù)后,在通知外部設(shè)備可以繼續(xù)發(fā)送數(shù)據(jù)2.2 實驗原理(UART工作方式)紅外接口 是將待傳輸?shù)臄?shù)據(jù)轉(zhuǎn)變成IRDA串行紅外物理層所規(guī)定的格式。發(fā)送:如果是“0”則發(fā)出一個窄的正脈沖,其寬度為3/16個周期.如果是“1”則不發(fā)出脈沖。外圍電路需驅(qū)動紅外LED接收:如果是“1”則輸入一個窄的負脈沖.如果是“0”則不輸入脈沖.從RXD引腳上接收的數(shù)據(jù)通過多路選擇器送到相應(yīng)的解碼單元。外圍電路將紅外信號轉(zhuǎn)變成電信號2.3 實驗原理(UART驅(qū)動的實現(xiàn))初始化選定波特率選擇接收觸發(fā)中斷和發(fā)送觸發(fā)中斷根據(jù)要求,打開或關(guān)閉接收或發(fā)送中斷中斷服務(wù)錯誤產(chǎn)生中斷接收發(fā)送中斷2.4 實驗原理(中斷的實現(xiàn))異常向量表(通常放在0x00處)是異常處理的入口地址;當(dāng)異常產(chǎn)生時,硬件會自動將pc指向?qū)?yīng)的異常向量處;同時也進入了對應(yīng)的異常模式中(堆棧也跟隨著切換到了相應(yīng)的模式中)2.4 實驗原理(中斷服務(wù)的實現(xiàn))中斷服務(wù)分為底層和上層:底層:模式的切換,堆棧的處理,中斷狀態(tài)的處理,pc和lr的保存與恢復(fù),臨時寄存器的保存和恢復(fù)(上下文切換)<int_gfd.s>上層:中斷位的判斷,相應(yīng)模塊的中斷處理函數(shù)<int_vec_handler.c>2.4 實驗原理(超級終端的使用)開始->所有程序->附件->通訊->超級終端選擇端口(com1,com2)端口設(shè)置,選擇默認設(shè)置3. 實驗內(nèi)容通過已有代碼的實驗,理解UART控制器的工作方式和原理字符接發(fā)實驗3.1 理解實驗code目錄夾下:UART驅(qū)動實驗:

uart_lab實驗結(jié)果通過觀察超級終端。3.1 UART總體實驗流程系統(tǒng)底層初始化(堆棧的建立)主函數(shù)(main)調(diào)用底層模塊(ModuleUart)根據(jù)系統(tǒng)時鐘配置分頻比系統(tǒng)初始化(pmc_init,INT_INIT)pmc_init:配置系統(tǒng)時鐘INT_INIT:使能中斷并屏蔽無限循環(huán)等待(while(1))配置與PC串口通訊的波特率等待中斷初始化UART(init_uart0)打開接收觸發(fā)中斷確定發(fā)送和接收的中斷出發(fā)位使能中斷控制器的UART中斷3.1 UART中斷服務(wù)流程主函數(shù)無限循環(huán)等待(while(1))進入中斷異常入口保護現(xiàn)場跳轉(zhuǎn)到中斷向量處理中中斷底層處理查找中斷號并調(diào)用相應(yīng)的中斷處理函數(shù)退出中斷回復(fù)現(xiàn)場中斷上層處理中斷底層處理進入UART中斷服務(wù)函數(shù)3.1 中斷服務(wù)函數(shù)中斷服務(wù)函數(shù)(int_serv_uart0)屏蔽中斷進入中斷處理接收數(shù)據(jù)狀態(tài)中斷接收數(shù)據(jù)有效中斷接收數(shù)據(jù)超時中斷發(fā)送數(shù)據(jù)有效中斷Modem狀態(tài)中斷處理接收錯誤從接收FIFO中接收數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論