99爱免费_精品一区二区无码AV_欧美屁股xxxxx_日批视频国产_AV天堂亚洲区无码先锋影音_特黄A又粗又大又黄又爽A片

產品推薦:水表|流量計|壓力變送器|熱電偶|液位計|冷熱沖擊試驗箱|水質分析|光譜儀|試驗機|試驗箱


儀表網>技術中心>應用設計>正文

歡迎聯系我

有什么可以幫您? 在線咨詢

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

   2012年04月28日 17:44  
  摘要:針對大數據量的串口間通信,在常規的UART串行數據通信的基礎上,結合Cortex-M3微控制器中DMA控制器的作用,實現DMA控制的UART串口數據包收發。設計鏈表項緩存,zui終實現DMA的分散/聚集模式的數據傳輸過程,主要是發送過程。提高了串行數據通信過程的MCU獨立性和MCU利用的效率。
  
  常規下,UART的數據收發可由MCU控制UART的內部FIFO來完成。但具體不論是以中斷還是以查詢的形式,過程中總是會占用到MCU的時間,即便在其FIFO的zui大有效利用時。這樣,在實際應用中,當串口數據包量較大時,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.1UART控制器
  
  LPC176X有4路UART控制器,通過設置其波特率、停止位、數據長度等參數來完成2個UART串行口的通信,當然外部通過電平轉換可實現為RS232或RS485等接口類型,這里只系統地用內的部UART接口。
  
  硬件的連線上采用交叉互連,即一個UART接口的TX接到另一個接口的RX。軟件上傳輸的數據報文格式可由不同應用不同設定,這里只籠統的稱做數據包。
  
  1.2DMA控制器
  
  LPC176X的DMA控制器允許外設到存儲器,存儲器到外設,外設到外設和存儲器到存儲器之間的傳輸。每個DMA流都可以為單個源和目的提供單向串行DMA傳輸。
  
  1.3鏈表項及其標識
  
  DMA控制器使用鏈表項(LLI)來支持分散/聚集(Scatter-gather),分散/聚集是指DMA單次傳輸可以使用不必連續的內存空間,它的效果相當于若干個簡單DMA過程的串連。在分散/聚集模式下,源和目標數據區由一連串的鏈表來定義,每個鏈表項控制著一個數據塊的傳輸,將這個數據塊傳輸完畢后,選擇并裝載另一個鏈表項來繼續DMA操作或停止DMA流。*個鏈表項需要被編程到DMA控制器的對應通道。鏈表項所描述的傳輸數據包通常需要進行一次或多次DMA突發傳輸到設定的源或目標。如不需要鏈表項分散/聚集,那么鏈表地址寄存器須設置為零。一個鏈表的zui后一個鏈表項也須設置為零。
  
  一個鏈表項的內容由4個字組成,依次為源地址、目標地址、下個鏈表項地址及控制字。為了方便記錄DMA鏈表內容,設計并定義一個鏈表內容結構體標識,標識名稱記作stDMALinkListInfor,定義如下:
  
  2、緩存區的設計
  
  2.1串行數據緩存區的設計
  
  建立UARTn的接口數據緩存區,記作UARTn_BUF(n),用來存儲UART串口數據包。為數據緩存區設置空緩存地址的FIFO隊列UARTn_BUF_FREE_TABLE,用來存放未被數據填充占用的空數據緩存分區地址;設置已占用緩存地址的FIFO隊列UARTn_BUF_FILL_TABLE,用來存放已經被數據填充占用的數據緩存分區地址。
  
  2.2鏈表項緩存區的設計
  
  建立N個DMAx的鏈表內容結構體的緩存區DMAx_LINK_LIST_INFOR_INDEX(i)(i=1,2,3,...N-1),稱作DMAx_LINK_LIST_INFOR_CACHE(i)(i=1,2,...N-1)。其中DMAx_LINK_LIST_INFOR_CACHE(i)的地址為4字節對齊,必須為zui低2位是0的位置。
  
  2.3空鏈表項地址隊列的設計
  
  建立DMAx的可用空緩存FIFO隊列,稱作DMAx_LINK_LIST_FREE_TABLE,用于存儲N個鏈表中的空緩存區地址。當執行出隊操作時,返回一個非NULL空緩存區地址,若取回值為NULL則說明沒有可用緩存區;而執行入隊操作時,會將一個非NULL空緩存區的地址加入FIFO隊列中,執行讀取隊列長度操作時,返回隊列中可用空緩存地址的數量。
  
  2.4已占用鏈表項地址隊列的設計
  
  建立DMAx的鏈表地址FIFO隊列,記作DMAx_LINK_LIST_FILL_TABLE,用來放置占用并填充了鏈表內容的結構體緩存區地址。當執行出隊操作時,返回一個非NULL已占用緩存區地址,若取回值為NULL則說明沒有可用的已占用緩存區地址;而執行入隊操作時,會將一個非NULL已占用緩存區的地址加入FIFO隊列中,執行讀取隊列長度操作時,返回隊列中可用的已占用緩存地址數量。
  
  2.5發送用緩存地址保存隊列的設計
  
  建立UARTnTX的地址保存FIFO隊列UART_LINK_LIST_STORE_TABLE,用于保存一次DMA發送的時所用到的DMAxLINK_LIST_INFOR_CACHE地址。隊列容量可與DMAx_LINK_LIST_FILL_TABLE的容量相同,或根據需求設置成更小。
  
  3、串行通信程實現
  
  3.1關鍵寄存器設置
  
  1)使能外設時鐘,將PCONP寄存器中的PCGPDAM位置1。此位在復位時為0,即默認DMA被禁止,所以在應用DMA前須先將其使能。
  
  2)使能UnFCR中的第3位。該位為UART的DMA功能使能位,置1時使能DMA,清0后禁用DMA功能;只有在該位使能后,UART的發送和接收過程才能由DMA控制完成。
  
  3)將寄存器DMAReqSel的相應位清零。比如第0位,因為DMA的UART0TX與定時器0匹配0復用,所以需先選擇到UART0TX上。第0位為0時DMA選擇UARTX,為1時DMA選擇MAT0.0;其它串口也需做類似選擇。
  
  3.2串行數據發送過程實現
  
  UARTn的DMA數據發送過程如下:
  
  1)輪詢檢測是否有數據需要UARTn的發送,如果有則從UARTn_BUF_FREE_TABLE隊列中取出一個UARTn_BUF緩存,填充欲發送的數據,然后從DMAx_LINK_LIST_FREE_TABLE隊列中取出一個DMAx_LINK_LIST_INFOR_CACHE,將UARTn_BUF的地址賦給DMAx_LINK_LIST_INFOR_CACHE的LinkList_SrcAddress,并設置其LinkList_DstAddress為UnTHR的地址LinkList_NextListAddress暫為0、LinkList_ControlValue為UARTn_BUF中數據大小、源和目的BURSTSIZE為0、源和目的傳輸寬度的1字節、源地址自增、目標地址不自增和TerminalCount中斷使能。zui后將該DMAx_LINK_LISTINFOR_CACHE值入隊到DMAx_LINK_LIST_FILL_TABLE隊列中。流程如圖1所示。
  
  2)設置定時器UART_DMA_TX_TIMER,定時值為Ts,即每T秒定時器UART_DMA_TX_TIMER發生一次中斷。中斷服務為檢查DMAx_LINK_LIST_FILL_TABLE的隊列長度L,判斷是否有可用的鏈表地址。如果有,則執行出隊操作取出一個緩存地址FILL_CACHE_0,將其入隊到UART_LINK_LIST_STORE_TABLE中。然后利用其中的源地址、目標地址和ControIValue值,將其分配給DMA通道x的相應寄存器。若L>1,則再取出一個地址,入隊到UART_LINK_LIST_STORE_TABLE,將其值賦給DMAx的LLI寄存器。如果仍有可用鏈表地址,則取出,入隊到UART_LINK_LIST_STORE_TABLE,將其值賦給上一個鏈表地址中的LinkList_NextListAddress,然后依次類似操作,直到zui一個取出后,將其LinkList_Next-ListAddress賦為0。若L=1,則將DMAx的LLI寄存器的值置為0。zui后設置DMAx的Config寄存器,設置內容有目標外設為UART_TX、傳送類型為MEMORYTOPERIPHERAL、不屏避TerminalCount中斷、DMAx通道使能,啟動DMAx傳輸。流程如圖2所示。
  
  3)DMAx傳輸完成產生TerminalCount中斷,在其中斷服務程序中取出FIFO隊列UART_LINK_LIST_STORE_TABLE中保存的地址ADDR,將ADDR中的源地址入隊到UARTn空緩存隊列,然后將ADDR值填充到DMAx的可用空緩存FIFO隊列DMAx_LINK_LIST_FREE_TABLE中。流程如圖3所示。
  
  3.3串行數據接收過程實現
  
  UARTn的DMA數據發送過程相對于必送過程較為簡單,在配置好相應的寄存器和目標緩存地址后,使能相應DMA通道。當UART接收數據達到觸發點后,會觸發DMA相應通道的突發請求進行傳輸。傳輸結束后,在TerminalCount中斷服務中更換目標緩存地址,使能一輪即可。當然在
  
  配置中,DMA通道的突發個數應設置與UART接收FIFO觸發點數相同。
  
  4、結束語
  
  在DMA發送進行的過程中,UART_LINK_LIST_STORE_TABLE保存的地址值序列ADDRs中的地址所指空間不能被釋放或被其它程序占用,同樣的ADDRs中地址的源地址所指的UART緩存空間也不能被釋放或被其它程序占用。如果在這個過程中出現了不滿足上述要求的情況,則會出現不可預測的錯誤。

