新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于散列DMA的高速串口驅(qū)動設(shè)計

        基于散列DMA的高速串口驅(qū)動設(shè)計

        作者: 時間:2010-05-26 來源:網(wǎng)絡(luò) 收藏

        數(shù)據(jù)傳輸可分為塊傳輸和散列傳輸兩種方式。在傳輸數(shù)據(jù)的過程中,要求源物理地址和目標物理地址必須是連續(xù)的。但是在某些計算機體系中(如IA架構(gòu)),連續(xù)的存儲器地址在物理上不一定是連續(xù)的,所以傳輸要分成多次完成。傳輸完一塊物理上連續(xù)的數(shù)據(jù)后引發(fā)一次中斷,然后進行下一塊物理上連續(xù)的數(shù)據(jù)傳輸,這就是DMA塊傳輸方式(Block DMA)。散列傳輸是在塊傳輸方式上發(fā)展起來的,它與一個傳輸鏈表相關(guān),如圖2所示。該鏈表可以是單向結(jié)構(gòu)或環(huán)形結(jié)構(gòu)??刂谱种邪瑪?shù)據(jù)位寬、數(shù)據(jù)塊大小、當前塊傳輸結(jié)束是否引發(fā)中斷等控制信息。DMA塊傳輸可看作是只含有一個節(jié)點,且下一節(jié)點指針總是指向當前節(jié)點的散列傳輸。采用散列DMA方式能更靈活、高效地傳輸數(shù)據(jù)。

        3 在SPEAR300平臺上實現(xiàn)

        3.1 硬件平臺

        SPEAR300是ST公司在ARM926EJ-S核的基礎(chǔ)上開發(fā)的高性能嵌入式處理器。其最高工作頻率為333MHz,有8個獨立的DMA通道,支持散列DMA;UART支持DMA傳輸,發(fā)送和接收FIFO大小均為16字節(jié),在192 MHz的外設(shè)總線(APB)頻率下支持的最高波特率為12 Mbps,如果提高APB的頻率還可以獲得更高的波特率。本文的硬件平臺是以SPEAR300為核心的人機界面產(chǎn)品,主要外設(shè)包括觸摸屏、液晶顯示模組、網(wǎng)口和(要支持最高波特率為12 Mbps的西門子MPI通信協(xié)議)。

        3.2 程序

        串口程序的核心是實現(xiàn)數(shù)據(jù)高效穩(wěn)定的收發(fā)。為了實現(xiàn)UART的數(shù)據(jù)傳輸,UART中斷設(shè)置為最高優(yōu)先級;同時在操作系統(tǒng)中允許中斷嵌套,打開UART接收超時中斷RTI并使能UART的DMA傳輸。這樣,當UART的發(fā)送FIFO數(shù)據(jù)減少到設(shè)定的參考值(FIFOLevel)時,發(fā)送DMA傳輸就會被觸發(fā)。同樣,當接收FIFO的數(shù)據(jù)增長到設(shè)定值時,接收DMA傳輸就會被觸發(fā)。為了減少DMA傳輸被觸發(fā)的次數(shù)同時保證數(shù)據(jù)被及時傳輸,發(fā)送FIFO Level設(shè)定為2字節(jié),而接收FIFOLevel設(shè)定為14字節(jié),將發(fā)送和接收的FIFO Level分別設(shè)定為0和16字節(jié)是有很大風(fēng)險的。MPI協(xié)議要求傳輸?shù)囊粠瑪?shù)據(jù)不能有間斷,所以在使用DMA傳輸UART數(shù)據(jù)時DMAC必須獨占系統(tǒng)總線。為了避免產(chǎn)生緩存一致性問題,使用2塊非緩存內(nèi)存區(qū)域存放待發(fā)送的數(shù)據(jù)和已接收到的數(shù)據(jù)。

        發(fā)送數(shù)據(jù)時,待發(fā)送的數(shù)據(jù)量總是已知的。先構(gòu)造一個傳輸節(jié)點,數(shù)據(jù)源地址為數(shù)據(jù)包的首地址,目的地址為UART寄存器,數(shù)據(jù)位寬為8,下一節(jié)點指針(PTR_NEXT)為空。當前數(shù)據(jù)包發(fā)送結(jié)束前,如果PTR_NEXT被更新,則下一個數(shù)據(jù)包的傳輸自動開始。當前數(shù)據(jù)包是否發(fā)送完畢,可通過讀取DMAC寄存器DMACCnControl的TransferSize字段得知。整個發(fā)送數(shù)據(jù)的過程無需觸發(fā)任何中斷,流程圖如圖3所示。如果采用DMA塊傳輸方式,就需要在每次傳輸完畢后產(chǎn)生DMA中斷,重新裝載數(shù)據(jù)到內(nèi)存中的發(fā)送數(shù)據(jù)區(qū)以發(fā)送下一個數(shù)據(jù)包。



        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 客服| 岳阳县| 巴楚县| 钦州市| 株洲市| 巩留县| 榆林市| 曲阳县| 汝城县| 武宣县| 麻江县| 苏尼特左旗| 叶城县| 江达县| 兴海县| 洱源县| 措勤县| 天全县| 固始县| 乐清市| 江城| 宁陕县| 松滋市| 大同县| 潞城市| 杭锦旗| 宜州市| 牡丹江市| 韩城市| 天长市| 凤翔县| 青冈县| 伊川县| 鹤庆县| 报价| 邮箱| 黎川县| 徐闻县| 临夏市| 原平市| 商都县|