串口通信實(shí)驗(yàn)_第1頁(yè)
串口通信實(shí)驗(yàn)_第2頁(yè)
串口通信實(shí)驗(yàn)_第3頁(yè)
串口通信實(shí)驗(yàn)_第4頁(yè)
串口通信實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、串口通信實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握ARM的串行口工作原理。2.學(xué)習(xí)編程實(shí)現(xiàn)ARM的UART通訊。3.掌握CPU利用串口通訊的方法。二、實(shí)驗(yàn)內(nèi)容學(xué)習(xí)串行通訊原理,了解串行通訊控制器,閱讀ARM芯片文檔,掌握ARM的UART相關(guān)寄存器的功能,熟悉ARM系統(tǒng)硬件的UART相關(guān)接口。編程實(shí)現(xiàn)ARM和計(jì)算機(jī)實(shí)現(xiàn)串行通訊:ARM監(jiān)視串行口,將接收到的字符再發(fā)送給串口(計(jì)算機(jī)與開發(fā)板是通過超級(jí)終端通訊的),即按PC鍵盤通過超級(jí)終端發(fā)送數(shù)據(jù),開發(fā)板將接收到的數(shù)據(jù)再返送給PC,在超級(jí)終端上顯示。三、實(shí)驗(yàn)原理介紹通信方式在通信過程中,如果通信僅在點(diǎn)對(duì)點(diǎn)之間進(jìn)行,或者點(diǎn)對(duì)多點(diǎn)之間進(jìn)行,那么,按消息傳輸?shù)姆较蚝蜁r(shí)間的不

2、同,可以將通信分為單工通信、全雙工通信以及半雙工通信。(1)單工消息只能單方向進(jìn)行傳輸?shù)囊环N通信方式稱為單工通信。如圖8-1所示,通信只能從A傳輸?shù)紹。這好比一條絕對(duì)方向的單行道路,不準(zhǔn)雙向通信也不能逆向行駛。在現(xiàn)代通信系統(tǒng)中,如模擬廣播電視系統(tǒng)(不包括現(xiàn)正在研究應(yīng)用的HFC雙向網(wǎng)絡(luò))、無(wú)線尋呼系統(tǒng)等。信號(hào)只能從廣播電視臺(tái)、無(wú)線尋呼中心發(fā)送到電視機(jī)接收機(jī)、BB機(jī)上。圖8-1 單工通信方式(2)全雙工全雙工通信是指通信雙方可以同時(shí)進(jìn)行雙向數(shù)據(jù)傳輸而互不影響的工作方式。如圖8-2所示,在這種工作方式下,通信雙方都可以同時(shí)進(jìn)行信息的發(fā)送和接收,因此,全雙工通信的信道必須是雙向信道。如果是有線的全雙工

3、方式,通信雙方會(huì)有兩根獨(dú)立的信號(hào)線分別傳輸發(fā)送信號(hào)和接收信號(hào),從而使得發(fā)送和接收可同時(shí)進(jìn)行。生活中的普通電話系統(tǒng)、移動(dòng)通信系統(tǒng)都是全雙工方式。圖8-2 雙工通信方式(3)半雙工這種方式允許數(shù)據(jù)傳輸做雙向操作,即不僅可以發(fā)送,亦可以接收信號(hào),但是,在同一時(shí)刻,只能進(jìn)行發(fā)送和接收任意一個(gè)操作。因此仍然只采用一個(gè)信道。如圖8-3所示,如果是有線通信,通信雙方只需要一根數(shù)據(jù)線連接,但是比全雙工方式耗時(shí)會(huì)更多。如對(duì)講機(jī)系統(tǒng)就是采用的半雙工通信方式。圖8-3 半雙通信方式串行同步通信與串行異步方式在通信過程中,發(fā)送方和接收方每次都只發(fā)送和接收一位數(shù)據(jù)的通信方式稱為串行通信方式。也就是說(shuō),在任意一個(gè)時(shí)刻,數(shù)