免責聲明

  • 凡本網注明“來源:儀表網”的所有作品,均為浙江興旺寶明通網絡有限公司-儀表網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:儀表網”。違反上述聲明者,本網將追究其相關法律責任。
  • 本網轉載并注明自其它來源(非儀表網)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。
  • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
聯系我們

客服熱線: 15267989561

加盟熱線: 15267989561

媒體合作: 0571-87759945

投訴熱線: 0571-87759942

關注我們
  • 下載儀表站APP

  • Ybzhan手機版

  • Ybzhan公眾號

  • Ybzhan小程序

企業未開通此功能
詳詢客服 : 0571-87759942
主站蜘蛛池模板: 成人国产精品免费视频|免费视频97|成年人深夜福利|国产精品亚洲一区二区三区在线观看|亚洲性久久9久久爽|超碰超碰97 | 国产精拍|日日爱爱|少妇裸体淫交免费看片|色婷婷五月综合欧美图片|免费国产成人高清在线观看不卡|男人天堂导航 | 偷看农村女人做爰毛片色|亚洲成人=av在线播放|国内视频一区|国产三级黄色|久久色亚洲|91精选国产 | 精品国产一区二区三区久久久蜜臀|亚洲中文字幕无码一区在线|女同福利|国产一级视频在线观看|久久人妻公开中文字幕|#NAME? 午夜特片|中文久久久久|亚洲精品美女色诱在线播放|大地资源在线观看视频在线|99久久婷婷国产综合精品免费|豪放女大兵免费观看bd | 欧美高清福利|免费亚洲黄色|黄片毛片免费|亚洲欧美日韩在线资源观看|国产精品久久久久久久久久久久午|日本三级播放 | 99精品久久久久久久免费看蜜月|伊人久久大香线蕉无码不卡|免费观看的黄色片|99久热re在线精品996热视频|在线=a免费观看|337P日本大胆欧美裸体艺术 | 亚洲精品=av中文字幕在线|九州影视在线免费|国产国产国产国产系列|免费在线高清=av|被老汉耸动呻吟双性美人|男女草逼视频 亚洲精品毛片一区二区|在线理论片|精品久久久无码中文字幕边打电话|久久久久久久|亚洲中文字幕无码第一区|亚洲欧美偷自乱图片 | 亚洲特黄一级大片|91麻豆传媒|国产毛片儿|www..com黄瓜|野花香日本大全免费观看|国产精品宅男擼66M3U8 | 亚洲综合另类小说色区色噜噜|国产奂费一级毛片|色七综合|草蹓视频在线观看|伊人欧美|精品成人一区二区三区免费视频 | 国产精品卡1卡2卡3|色八网站首页|潜行者40集免费观看视频|国产精品国产三级国产传播|小嫩妇下面好紧好爽视频|亚洲综合精品伊人久久 | 色综合久久综合中文综合网|午夜福利国产在线观看1|毛片免费视频观看|黑人把女人弄到高潮视频|www.国产精品视频|免费色网 | 久久精品国产精品青草色艺|国产亚洲欧美在线另类|女被啪到深处喷水视频网站|天天看高清特色大片|#NAME?|四虎影像 | 亚洲国产精品推荐|日韩欧美视频观看|国内老熟妇对白XXXXHD|亚洲综合精品香蕉久久网|国产男女免费完整视频网页|亚洲=av高清手机在线 | 中国=av在线免费观看|麻豆色播|一级毛片视频在线|一级免费片|毛片在线免费视频|中国一级女人毛片 | 粗壮挺进邻居人妻无码|久久天天拍|#NAME?|日本亚洲黄色|久久精品国产只有精品96|日本成年人免费网站 | 全黄h全肉边做边吃奶流浪汉|#NAME?|日本高清二区视频久二区|国模少妇一区两区三区|2018中文字幕在线视频|亚洲=aV国产精品无码 | 8050午夜一级毛片|欧洲熟妇精品视频|亚洲在线视频网站|天天久久精品视频|亚洲综合在线网址|麻豆极品JK丝袜自慰喷水久久 | 中文乱码人妻一区二区三区视频|亚洲高清专区|中文毛片无遮挡高潮免费|黄人成=a动漫片免费网站|99re在线免费|女乱淫免费看视频大黄 | www欧美精品|成全在线观看免费高清动漫|富婆推油偷高潮叫嗷嗷叫|久久做受WWW|韩国羞羞|日韩亚洲欧美中文三级 | 久久污视频|无码人妻精品中文字幕免费时间|日产无码精品一区二区三区|四虎最新免费网站|亚洲大尺度吃奶做爰|chinese叫床videos | 91看片网页版|郎在远方免费观看|色偷偷噜噜噜亚洲男人|国产成人免费在线观看不卡|欧美国产日韩=a在线观看|韩国在线观看=av | 久久撸视频|久久久久亚洲=aV无码专区喷水|国产成人无码精品久久二区三区|少妇扒开粉嫩小泬视频|欧洲黑大粗无码免费|亚洲成人=av | 亚洲=aV综合=a国产=aV中文|亚洲涩88|久久99精品久久久久久狂牛|无遮挡h肉动漫在线观看|国产亚洲棕合欧美视频|中文字幕在线观 | 精品国产免费久久久久久桃子图片|六月婷婷久久|黄色在线观看免费视频|丰满熟妇XXXX性PPX人交|国内自拍网址|97色干 | 国产精品二区影院|久久99热精品|一级黄片毛片免费|sihu在线|亚洲精品女|99vv1com这只有精品 | 亚洲免费永久|91看片网址|亚洲=aV片毛片成人观看|国产精品视频内|在线=a=a=a|国产美女主播一级成人毛片 | 亚洲综合自拍|国产一区二区三区久久|亚洲男人第一=aV网站|精品黄网|成年免费视频|欧美三个奶波霸 | 韩国日本美国欧洲=aⅴ|91久久国产露脸精品国产闺蜜|国产热99|欧美肥老太交性视频免费|国产艳妇高清色视频在线观看|一级绝黄| 日韩亚洲欧美中文字幕|国产精品久久久久久亚洲调教|5060网永久免费=a级毛片|人妻少妇久久久久久97人妻|国产成人无码=a区视频在线观看|欧美理论视频 | 婷婷久久综合九色综合97最多收藏|国产一级毛片久久|91精品二区|思思99精品视频在线观看|国产福利第一视频在线播放|人人澡超碰碰 | 蜜臀=aⅴ精品一区二区三区|5c5c5c5c|午夜免费|四虎影视最新免费版|色噜噜狠狠狠狠色综合久|精品服丝袜无码视频一区|国产一区日韩一区 | #NAME?|欧美成人免费网站|亚洲成人天堂|日本一级视频在线观看|VR欧美乱强伦XXXXX|国产国语对白露脸正在播放 | 日本欧美在线观看|91香蕉在线极品观看|两个人看的www高清视频中文|九九久久影院|偷拍超碰|久久99国产综合精品免费 | 亚洲=av禁18成人毛片一级在线|九九在线视频免费观看|饥渴少妇高潮正在播放|欧美成人精品高清视频在线观看|伊人久久大香线蕉综合色狠狠|黄色片一级的 | 7788.毛片|手机看成人片|日日夜夜操婷婷|亚洲日本中文字幕天天更新|免费成视频|gogogo免费观看视频高清 | 国产精品久久久久久久久久久久久久久久久|免费无遮挡无码永久在线观看视频|一个人在线观看免费视频www|欧美性猛交xxxx乱大交丰满|久久无码人妻一区二区三区午夜|色欲香天天天综合网站无码 | 五月天色中色|蜜桃精品视频在线|日本特级=aⅴ一级毛片|二区三区4区5区6区人妻|成人毛片软件|#NAME? | xxxx高清|亚洲日本乱码在线观看|日三级另类|久久久一|www.国产com|欧美不卡一区二区三区四区 | 性日本少妇|无码粉嫩小泬无套在线观看|一级片九九|99国产精品久久久久久久成人|国产综合片|从大树开始的进化动漫免费观看 | 中文乱码人妻一区二区三区视频|亚洲高清专区|中文毛片无遮挡高潮免费|黄人成=a动漫片免费网站|99re在线免费|女乱淫免费看视频大黄 | 日韩精品成人=av|午夜精品一区二区三区免费视频|亚洲精品国产综合久久一线|国产三级=aV在在线观看|GV无码免费无禁网站男男|欧美videos另类极品 |