<button id="9h9xs"><object id="9h9xs"></object></button>
  1. <tbody id="9h9xs"><p id="9h9xs"></p></tbody>

      語言版本

      技術應用

      功率半導體器件提供商

      /
      技術應用

      什么是DMA? STM32如何配置DMA?

       

       

      一、DMA簡介

      1、DMA簡介
      DMA(Direct Memory Access:直接內存存取)是一種可以大大減輕CPU工作量的數據轉移方式。
      CPU有轉移數據、計算、控制程序轉移等很多功能,但其實轉移數據(尤其是轉移大量數據)是 可以不需要CPU參與 。比如希望外設A的數據拷貝到外設B,只要給兩種外設提供一條數據通路,再加上一些控制轉移的部件就可以完成數據的拷貝。 DMA就是基于以上設想設計的,它的作用就是解決大量數據轉移過度消耗CPU資源的問題。有了DMA使CPU更專注于更加實用的操作--計算、控制等。

      2、DMA的工作原理 DMA的作用就是實現數據的直接傳輸,而去掉了傳統數據傳輸需要CPU寄存器參與的環節 ,主要涉及四種情況的數據傳輸,但本質上是一樣的,都是從內存的某一區域傳輸到內存的另一區域(外設的數據寄存器本質上就是內存的一個存儲單元)。四種情況的數據傳輸如下:

       

      • 外設到內存

      • 內存到外設

      • 內存到內存

      • 外設到外設 當用戶將參數設置好,主要涉及 源地址 、 目標地址 、 傳輸數據量 這三個,DMA控制器就會啟動數據傳輸,傳輸的終點就是剩余傳輸數據量為0(循環傳輸不是這樣的)。換句話說只要剩余傳輸數據量不是0,而且DMA是啟動狀態,那么就會發生數據傳輸。

       

      3、DMA是否影響CPU的運行
      在X86架構系統中,當DMA運作時(假設我們從磁盤拷貝一個文件到U盤),DMA實際上會占用系統總線周期中的一部分時間。也就是說,在DMA未開啟前,系統總線可能完全被CPU使用;當DMA開啟后,系統總線要為DMA分配一定的時間,以保證DMA和CPU同時運作。那么顯然,DMA會降低CPU的運行速度。
      在STM32控制器中,芯片采用Cortex-M3架構,總線結構有了很大的優化,DMA占用另外的總線,并不會與CPU的系統總線發生沖突。也就是說,DMA的使用不會影響CPU的運行速度。

      二、STM32的DMA結構

      1、DMA的主要特性
      ● 12個 獨立的可配置的通道(請求)DMA1有7個通道,DMA2 有5個通道
      ● 每個通道都直接連接專用的硬件DMA請求,每個通道都同樣支持軟件觸發。這些功能通過
      軟件來配置。
      ● 在七個請求間的優先權可以通過軟件編程設置(共有四級:很高、高、中等和低),假如在相
      等優先權時由硬件決定(請求0優先于請求1,依此類推) 。
      ● 獨立的源和目標數據區的傳輸寬度(字節、半字、全字),模擬打包和拆包的過程。源和目標
      地址必須按數據傳輸寬度對齊。
      ● 支持循環的緩沖器管理
      ● 每個通道都有3個事件標志(DMA 半傳輸,DMA傳輸完成和DMA傳輸出錯),這3個事件標志邏輯或成為一個單獨的中斷請求。
      ● 存儲器和存儲器間的傳輸
      ● 外設和存儲器,存儲器和外設的傳輸
      ● 閃存、SRAM 、外設的SRAM 、APB1 APB2和AHB外設均可作為訪問的源和目標。
      ● 可編程的數據傳輸數目:最大為65536
      下面為功能框圖:

      • 抖音公眾號
      • 微信公眾號

      版權所有 ? 2022  深圳市芯易芯科技有限公司粵ICP備2020122569號

      網站建設  大江網絡

      成 人 在 线 免费 8888 www,成 人免费无码视频在线看,成 人免费午夜无码视频,成+人+网+站+免费观看

        <button id="9h9xs"><object id="9h9xs"></object></button>
      1. <tbody id="9h9xs"><p id="9h9xs"></p></tbody>