4、據(jù)線上僅有一位數(shù)據(jù)。在傳輸數(shù)據(jù)過程中,雙方需要協(xié)商時(shí)鐘信號(hào),即規(guī)定什么時(shí)候發(fā)送數(shù)據(jù)和接收數(shù)據(jù),以及每位數(shù)據(jù)所占用的時(shí)間寬度。根據(jù)雙方接收和發(fā)送數(shù)據(jù)所采用的時(shí)鐘信號(hào)是否是同一個(gè)時(shí)鐘源而分為串行異步通信方式和串行同步通信方式。串行異步通信方式中,通信雙方采用自己的時(shí)鐘信號(hào),根據(jù)信號(hào)的起始位等判斷信息,因此接收和發(fā)送僅需要兩根信號(hào)線分別用來(lái)傳送和接收信號(hào)。而串行同步通信方式中,由通信雙方的一方(或者另外設(shè)備)提供統(tǒng)一的時(shí)鐘信號(hào),在一定程序上提高通信速率,但這種通信方式需要額外的時(shí)鐘信號(hào)線。另外,這種通信方式不適合遠(yuǎn)距離傳輸,因?yàn)檫h(yuǎn)距離會(huì)使時(shí)鐘信號(hào)受到干擾,出現(xiàn)誤碼等現(xiàn)象。(1)串行異步通信方式在異步

5、傳輸模式下,傳輸數(shù)據(jù)以字符為單位,數(shù)據(jù)傳輸速率多在1.2kb/s以下。當(dāng)發(fā)送一個(gè)字符代碼時(shí):l        字符前面要加一個(gè)起始信號(hào),其長(zhǎng)度為一個(gè)碼元,極性為“0”,即空號(hào)極性。l        字符后面要加一個(gè)終止符號(hào),其長(zhǎng)度為1-2個(gè)碼元,極性為“1”,即傳號(hào)極性。加上起始終止信號(hào)后,即可區(qū)分出所傳輸?shù)淖址瑐魉蜁r(shí),字符可以連續(xù)發(fā)送,也可以單獨(dú)發(fā)送,不發(fā)字符時(shí)線路保持“1”狀態(tài),如圖8-4所示為起止式同步傳輸序列,每個(gè)字符由8bit組成,加上起止位,

6、信號(hào)共11位,兩字符之間的間隔長(zhǎng)度可以不固定。實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單。圖8-4 異步傳輸模式幀格式異步串行通信協(xié)議規(guī)定字符數(shù)據(jù)的傳輸規(guī)范總結(jié)起來(lái)有以下幾點(diǎn):起始位:通信線上沒有數(shù)據(jù)被傳送時(shí)處于邏輯“1”狀態(tài),當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首選發(fā)送一個(gè)邏輯“0”信號(hào),這個(gè)邏輯低電平就是起始位。起始位通過通信線傳向接收機(jī),接收設(shè)備檢測(cè)到這低電平后,就開始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。起始位所起的作用就是使設(shè)備同步,通信雙方必需在傳送數(shù)據(jù)位前一致同步。數(shù)據(jù)位:當(dāng)接收設(shè)備收到起始位后,開始接收數(shù)據(jù)位。數(shù)據(jù)位的個(gè)數(shù)可以是5-9位,PC機(jī)中經(jīng)常采用7-8位數(shù)據(jù)傳送。在字符傳送過程中,數(shù)據(jù)位從最低有效位開始傳送,依次在接

7、收設(shè)備中被轉(zhuǎn)換為并行數(shù)據(jù)。奇偶校驗(yàn)位:數(shù)據(jù)位發(fā)送完后,為了保證數(shù)據(jù)的可靠性傳輸,常傳送奇偶校驗(yàn)位。奇偶校驗(yàn)用于有限差錯(cuò)檢測(cè)。如果選擇偶校驗(yàn),則數(shù)據(jù)位和奇偶位的邏輯“1”的個(gè)數(shù)必須為偶數(shù),相反,如果是奇校驗(yàn),邏輯“1”的個(gè)數(shù)為奇數(shù)。停止位:在奇偶位或者數(shù)據(jù)位(當(dāng)無(wú)奇偶校驗(yàn)時(shí))之后發(fā)送停止位。停止位是一個(gè)字符數(shù)據(jù)的結(jié)束,可以是1-2位的低電平,接收設(shè)備收到停止位后,通信線路便恢復(fù)邏輯“1”狀態(tài),直到下一個(gè)字符數(shù)據(jù)的起始位到來(lái)。波特率設(shè)置:通信線路上傳送的所有位信號(hào)都保持一致的信號(hào)持續(xù)時(shí)間,每一位的寬度都由數(shù)據(jù)的碼元傳送速率確定,而碼元速率是單位時(shí)間內(nèi)傳送的碼元的個(gè)數(shù),即波特率。(2)串行同步通信方

