新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM中基于DMA的高效UART通訊及其應(yīng)用

ARM中基于DMA的高效UART通訊及其應(yīng)用

作者: 時(shí)間:2012-04-16 來(lái)源:網(wǎng)絡(luò) 收藏

1、引言

本文引用地址:http://www.butianyuan.cn/article/171609.htm

由于串行口的廣泛,在傳統(tǒng)的8位和16位的處理器以及32位處理器中,一般都帶有串行口。傳統(tǒng)的的數(shù)據(jù)中,采用的方式一般有兩種,查詢(xún)式和中斷式。查詢(xún)方式下CPU的負(fù)擔(dān)較重,浪費(fèi)了處理器的能力,不能夠很好的處理其他的事件;中斷方式可以在接收到信息或需要發(fā)送數(shù)據(jù)時(shí)產(chǎn)生中斷,在中斷服務(wù)程序中完成數(shù)據(jù)的接收與發(fā)送。相對(duì)于查詢(xún)方式,中斷方式的CPU利用率要高。在CPU任務(wù)簡(jiǎn)單的系統(tǒng)中,使用中斷方式確實(shí)是一種好方法。但是在復(fù)雜的系統(tǒng)中,比如移動(dòng)機(jī)器人,處理器需要處理串行口通信,多個(gè)傳感器數(shù)據(jù)的采集以及處理,實(shí)時(shí)軌跡的生成,運(yùn)動(dòng)軌跡插補(bǔ)以及位置閉環(huán)控制等等任務(wù),牽扯到多個(gè)中斷的優(yōu)先級(jí)分配問(wèn)題。為了保證數(shù)據(jù)發(fā)送與接收的可靠性,需要把UART的中斷優(yōu)先級(jí)設(shè)計(jì)較高,但是系統(tǒng)可能還有其他的需要更高優(yōu)先級(jí)的中斷,必須保證其定時(shí)的準(zhǔn)確,這樣就有可能造成串行的中斷不能及時(shí)響應(yīng),從而造成數(shù)據(jù)丟失。為此,筆者在采用S3c44b0x設(shè)計(jì)移動(dòng)機(jī)器人控制器時(shí),為了保證串行的數(shù)據(jù)及時(shí)可靠的接收,同時(shí)兼顧其它任務(wù)不受影響,采用了和中斷方式相結(jié)合的UART串行通信方式。是 Direct Memory Access的縮寫(xiě),意思是“存儲(chǔ)器直接訪(fǎng)問(wèn)”,它是一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲(chǔ)器之間直接讀/寫(xiě)數(shù)據(jù),即不通過(guò)CPU,也不需要 CPU干預(yù)。整個(gè)數(shù)據(jù)傳輸操作是在一個(gè)稱(chēng)作控制器的控制下進(jìn)行的。CPU除了在數(shù)據(jù)傳輸開(kāi)始和結(jié)束時(shí)做一點(diǎn)處理外,在傳輸過(guò)程中可以進(jìn)行其他的工作。這樣,在大部分時(shí)間里,CPU和輸入/輸出設(shè)備都處于并行的操作狀態(tài)。其基本原理可以查閱教科書(shū),此處不贅述。這里僅介紹S3c44c0x的DMA控制器。

2、S3c44b0x中的DMA控制器和UART的特性

S3c44b0x采用7TDMI核,具有4 通道的DMA控制器,并且對(duì)應(yīng)有4個(gè)中斷。其中兩個(gè)DMA通道稱(chēng)做ZDMA(通用DMA),連接在SSB(系統(tǒng)總線(xiàn))上,另外兩個(gè)DMA通道稱(chēng)做 BDMA(橋DMA),連接于SSB和SPB(外設(shè)總線(xiàn))之間的接口層。連接于SSB上的ZDMA控制器可以用于從存儲(chǔ)器到存儲(chǔ)器,從存儲(chǔ)器到固定目標(biāo)的 I/O存儲(chǔ)器,和從I/O 設(shè)備到存儲(chǔ)器之間的數(shù)據(jù)傳輸。另外的兩個(gè)BDMA 控制器主要作用是在外部存儲(chǔ)器和內(nèi)部外設(shè)之間傳輸數(shù)據(jù),這里的I內(nèi)部外設(shè)包括SIO,IIS,TIMER和UART等。BDMA與ZDMA可以通過(guò)軟件啟動(dòng),也可以通過(guò)硬件啟動(dòng)。此設(shè)計(jì)中我們使用UART0,與其對(duì)應(yīng)的DMA通道為BDMA0。其控制器框圖如圖1所示。

S3c44b0x的UART單元提供2個(gè)獨(dú)立的異步串行I/O口,每個(gè)口均可以工作于中斷模式或者DMA模式,即 UART可以產(chǎn)生內(nèi)部中斷請(qǐng)求或者DMA請(qǐng)求,在CPU的串行I/O口之間傳送數(shù)據(jù),支持高達(dá)115.2KBPS的傳輸速率,每個(gè)UART通道包含2個(gè) 16位的分別用于發(fā)送和接收的FIFO通道。

6.jpg

3、硬件電路設(shè)計(jì)

由于S3c44b0x自帶支持UART的DMA控制器,所以關(guān)于DMA硬件部分不需要作任何的工作。S3C44B0X的I/O口電壓為3.3V,而PC機(jī)一端的串口采用RS232電平,所以中間要經(jīng)過(guò)電平轉(zhuǎn)換,在此采用SP3232E芯片。連接電路如圖2所示?!   ?/p>

7.jpg


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