色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

玩轉單片機的重要功能-DMA,你的MCU編程設計有可能成為卷王!

jf_pJlTbmA9 ? 來源:得捷電子DigiKey ? 作者:得捷電子DigiKey ? 2023-09-18 10:56 ? 次閱讀

直接存儲器訪問(DMA)控制器,可以在內存和/或外設之間傳輸數據,而不需要CPU參與每次傳輸。合理利用DMA控制器,可以減輕CPU的負擔。本文通過介紹DMA結構與工作原理,以及兩種模式(兵乓模式與多數據包緩沖傳輸模式),來看看使用DMA如何提高MCU效率。

DMA結構與工作原理

先進的DMA控制器,如STMicroelectronics的STM32F4系列中包含的控制器,可以通過靈活的數據流分配和傳輸管理功能進一步減輕CPU的負擔。

如圖左側所示,來自8個不同的通道DMA請求,并到仲裁器上,從而建立優先級(編號較低的輸入通道,具有較高的優先級)。然后激活最高優先級的傳輸,傳輸到圖中右側的兩個AHB 主設備(存儲器端口和外設接口),提高了外設到存儲器傳輸的效率。這可能是DMA在基于CPU的設計中最常見的情況。

wKgZomUDwHCAcjeDAADsVIysjq0364.jpg

圖 1. STM32F4系列DMA控制器(圖片來源于STMicroelectronics)

為每個路徑分配單獨的FIFO,如圖1中間所示,允許針對每個外設接口的特性調整FIFO特性。例如,FIFO的閾值級別(請求傳輸的深度)可以單獨設置為FIFO大小的?,?或?。這允許低速通道等待,直到FIFO幾乎滿了才進行傳輸,以最小化開銷。更快的通道會更早地啟動傳輸,可能只有一半大小,以避免FIFO溢出。

我們來通過一個實例,來看看DMA怎么工作的。

實例:“使用 STM32 來控制 NeoPixels LED

硬件部分采用STM32 開發板,與 NeoPixelLED、燈帶、矩陣等相連接。

RGB NeoPixels實際上是WS2812智能控制LED。下面是WS2812 LED的3字節數據協議的結構,分別代表綠紅藍三個信息

wKgaomUDwHOAbFNZAAAkVbCSsD4400.jpg

圖 2.WS2812 LED的3字節數據協議的結構

使用計時器來PWM控制波形,然后配置DMA使CPU高效并且易于實施。

wKgZomUDwHWAUQKUAABNu2Dq2sY191.jpg

圖 3.WS2812 LED的0和1位的計時圖

在軟件中,配置DMA, 選擇了“TIM2_CH3/UP”, 將方向改為“內存到外設”, 同時,將優先級改為“非常高”,最后保存.ioc 文件,以生成項目代碼。

wKgaomUDwHeAVb3CAADOmUA3nwI260.jpg

圖 4. 配置DMA流,以便有效更新PWM信號的占空比

更多內容請看下面文章:使用 STM32 來控制 NeoPixels

DMA的兩種模式

合理使用兩種DMA模式(兵乓模式與多數據包緩沖傳輸模式),可以幫助提高MCU效率。

USB外設是一個很好的外設示例,早期的USB實現的最大吞吐量只有1.5 Mb/秒。隨著更高性能的標準版本的出現。比如要接近12 Mbit/s全速USB標準的理論最大值。我們來看看,數據傳輸方面DMA如何幫助提高MCU效率!

我們以Microchip的ATXMEGA16D4-MH舉例。

01、兵乓模式

之前通常使用單個存儲器緩沖區進行外設數據傳輸。如果數據緩沖區已滿,MCU將響應NAK(否定確認)消息。接收到NAK后,主機將等待并稍后重試傳輸。它將繼續重試,直到MCU能夠成功接收數據。

ATXMEGA16D4-MH使用乒乓模式來消除這個問題。乒乓模式使用兩個存儲單元(memory banks)進行數據傳輸。當一個存儲單元滿時,主機可以將數據傳輸到另一個存儲單元。在兩個存儲單元之間交替傳輸可以避免復審,并提高整體數據帶寬。