8、式在同步通信中,通信雙方使用同一個(gè)時(shí)鐘源,這個(gè)時(shí)鐘信號(hào)可以由通信方式的一方提供或者由第三方提供。其時(shí)序圖如圖8-5所示,所有要傳輸?shù)臄?shù)據(jù)都需要與此時(shí)鐘信號(hào)同步,即每個(gè)傳輸?shù)臄?shù)據(jù)所占用的時(shí)間寬度都需要與一個(gè)時(shí)鐘變換所用時(shí)間相等。即數(shù)據(jù)在時(shí)鐘跳變(上升沿和下降沿)后一段時(shí)間內(nèi)有效。相應(yīng)的,接收方根據(jù)時(shí)鐘跳變來(lái)確定何時(shí)接收一位數(shù)據(jù)。同步傳輸使用不同的方式來(lái)表示一次傳輸?shù)拈_始和結(jié)束。圖8-5 串行同步通信方式S3C2410芯片UART基于ARM9內(nèi)核架構(gòu)的嵌入式處理器的S3C2410的UART(Universal Asynchronous Receiver and Transmitter)單元擁有3個(gè)

9、SIO(saynchronous serial I/O),每個(gè)單元都可以工作在中斷模式以及DMA(Direct Memory Access)模式。UART最大速率可以達(dá)到230.4kbps。如果外部設(shè)備提供一個(gè)時(shí)鐘信號(hào),其可以工作在更新的通信速率。每個(gè)UART通道都包含兩個(gè)16bit的FIFO來(lái)接收和發(fā)送數(shù)據(jù)。S3C2410處理器的UART支持可編程波特率、IR(infra-red)傳輸,12位停止位,58位數(shù)據(jù)寬度,同時(shí)支持奇偶校驗(yàn)。S3C2410芯片UART結(jié)構(gòu)圖如圖8-11所示為S3C2410芯片UART結(jié)構(gòu)圖。圖8-11 S3C2410芯片UART結(jié)構(gòu)圖數(shù)據(jù)發(fā)送S3C2410芯片UAR

10、T支持可編程數(shù)據(jù)傳輸幀格式。在數(shù)據(jù)幀中包含起止位、58位數(shù)據(jù)位、一位奇偶校驗(yàn)位以及12位停止位。具體設(shè)置可以在控制寄存器(ULCONn)設(shè)置。同時(shí),傳輸裝置支持中斷方式,即在傳輸?shù)臅r(shí)候強(qiáng)制輸出邏輯0中斷信號(hào)。此中斷信號(hào)在完成一個(gè)字符傳輸后傳輸,之后傳輸器繼續(xù)傳輸數(shù)據(jù)至Tx FIFO。數(shù)據(jù)接收同理,接收器亦支持可編程方式,同樣包含起止位、58位數(shù)據(jù)位、一位奇偶校驗(yàn)位以及12位停止位,具體設(shè)置可以在控制寄存器(ULCONn)設(shè)置。接收器亦可以探測(cè)到數(shù)據(jù)溢出錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、幀錯(cuò)誤以及中斷信號(hào),并且每種情況都可置相應(yīng)的錯(cuò)誤標(biāo)識(shí)。數(shù)據(jù)溢出錯(cuò)誤:在上一字符沒有接收完成時(shí)新的數(shù)據(jù)已經(jīng)到達(dá),從而覆蓋了原來(lái)

