在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      關(guān) 閉

      新聞中心

      EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于DMA控制器的UART串行通信設(shè)計(jì)

      基于DMA控制器的UART串行通信設(shè)計(jì)

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

      摘要:針對大數(shù)據(jù)量的串口間,在常規(guī)的數(shù)據(jù)的基礎(chǔ)上,結(jié)合Cortex-M3微的作用,實(shí)現(xiàn)控制的串口數(shù)據(jù)包收發(fā)。鏈表項(xiàng)緩存,最終實(shí)現(xiàn)的分散/聚集模式的數(shù)據(jù)傳輸過程,主要是發(fā)送過程。提高了數(shù)據(jù)過程的MCU獨(dú)立性和MCU利用的效率。
      關(guān)鍵詞:DMA;;鏈表項(xiàng);分散/聚集

      常規(guī)下,UART的數(shù)據(jù)收發(fā)可由MCU控制UART的內(nèi)部FIFO來完成。但具體不論是以中斷還是以查詢的形式,過程中總是會(huì)占用到MCU的時(shí)間,即便在其FIFO的最大有效利用時(shí)。這樣,在實(shí)際應(yīng)用中,當(dāng)串口數(shù)據(jù)包量較大時(shí),UART的發(fā)送過程會(huì)占用MCU很長時(shí)間,其中大多數(shù)時(shí)間可能是在一次等待數(shù)據(jù)傳輸?shù)耐瓿?。為了?jié)省這段時(shí)間,提高M(jìn)CU的使用效率,以完成更多的數(shù)據(jù)處理,將會(huì)用到DMA。DMA意思是直接內(nèi)存訪問,是指不經(jīng)由CPU而直接從內(nèi)存中存取數(shù)據(jù)的數(shù)據(jù)交換模式。當(dāng)UART的使用DMA控制器控制發(fā)送過程時(shí),MCU會(huì)將發(fā)送的控制權(quán)交給DMA硬件控制器,從而在數(shù)據(jù)發(fā)送的時(shí)間中去處理其它的事務(wù)。
      本文將結(jié)合ARM的Cortex-M3內(nèi)核處理器來UART的DMA控制過程。Cortex-M3內(nèi)核的處理器,是ARM公司最新一代的ARMv7架構(gòu)的32位處理器。其LPC176X系列的MCU處理器內(nèi)部帶有8通道的DMA控制器。下面將使用這些DMA控制器通道來實(shí)現(xiàn)UART的數(shù)據(jù)收發(fā)過程。

      1 系統(tǒng)結(jié)構(gòu)及原理
      1. 1 UART控制器
      LPC176X有4路UART控制器,通過設(shè)置其波特率、停止位、數(shù)據(jù)長度等參數(shù)來完成2個(gè)UART口的通信,當(dāng)然外部通過電平轉(zhuǎn)換可實(shí)現(xiàn)為RS232或RS485等接口類型,這里只系統(tǒng)地用內(nèi)的部UART接口。
      硬件的連線上采用交叉互連,即一個(gè)UART接口的TX接到另一個(gè)接口的RX。軟件上傳輸?shù)臄?shù)據(jù)報(bào)文格式可由不同應(yīng)用不同設(shè)定,這里只籠統(tǒng)的稱做數(shù)據(jù)包。
      1.2 DMA控制器
      LPC176X的DMA控制器允許外設(shè)到存儲(chǔ)器,存儲(chǔ)器到外設(shè),外設(shè)到外設(shè)和存儲(chǔ)器到存儲(chǔ)器之間的傳輸。每個(gè)DMA流都可以為單個(gè)源和目的提供單向串行DMA傳輸。
      1.3 鏈表項(xiàng)及其標(biāo)識(shí)
      DMA控制器使用鏈表項(xiàng)(LLI)來支持分散/聚集(Scatter-gather),分散/聚集是指DMA單次傳輸可以使用不必連續(xù)的內(nèi)存空間,它的效果相當(dāng)于若干個(gè)簡單DMA過程的串連。在分散/聚集模式下,源和目標(biāo)數(shù)據(jù)區(qū)由一連串的鏈表來定義,每個(gè)鏈表項(xiàng)控制著一個(gè)數(shù)據(jù)塊的傳輸,將這個(gè)數(shù)據(jù)塊傳輸完畢后,選擇并裝載另一個(gè)鏈表項(xiàng)來繼續(xù)DMA操作或停止DMA流。第一個(gè)鏈表項(xiàng)需要被編程到DMA控制器的對應(yīng)通道。鏈表項(xiàng)所描述的傳輸數(shù)據(jù)包通常需要進(jìn)行一次或多次DMA突發(fā)傳輸?shù)皆O(shè)定的源或目標(biāo)。如不需要鏈表項(xiàng)分散/聚集,那么鏈表地址寄存器須設(shè)置為零。一個(gè)鏈表的最后一個(gè)鏈表項(xiàng)也須設(shè)置為零。
      一個(gè)鏈表項(xiàng)的內(nèi)容由4個(gè)字組成,依次為源地址、目標(biāo)地址、下個(gè)鏈表項(xiàng)地址及控制字。為了方便記錄DMA鏈表內(nèi)容,并定義一個(gè)鏈表內(nèi)容結(jié)構(gòu)體標(biāo)識(shí),標(biāo)識(shí)名稱記作stDMALinkListInfor,定義如下:
      a.JPG

      2 緩存區(qū)的設(shè)計(jì)
      2.1 串行數(shù)據(jù)緩存區(qū)的設(shè)計(jì)
      建立UARTn的接口數(shù)據(jù)緩存區(qū),記作UARTn_BUF(n),用來存儲(chǔ)UART串口數(shù)據(jù)包。為數(shù)據(jù)緩存區(qū)設(shè)置空緩存地址的FIFO隊(duì)列UARTn_BUF_FR EE_TABLE,用來存放未被數(shù)據(jù)填充占用的空數(shù)據(jù)緩存分區(qū)地址;設(shè)置已占用緩存地址的FIFO隊(duì)列UARTn_BUF_FILL_TABLE,用來存放已經(jīng)被數(shù)據(jù)填充占用的數(shù)據(jù)緩存分區(qū)地址。


      上一頁 1 2 3 4 下一頁

      評論


      相關(guān)推薦

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

      關(guān)閉