wKgZomUDwHmAPqQEAABgCisnRas657.jpg

圖 5. 乒乓模式提高了效率(圖片來源于Microchip)

此外,如上圖所示,以乒乓模式還使MCU有更多時間來處理數據。如圖所示,沒有乒乓,CPU只能處理傳輸之間的數據。使用乒乓模式,CPU可以在傳輸周期的一部分時間內處理數據,并降低NAK被要求“趕上”數據處理要求的可能性。

02、多數據包緩沖傳輸模式

另一個很有用的模式,可以讓MCU的數據傳輸更高效。這個特性叫做“多數據包緩沖傳輸模式”。如果你要通過USB端口傳送的數據包,超過了全速USB的BULK傳輸模式所允許的最大值(64字節),那么就可以用上這個模式。以前,你需要在主機上把數據包分成小塊,然后在接收端把它們合并,這會增加中央處理器(CPU)的負擔。不過現在,多數據包緩沖功能加入了USB設備,它會在數據包超過USB標準大小時自動幫你分割和合并數據。重要的是,這個模式還能減少中斷的次數,因為只有在整個傳輸結束后才需要中斷CPU。這意味著,CPU可以處理其他任務,或者進入休眠模式,直到整個傳輸完成并且準備好處理。

總結

合理利用DMA控制器,可以減輕減輕CPU的負擔,事半功倍。結合“乒乓緩沖”和“多傳輸模式”,你可以把傳輸的帶寬從基準BULK傳輸模式的5.6 Mb/s提升到8.7 Mbits/s,這是一個不小的提升。更重要的是,在使用這兩個功能的情況下,CPU的負擔從基準的46%降低到只有9%。這兩個功能的結合,不僅在性能上有所改進,而且還能節省能源。

來源:得捷電子DigiKey(作者:Alan Yang)

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634653
  • 控制器
    +關注

    關注

    112

    文章

    16332

    瀏覽量

    177812
  • 存儲器
    +關注

    關注

    38

    文章

    7484

    瀏覽量

    163764
  • dma
    dma
    +關注

    關注

    3

    文章

    560

    瀏覽量

    100548