11、的數(shù)據(jù)。奇偶校驗(yàn)錯(cuò)誤:奇偶位不滿足奇偶條件。幀錯(cuò)誤:接收數(shù)據(jù)沒有有效的停止位。中斷信號(hào):RxDn輸出持續(xù)邏輯0信號(hào)(持續(xù)時(shí)間超過一幀)。功能寄存器(1)列控制寄存器S3C2410的UART單元包含三個(gè)列控制寄存器,分別是ULCON0, ULCON1和ULCON2。其說(shuō)明如表8-6所示。表8-6 列控制寄存器寄存器地址讀/寫說(shuō)明復(fù)位值ULCON00x50000000可讀/寫UART0列控制寄存器0x00ULCON10x50004000可讀/寫UART1列控制寄存器0x00ULCON20x50008000可讀/寫UART2列控制寄存器0x00ULCONn各位功能描述如表8-7所示。表8-7 ULC

12、ONn各位功能描述ULCONn位說(shuō)明初始化狀態(tài)保留位7 0紅外模式6設(shè)置是否采用紅外模式。0普通模式,1紅外模式0奇偶校驗(yàn)?zāi)J?:3設(shè)置在奇何偶校驗(yàn)?zāi)J椒绞剑?XX:無(wú);100奇校驗(yàn);101偶校驗(yàn);110強(qiáng)制為1;111強(qiáng)制為0。000停止位2設(shè)置每幀停止位位數(shù):01位停止位;1兩位停止位。0字長(zhǎng)度1:0設(shè)置每幀數(shù)據(jù)位長(zhǎng)度:005位、01=6位、10=7位、11=8位。0(2)控制寄存器S3C2410的UART單元包含三個(gè)控制寄存器,分別是UCON0, UCON1和UCON2。其說(shuō)明如表8-8所示。表8-8控制寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UCON00x50000004可讀/寫UA

13、RT0控制寄存器0x00UCON10x50004004可讀/寫UART1控制寄存器0x00UCON20x50008004可讀/寫UART2控制寄存器0x00UCONn各位功能描述如表8-9所示。表8-9 UCONn各位功能描述UCONn位說(shuō)明初始化狀態(tài)時(shí)鐘選擇10選擇時(shí)鐘來(lái)源。0=PCLK,1=UCLK。0Tx中斷類型9中斷請(qǐng)求類型。0Pulse。1Level。0Rx中斷類型8中斷請(qǐng)求類型。0Pulse。1Level。0Rx超時(shí)7禁止/允許接收超時(shí)終端。0=禁止;1允許。0接收錯(cuò)誤狀態(tài)中斷允許6當(dāng)產(chǎn)生異常時(shí)使能UART產(chǎn)生中斷中斷。如幀錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、溢出錯(cuò)誤。0不產(chǎn)生,1產(chǎn)生。0回環(huán)模式

14、5設(shè)置是否進(jìn)入回環(huán)模式。0普通模式;1回環(huán)模式。0發(fā)送中斷信號(hào)4設(shè)置UART產(chǎn)生中斷信號(hào)。如果發(fā)出一個(gè)中斷后,此位將自動(dòng)清0。0普通傳輸,1發(fā)送中斷信號(hào)。0傳輸模式3:2決定當(dāng)前UART采用何種傳輸模式。00=禁止;01中斷或者輪流模式;10DMA0請(qǐng)求(UART0),DMA3請(qǐng)求(UART2);11DMA1請(qǐng)求(UART0)。00接收模式1:0決定當(dāng)前UART采用何種接收模式。00=禁止;01中斷或者輪流模式;10DMA0請(qǐng)求(UART0),DMA3請(qǐng)求(UART2);11DMA1請(qǐng)求(UART0)。00(3)FIFO控制寄存器S3C2410的UART單元包含三個(gè)FIFO控制寄存器,分別是U

15、FCON0, UFCON1和UFCON2。其說(shuō)明如表8-10所示。表8-10 FIFO控制寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UFCON00x50000008可讀/寫UART0 FIFO控制寄存器0x00UFCON10x50004008可讀/寫UART1 FIFO控制寄存器0x00UFCON20x50008008可讀/寫UART2 FIFO控制寄存器0x00ULCONn各位功能描述如表8-11所示。表8-11 UFCONn各位功能描述UFCONn位說(shuō)明初始化狀態(tài)Tx FIFO觸發(fā)方式7:6決定傳輸FIFO信號(hào)標(biāo)準(zhǔn)。00 =空,01 = 4-byte,10 = 8-byte,11 = 12-byte

