a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > 基于DMA控制器的UART串行通信設計

基于DMA控制器的UART串行通信設計

作者: 時間:2012-04-27 來源:網絡 收藏

摘要:針對大數據量的串口間,在常規的數據的基礎上,結合Cortex-M3微的作用,實現控制的串口數據包收發。鏈表項緩存,最終實現的分散/聚集模式的數據傳輸過程,主要是發送過程。提高了數據過程的MCU獨立性和MCU利用的效率。
關鍵詞:DMA;;鏈表項;分散/聚集

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

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

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


上一頁 1 2 3 4 下一頁

評論


相關推薦

技術專區

關閉