收藏 人收藏

    評論

    相關推薦

    笙泉科技:專注提供8051 MCU單片機

    笙泉科技:專注提供8051 MCU單片機單片機領域的競爭很激烈,單片機的應用很廣泛,單片機的技術也很多,沒有一家
    發表于 03-08 10:05 ?1445次閱讀

    【高手問答】第2期——阿東帶你走進fpga的邏輯編程設計

    【高手問答】第4期——與社區之星工聊聊labview設計【高手問答】第3期——走進硬件電路設計【高手問答】第2期——阿東帶你走進fpga的邏輯編程設計【高手問答】第1期——朱兆琪在線解答單片機C語言
    發表于 07-07 14:30

    如何升華51單片機基礎,成為一個出色的開發工程師。

    解答PCB設計【高手問答】第5期——STM32硬件問答【高手問答】第4期——與社區之星工聊聊labview設計【高手問答】第3期——走進硬件電路設計【高手問答】第2期——阿東帶你走進fpga的邏輯編程設計【高手問答】第1期——朱兆琪在線解答
    發表于 10-09 11:25

    如何成為單片機編程高手

    記住這些寄存器成為單片機編程高手
    發表于 02-01 06:49

    云計算為什么能成為物聯網的秘密武器?

    云計算為什么能成為物聯網的秘密武器?
    發表于 06-18 06:22

    如何才能成為一名單片機高手?

    如何才能成為一名單片機高手?學習單片機的三個步驟都知道嗎
    發表于 07-01 07:01

    STC89C52_51單片機_例程5_長短按鍵_定時***_要怎樣努力才能成為很厲害的人? 精選資料分享

    STC89C52_51單片機_例程5_長短按鍵_定時***_要怎樣努力才能成為很厲害的人?代碼及文件下載鏈接https://download.csdn.net/download
    發表于 07-20 06:53

    單片機功能編程器有哪些主要功能

    單片機功能編程器的特點是什么?單片機功能編程器有哪些主
    發表于 09-18 06:42

    如何才能成為一個硬件工程師?

    如何才能成為一個硬件工程師?
    發表于 11-11 07:11

    如何才能成為一名單片機工程師?

    如何才能成為一名單片機工程師?
    發表于 12-23 07:56

    單片機的ISP在線編程設計

    單片機的ISP在線編程設計   隨著電子技術的日益發展,芯片的規模越來越大,封裝日趨小型化,相應地對系統板級調試的困難也在加大。在傳統
    發表于 03-29 15:10 ?1967次閱讀
    <b class='flag-5'>單片機</b>的ISP在線<b class='flag-5'>編程設計</b>

    怎么由芯片的時序圖寫程序?_單片機對1602液晶時序圖編程設計

    如何看懂芯片的時序圖,進行編程設計單片機對外接芯片進行操作的基礎。本文以1602為例,解析單片機對芯片時序圖的編程思路。
    發表于 01-06 10:13 ?1.1w次閱讀
    怎么由芯片的時序圖寫程序?_<b class='flag-5'>單片機</b>對1602液晶時序圖<b class='flag-5'>編程設計</b>

    華大單片機HC32F460 系列MCU

    1摘要本篇應用筆記主要介紹如何使用華大單片機 HC32F460 系列MCUDMA 模塊傳輸數據。2DMA 簡介什么是 DMA
    發表于 11-18 19:21 ?20次下載
    華大<b class='flag-5'>單片機</b>HC32F460 系列<b class='flag-5'>MCU</b>

    AVR單片機為何能成為8位中的佼佼者?

    AVR單片機為何能成為8位中的佼佼者? AVR單片機是一種高性能、低功耗、高可靠性、方便編程的微控制器。它可以廣泛應用于消費電子、汽車電子
    的頭像 發表于 10-29 17:29 ?718次閱讀

    按照這樣學習C語言,成為不是夢!

    在計算機編程領域,C語言被譽為一種強大而靈活的編程語言,掌握好C語言不僅可以讓輕松駕馭各種編程任務,還能夠為的職業生涯打下堅實的基礎。但
    的頭像 發表于 07-06 08:04 ?313次閱讀
    按照這樣學習C語言,<b class='flag-5'>成為</b><b class='flag-5'>卷</b><b class='flag-5'>王</b>不是夢!
    主站蜘蛛池模板: 99久久国内精品成人免费| 中文字幕无码亚洲视频| 亚洲精品国产熟女久久久 | 久久精品国产亚洲AV蜜臀| 精品精品国产yyy5857香蕉| 亚洲精品久久久久一区二区三 | 国产人妻XXXX精品HD电影| 国产午夜永久福利视频在线观看 | 亚洲精品午睡沙发系列| 伊人亚洲综合青草青草久热| 97色伦图片97色伦图影院久久| www黄色大片| 国产久久re6免费热在线| 久久草这里全是精品香蕉频线观| 嫩B人妻精品一区二区三区| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲 欧美 国产 综合五月天| 在线超碰免费视频观看| 成人a毛片久久免费播放| 国产野外无码理论片在线观看| 毛片亚洲毛片亚洲毛片| 色综合a在线| 在线亚洲色拍偷拍在线视频| 成人免费视频一区| 精品视频免费在线观看| 欧美中文字幕一区二区三区| 亚洲AV天堂无码麻豆电影| 91情国产l精品国产亚洲区| 国产成年网站v片在线观看| 久久日本精品国产精品| 肉耽高h一受n攻| 艺术片 快播| 国产99精品视频| 久久在精品线影院精品国产| 日韩亚洲人成在线| 伊人久久影院| 国产AV精品久久久毛片| 伦理片在线线看手机版| 亚洲 国产 日韩 欧美 在线| 99久久免费精品国产免费| 国外经典三级|