16、。00Rx FIFO觸發(fā)方式5:4決定接收FIFO信號(hào)標(biāo)準(zhǔn)。00 = 4-byte,01 = 8-byte,10 = 12-byte,11 = 16-byte。00保留3 0Tx FIFO復(fù)位2自動(dòng)清零。0 = 一般模式 1= Tx FIFO復(fù)位。0Rx FIFO復(fù)位1自動(dòng)清零。0 = 一般模式 1= Tx FIFO復(fù)位。0FIFO使能00禁止,1使能。0(4)MODEM控制寄存器S3C2410的UART單元包含三個(gè)MODEM控制寄存器,分別是UMCON0, UMCON1和UMCON2。其說(shuō)明如表8-12所示。表8-12 MODEM控制寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UMCON00x

17、5000000C可讀/寫UART0 MODEM控制寄存器0x00UMCON10x5000400C可讀/寫UART1 MODEM控制寄存器0x00保留0x5000800C-保留-ULCONn各位功能描述如表8-13所示。表8-13 MODEM各位功能描述MODEMn位說(shuō)明初始化狀態(tài)保留7:5這些位必須為000AFC41使能,0禁止0保留3:1這些位必須為0000請(qǐng)求發(fā)送0如果使能AFC,此位將被忽略。S3C2410將自動(dòng)控制nRTS信號(hào)。如果禁止AFC。nRTS必須由軟件控制。0高電平,1低電平。0(5)Tx/Rx狀態(tài)寄存器S3C2410的UART單元包含三個(gè)Tx/Rx狀態(tài)寄存器,分別是UTRS

18、TAT 0, UTRSTAT1和UTRSTAT 2。其說(shuō)明如表8-14所示。表8-14 MODEM控制寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UTRSTAT00x50000010可讀UART0 Tx/Rx狀態(tài)寄存器0x6UTRSTAT 10x50004010可讀UART1 Tx/Rx狀態(tài)寄存器0x6UTRSTAT20x50008010可讀UART2 Tx/Rx狀態(tài)寄存器0x6UTRSTAT n各位功能描述如表8-15所示。表8-15 UTRSTATn各位功能描述UTRSTAT n位說(shuō)明初始化狀態(tài)傳輸裝置空2當(dāng)傳輸buffer寄存器沒有可用數(shù)據(jù)傳輸或者傳輸移位寄存器為空時(shí)自動(dòng)設(shè)置為1。0非空;1空。1傳

19、輸Buffer空1當(dāng)傳輸寄存器為空時(shí)自動(dòng)設(shè)置為1。0非空,1空。1接收Buffer數(shù)據(jù)準(zhǔn)備好0當(dāng)接收buffer寄存器有有效數(shù)據(jù)通過RxDn端口接收數(shù)據(jù)。0空,1有接收數(shù)據(jù)。0(6)錯(cuò)誤狀態(tài)寄存器S3C2410的UART單元包含三個(gè)錯(cuò)誤狀態(tài)寄存器,分別是UERSTAT0, UERSTAT1和UERSTAT2。其說(shuō)明如表8-16所示。表8-16 錯(cuò)誤狀態(tài)寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UERSTAT 00x50000014可讀UART0 錯(cuò)誤狀態(tài)寄存器0x0UERSTAT 10x50004014可讀UART1 錯(cuò)誤狀態(tài)寄存器0x0UERSTAT 20x50008014可讀UART2 錯(cuò)誤狀態(tài)寄存

20、器0x0UERSTAT n各位功能描述如表8-17所示。表8-17 UERSTAT n各位功能描述UERSTAT n位說(shuō)明初始化狀態(tài)保留30接收時(shí)無(wú)幀錯(cuò)誤;1幀錯(cuò)誤。0幀錯(cuò)誤2在接收操作時(shí)無(wú)論何時(shí)出現(xiàn)錯(cuò)誤將自動(dòng)置1。0無(wú)幀錯(cuò)誤。1幀錯(cuò)誤。0保留10無(wú)幀錯(cuò)誤。1幀錯(cuò)誤。0溢出錯(cuò)誤0無(wú)論何時(shí)發(fā)生溢出錯(cuò)誤將置此位為1。0無(wú)錯(cuò)誤。1溢出錯(cuò)誤。0(7)FIFO狀態(tài)寄存器S3C2410的UART單元包含三個(gè)FIFO狀態(tài)寄存器,分別是UFSTAT0, UFSTAT1和UFSTAT2。其說(shuō)明如表8-18所示。表8-18 FIFO狀態(tài)寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UFSTAT 00x50000018可讀UAR

21、T0 FIFO狀態(tài)寄存器0x00UFSTAT 10x50004018可讀UART1 FIFO狀態(tài)寄存器0x00UFSTAT 20x50008018可讀UART2 FIFO狀態(tài)寄存器0x00UFSTAT n各位功能描述如表8-19所示。表8-19 UFSTAT n各位功能描述UFSTAT n位說(shuō)明初始化狀態(tài)保留15:100接收時(shí)無(wú)幀錯(cuò)誤;1幀錯(cuò)誤。0Tx FIFO滿9如果傳送FIFO滿將自動(dòng)設(shè)置此位為1。00位Tx FIFO數(shù)據(jù)15位;1FULL。0Rx FIFO滿8如果接收FIFO滿將自動(dòng)設(shè)置此位為1。00位Tx FIFO數(shù)據(jù)15位;1FULL。0Tx FIFO計(jì)數(shù)器7:4Tx FIFO數(shù)據(jù)個(gè)

22、數(shù)。0Rx FIFO計(jì)數(shù)器3:0Rx FIFO數(shù)據(jù)個(gè)數(shù)。0(8)MODEM狀態(tài)寄存器S3C2410的UART單元包含三個(gè)MODEM狀態(tài)寄存器,分別是UMSTAT0, UMSTAT1和UMSTAT2。其說(shuō)明如表8-20所示。表8-18 MODEM狀態(tài)寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UMSTAT 00x5000001C可讀UART0 FIFO狀態(tài)寄存器0x00UMSTAT 10x5000401C可讀UART1 FIFO狀態(tài)寄存器0x00保留0x5000801C-保留-UMSTAT n各位功能描述如表8-20所示。表8-20 UMSTAT n各位功能描述UMSTAT n位說(shuō)明初始化狀態(tài)保留3

23、0;0Delta CTS2指示nCTS值相對(duì)于上次CPU讀取輸入狀態(tài)發(fā)生了改變。0沒有發(fā)生變化,1變化。0保留1 0發(fā)送清除00CTS信號(hào)沒有激活(高電平);1CTS激活(低電平)。0(9)傳輸緩沖寄存器S3C2410的UART單元包含三個(gè)傳輸緩沖寄存器,分別是UTXH0, UTXH1和UTXH2。其說(shuō)明如表8-21所示。表8-21 傳輸緩沖寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UTXH 00x50000020(L)0x50000023(B)可寫(字節(jié))UART0 傳輸緩沖寄存器 UTXH 10x50004020(L)0x50004023(B)可寫(字節(jié))UART1 傳輸緩沖寄存

24、器 UTXH20x50008020(L)0x50008023(B)可寫(字節(jié))UART2 傳輸緩沖寄存器 (10)接收緩沖寄存器S3C2410的UART單元包含三個(gè)接收緩沖寄存器,分別是URXH0, URXH1和URXH 2。其說(shuō)明如表8-22所示。表8-22 接收緩沖寄存器寄存器地址讀/寫說(shuō)明復(fù)位值URXH 00x50000024(L)0x50000027(B)可寫(字節(jié))UART0 接收緩沖寄存器 URXH 10x50004024(L)0x50004027(B)可寫(字節(jié))UART1 接收緩沖寄存器 URXH 20x50008024(L)0x5000

25、8027(B)可寫(字節(jié))UART2 接收緩沖寄存器 (11)波特率約數(shù)寄存器S3C2410的UART單元包含三個(gè)波特率約數(shù)寄存器,分別是UBRDIV0, UBRDIV1和UBRDIV2。其說(shuō)明如表8-232所示。表8-23 波特率約數(shù)寄存器寄存器地址讀/寫說(shuō)明復(fù)位值UBRDIV 00x50000028可讀/寫UART0 波特率約數(shù)寄存器 UBRDIV10x50004028可讀/寫UART1 波特率約數(shù)寄存器 UBRDIV 20x50008028可讀/寫UART2 接波特率約數(shù)寄存器 S3C2410串行接口硬件電路如圖8-13所示為S3C2410芯片UA

26、RT采用MAX3232進(jìn)行電平轉(zhuǎn)換,從而輸出RS232C標(biāo)準(zhǔn)信號(hào)的電路圖。MAX3232主要實(shí)現(xiàn)電平轉(zhuǎn)換功能。兩個(gè)DB9硬件接口(UART0、UART1)可以直接與計(jì)算機(jī)以及其它符合RS232C標(biāo)準(zhǔn)的串行接口直接相連。MAX3232左側(cè)的TXD0、RXD0、TXD1、RXD1分別與S3C2410芯片UART0和UART1相連。圖8-13S3C2410芯片UART接口電平轉(zhuǎn)換電路四、串行通信實(shí)驗(yàn)及C源代碼分析本處給出一個(gè)無(wú)操作系統(tǒng)支持的串行通信測(cè)試程序及源碼分析及試驗(yàn)步驟,此試驗(yàn)步驟以博創(chuàng)UP-NETARM2410為試驗(yàn)平臺(tái),其串行通信接口電路圖如圖8-11所示,軟件開發(fā)平臺(tái)為ADS1.2(AR

27、M Developer Suite v1.2)。如果讀者選用其它硬件平臺(tái),試驗(yàn)步驟可能略有差異。但是,此程序可以不經(jīng)過任何修改即可直接使用。因?yàn)椴捎脽o(wú)操作系統(tǒng)支持的方式編譯此程序,因此,此程序在上傳到試驗(yàn)箱時(shí)最好能夠有bootloader程序加載。當(dāng)然,讀者也可以采用直接燒寫的方式加載。根據(jù)圖8-11所示硬件電路,此硬件連接方式中每一個(gè)串口有兩根信號(hào)線(TXD和RXD)分別用來(lái)傳輸和發(fā)送數(shù)據(jù)。因此,本試驗(yàn)采用串口異步通信方式。與此程序相關(guān)的源代碼如下所示。(1)與UART相關(guān)的寄存器宏定義。l       #define UART_C

28、TL_BASE      0x50000000  /*UART寄存器基地址 */l       #define UART0_CTL_BASE     UART_CTL_BASE    /*UART0寄存器基地址 */l       #define UART1_CTL_BASE     UART_CTL_BAS

29、E + 0x4000   /*UART1寄存器基地址 */l       #define UART2_CTL_BASE     UART_CTL_BASE + 0x8000   /*UART2寄存器基地址 */l       #define bUART(x, Nb)    _REG(UART_CTL_BASE + (x)*0x4000 + (Nb)l 

30、60;     /* Offset */l       #define oULCON             0x00 /* R/W, UART 線性控制寄存器 */l       #define oUCON           0x04

31、/* R/W, UART 控制寄存器 */l       #define oUFCON             0x08 /* R/W, UART FIFO控制寄存器 */l       #define oUMCON             0x0C /* R

32、/W, UART modem 控制寄存器 */l       #define oUTRSTAT        0x10 /* R  , UART Tx/Rx狀態(tài)寄存器 */l       #define oUERSTAT        0x14 /* R  , UART Rx error狀態(tài)寄存器 */l   

33、;    #define oUFSTAT         0x18 /* R  , UART FIFO 狀態(tài)寄存器 */l       #define oUMSTAT         0x1C /* R  , UART Modem 狀態(tài)寄存器*/l       #def

34、ine oUTXHL             0x20 /*  W, UART transmit(小端模式) buffer */l       #define oUTXHB             0x23 /*  W, UART transmit(大端模式) buffer */l 

35、60;     #define oURXHL             0x24 /* R  , UART receive(小端模式) buffer */l       #define oURXHB             0x27 /* R  , UART r

36、eceive(大端模式) buffer */l       #define oUBRDIV         0x28 /* R/W, 波特率約數(shù) 寄存器 */l       /* Registers */l       #define ULCON0       

37、0;     bUART(0, oULCON)l       #define UCON0           bUART(0, oUCON)l       #define UFCON0             bUART(0, oUFCON)l

38、60;      #define UMCON0             bUART(0, oUMCON)l       #define UTRSTAT0        bUART(0, oUTRSTAT)l       #define UERSTAT0

39、0;       bUART(0, oUERSTAT)l       #define UFSTAT0         bUART(0, oUFSTAT)l       #define UMSTAT0         bUART(0, oUMSTAT)l 

40、60;     #define UTXH0           bUART(0, oUTXHL)l       #define URXH0           bUART(0, oURXHL)l       #define UBRDIV0  

41、;       bUART(0, oUBRDIV)l       #define ULCON1             bUART(1, oULCON)l       #define UCON1          bUART(1, oUCO

42、N)l       #define UFCON1             bUART(1, oUFCON)l       #define UMCON1             bUART(1, oUMCON)l    &

43、#160;  #define UTRSTAT1        bUART(1, oUTRSTAT)l       #define UERSTAT1        bUART(1, oUERSTAT)l       #define UFSTAT1         bUAR

44、T(1, oUFSTAT)l       #define UMSTAT1         bUART(1, oUMSTAT)l       #define UTXH1           bUART(1, oUTXHL)l       #define

45、 URXH1           bUART(1, oURXHL)l       #define UBRDIV1         bUART(1, oUBRDIV)l       #define ULCON2        

46、60;    bUART(2, oULCON)l       #define UCON2           bUART(2, oUCON)l       #define UFCON2             bUART(2, oUFCON)l &#

47、160;     #define UMCON2             bUART(2, oUMCON)l       #define UTRSTAT2        bUART(2, oUTRSTAT)l       #define UERSTAT2 

48、60;      bUART(2, oUERSTAT)l       #define UFSTAT2         bUART(2, oUFSTAT)l       #define UMSTAT2         bUART(2, oUMSTAT)l  &#

49、160;    #define UTXH2           bUART(2, oUTXHL)l       #define URXH2           bUART(2, oURXHL)l       #define UBRDIV2  

50、0;      bUART(2, oUBRDIV)(2)發(fā)送一個(gè)字符l       #define WrUTXH0(ch)  (*(volatile unsigned char *) UTXH0)=(unsigned char)(ch)l       #define WrUTXH1(ch)  (*(volatile unsigned char *) UTXH1)=(unsigned char)(ch)l&#

51、160;         void Uart_SendByten(int Uartnum, U8 data)/向uartnum發(fā)送數(shù)據(jù)datal                                  

52、;                 /#define U8 unsigned charl          if(Uartnum=0)l           while(!(UTRSTAT0 & 0x4);    

53、0;   / UART0 Tx/Rx狀態(tài)寄存器,其第2位標(biāo)識(shí)傳輸buffer寄存器/是否為空(0為空),發(fā)送數(shù)據(jù)直到傳輸buffer寄存器為空l(shuí)              hudelay(10);          /等待10msl            &#

54、160; WrUTXH0(data);        /發(fā)送data到傳輸U(kuò)TXH0中l(wèi)           l          Else                  &#

55、160;      /否則選用UART1l           l              while(!(rUTRSTAT1 & 0x4);  l              hudelay

56、(10);l              WrUTXH1(data);l             l             (3)接收字符測(cè)試程序l          c

57、har Uart_Getchn(char* Revdata, int Uartnum, int timeout)l                    / Revdata為接收的數(shù)據(jù),uartnum為串口標(biāo)識(shí),timeout為超時(shí)l          if(Uartnum=0)l     

58、;         l              while(!(UTRSTAT0 & 0x1);/UART0 Tx/Rx狀態(tài)寄存器的第0位標(biāo)識(shí)接收l(shuí)                      

59、;              /buffer數(shù)據(jù)是否準(zhǔn)備好。1有接收數(shù)據(jù)l              *Revdata=URXH0();         / URXH0:UART0的接收緩沖寄存器l       

60、0;      return 1;l             l          Else                    /如果從UART1接收數(shù)據(jù)l 

61、0;            l              while(!(rUTRSTAT1 & 0x1);/Receive data readl              *Revdata=RdURXH1();l   &

62、#160;          return TRUE;l             l       (4)測(cè)試主程序l       int main(void)l       l       

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論