在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

牽手一起夢 ? 來源:ST MCU 信息交流 ? 作者:ST MCU 信息交流 ? 2020-06-04 14:59 ? 次閱讀

STM32家族中的有些系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等系列都內置了DMAMUX模塊,它是干什么用的?跟DMA有什么關聯?

簡單點說,它是DMA請求中轉調度器,或說DMA請求路由器。基本功能就是將各路DMA請求經過它的再分配調度后連接到相應的DMA控制器傳輸通道以實現DMA傳輸。

用過不帶DMAMUX的STM32芯片的DMA模塊的人可能會問,之前沒這個模塊,不是照樣用嗎?外設申請DMA請求,DMA控制器做出應答響應后即可實現DMA傳輸。為什么后面推出的STM32系列往往要增加這個DMA請求復用路由器呢?

我們不妨先看看那些片內不帶DMAMUX的DMA外設請求與DMA傳輸通道的關系。

下圖是STM32F3系列的DMA1的DMA請求與傳輸通道的映射關系圖[STM32F1系列的DMA架構跟F3系列類似]:

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

拿上圖中的DMA傳輸通道Channel2為例,DMA請求可以來自多個外設,不過每路傳輸通道每次只能配置1個外設請求。從上圖可以看出,各個外設請求所對應的DMA傳輸通道是唯一且固定的。比方說,若TIM1_CH1和TIM2_UP兩個外設事件都想申請DMA傳輸,這時就有點麻煩,因為二者都只能申請DMA傳輸通道Channel2。那能不能有稍微靈活點的DMA請求與傳輸方案呢?像遇到多個DMA請求只能申請同一DMA傳輸通道時就麻煩了。ST后面推出的STM32F4/STM32F7等系列,在這個地方就做了調整。

下面是STM32F4系列的DMA2的DMA請求與傳輸通道的映射關系圖:

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

不難看出,STM32F4系列的DMA架構跟STM32F1/F3有所不同,在DMA請求與DMA傳輸通道的映射安排方面有明顯改良和優化,相比之下,DMA請求與DMA傳輸通道間的安排更為靈活了。

比如ADC2、SPI1_RX、USART1_RX原則上都可以申請Stream2的傳輸,由于每條傳輸通道每次只接受1個外設請求,根據上表,我們還可以將SPI1_RX請求安排在Stream0,將ADC2的請求安排在Stream3。顯然,各個外設請求所對應的DMA傳輸通道的安排不像上面F3/F1系列那樣固定僵化了。

不過,盡管說STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,更為靈活了,但各個外設請求與能申請到DMA傳輸通道的映射關系還是固定的。比方ADC2的請求只可能申請到Stream2或Strem3,而SPI_RX的請求就只能申請到Stream0或Stream2,別的DMA傳輸通道就別想了。這樣的話,還是有可能遇到某些情況下安排不過來的局面,最糟糕的情形就是盡管DMA請求安排不過來,個別DMA傳輸通道可能又還閑著。那有沒有可能DMA請求跟DMA傳輸通道的映射關系不事先固定下來,而在具體使用時通過一個中間機構來調度協調呢?這樣既保證DMA請求安排的靈活性,又可提升DMA控制器的使用效率。另外,這里還有個問題,目前能申請到DMA傳輸的僅限于外設事件,能不能將DMA請求范圍拓展下呢,讓更多的其它非外設事件也可以產生DMA請求呢?

這時,應該說DMAMUX就基于這些需求應運而生了!【注:這是我理解加想象的推論,畢竟芯片不是我設計的。】

說到這里,打個生活中發快遞的比方。早期發快遞,我們往往是靠幾張有限的快遞小哥的名片或電話來找相應的小哥收發快遞,如果他的名片你一下找不到或者說你聯系他時,他正忙別的事情一會不會根本照顧不到你這里,別的小哥你又聯系不上,這時你就只能干著急了。后來,快遞公司搞了個客服部門,只需知道客戶電話,隨時申請快遞,客服幫你搞定。客服幫你搞定不是親自來給你收發快遞,而是幫你靈活調度快遞小哥來完成。小哥張不行,小哥李來。此處的客服部門就像這里描述的DMAMUX。當然,有了客服還可以拓展出其它跟快遞有關的便利事務。

回到DMAMUX,它除了實現對DMA請求與DMA傳輸通道的靈活配置外,還可以基于某些本不能產生DMA請求的事件而生成DMA請求,該請求具有跟其它外設事件所產生DMA請求的同等效果,比方基于GPIO的外部中斷事件產生DMA請求。

對于那些具有DMAMUX模塊的STM32芯片,所有的DMA請求不再直接與DMA控制器相關聯,而只是先與DMAMUX相連,DMAMUX的DMA請求路由通道再與DMA控制器相連。至于某個DMA請求到底跟DMA控制器的哪條傳輸通道相關聯,通過軟件配置,并不事先固定下來。對于那些用過不帶DMAMUX的STM32用戶來說,當它切換到帶DMAMUX的STM32芯片,使用DMA時會發現之前的那張基于DMA請求與DMA傳輸通道映射表不復存在了,而換之以基于DMAMUX的各類輸入、輸出信號或事件的映射表。【注:DMA請求或稱DMA請求線】

下面以STM32G4系列內置的DMAMUX為例,對其概念架構及工作原理再做些具體的介紹。下圖是STM32G4系列內部的DMAMUX的功能框圖。

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

從功能框架上看,它由兩大塊組成。

第一塊,DMA請求路由器【Request Multiplexer】, 上面框圖右上方的紅色方框。

它的核心功能就是實現DMA請求的路由轉發。其組成單元是DMA請求路由通道,請求路由器由多個請求路由通道組成。

每個路由通道可轉發1路DMA請求【dmamux_req_outx】到DMA控制器并與相應的DMA傳輸通道相關聯。

每個路由通道都與所有DMA輸入請求線【dmamux_reqx】并行相連,并且都有同步單元【Sync】和DMA請求計數器。多個同步輸入信號與各同步單元并行相連,可用來控制DMA請求的轉發輸出。

各同步單元還可以生成DMA路由事件【dmamux_evtx】,該事件既可以作為DMAMUX其它路由通道的同步輸入信號,以實現不同路由通道之間的級聯【不同路由通道最終對應到不同的DMA傳輸通道】,又可以作為DMA請求生成器的觸發輸入信號,可以實現基于不同DMA請求之間的級聯關系。

第二塊,DMA請求生成器【RequestGenerator】,上面框圖中左下方的紅色方框。

它的核心功能,就是生成DMA請求。其組成單元是請求生成通道,由多個請求生成通道構成請求生成器。每個生成通道與所有的觸發輸入信號并行相連,每個通道也具有DMA請求計數器。當生成器收到觸發輸入信號【dmamux_trgx】時,相應的請求生成通道則產生DMA請求信號【dmamux_req_genx】,并輸出到DMA請求路由器。

通過DMA請求生成器基于觸發信號生成DMA請求,一方面可以彌補只是部分外設事件【dmamux_req_inx】才可以申請DMA傳輸的局限,另一方面可以將不同DMA請求借助路由器模塊輸出的路由事件【dmamux_evtx】關聯起來,讓DMA應用更為靈活并富有創意

下面繼續以STM32G4系列的DMAMUX為例,將上面的功能框圖具體化看看。

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

根據上圖,STM32G4芯片因不同子序列,DMAMUX的路由輸出通道數可能是12或16。

DMAMUX的請求生成器通道數為4,請求生成器可接受的觸發輸入信號有21個,路由通道的同步輸入信號可達21個,可接受的外設請求輸入信號或事件可達115個。

DMAMUX路由輸出通道數最終與片內DMA控制器所擁有的傳輸通道相對應匹配。

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

這里DMAMUX的請求生成器通道數為4,即有4個通道可以基于觸發輸入信號產生DMA請求:

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

用來可以生成DMA請求的觸發輸入信號可以有21個:

STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,靈活性

從上圖可以看出,絕大部分觸發信號都源于外部中斷事件,還有幾個來自DMAMUX路由通道產生的DMA路由事件【紅色方框內所示】。這么多觸發輸入信號,而可以產生DMA請求的生成通道才4個,每個通道根據什么來選擇所需要的觸發信號呢,當然是通過各個生成通道的配置寄存器DMAMUX_RGCnCR進行選擇配置【n對應生成器通道號】。

可以用來作為DMAMUX路由通道的同步輸入信號也可以有21個,具體內容跟上面的觸發輸入信號一樣。同樣,具體到各個路由通道選擇哪路信號作為同步信號,通過路由通道配置寄存器MAMUX_CmCR進行配置即可【m對應路由通道號】。

可接受的外設請求輸入信號或事件可達115個,這個數據應該包括了DMAMUX生成器的4個通道生成的DMA請求。手冊一直將來自外設的DMA請求和基于生成器產生的DMA請求分開表述的,這里突然籠統地將二者稱之為外設請求感覺有點突兀。

關于DMAMUX模塊的大致原理及基本框架就介紹到這里,更多細節還得閱讀STM32芯片相應的參考手冊。當對它有了一個相對清晰的框架性了解后,再結合應用實例和手冊就更容易理解和把握更深入的細節。
責任編輯:dhj

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

    關注

    7

    文章

    2771

    瀏覽量

    48970
  • 控制器
    +關注

    關注

    114

    文章

    16831

    瀏覽量

    182201
  • STM32F4
    +關注

    關注

    3

    文章

    194

    瀏覽量

    28712
收藏 0人收藏
  • exterio1

評論

相關推薦

一文詳解AXI DMA技術

AXI直接數值存取(Drect Memory Access,DMA)IP核在AXI4內存映射和AXI4流IP接口之間提供高帶寬的直接內存訪問。DMA
的頭像 發表于 04-03 09:32 ?565次閱讀
一文詳解AXI <b class='flag-5'>DMA</b>技術

為什么無法設置DMA傳輸大小?

我學會了將HSADC和DMA結合起來進行數據傳輸,我嘗試修改DMA傳輸數據的大小,但一直沒有成功,傳輸的數據已經是4095了,這就是為什么,
發表于 03-17 07:08

STM32G030F6 ADC+DMA通道非連續采樣無法正常工作怎么解決?

配置:使用STM32G030F6 ADC外設時,ADC使用兩個通道DMA配置為循環模式,ADC掃描模式+非連續采樣。 問題:初始化階段能進一次DMA
發表于 03-12 07:10

CKS32F107xx系列DMA控制器簡介

直接存儲器存取(DMA)用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸。無須CPU干預,數據可以通過DMA快速地移動,這就節省了CPU的資源來做其他操作。兩個DMA控制
的頭像 發表于 02-18 17:24 ?721次閱讀
CKS32<b class='flag-5'>F</b>107xx<b class='flag-5'>系列</b>的<b class='flag-5'>DMA</b>控制器簡介

ZYNQ基礎---AXI DMA使用

Xilinx官方也提供有一DMA的IP,通過調用API函數能夠更加靈活地使用DMA。 1. AXI DMA的基本接口 axi
的頭像 發表于 01-06 11:13 ?1588次閱讀
ZYNQ基礎---AXI <b class='flag-5'>DMA</b>使用

雅特力AT32F402/F405 DMA使用指南

通道都支持外設的DMA請求映射到任意通道上。圖1.DMA控制器架構DMAMUX簡介對于如何將外設
的頭像 發表于 11-20 01:03 ?744次閱讀
雅特力AT32<b class='flag-5'>F</b>402/<b class='flag-5'>F</b>405 <b class='flag-5'>DMA</b>使用指南

DMA是什么?詳細介紹

系統性能。 DMA(直接內存訪問)概述 1. DMA的定義 直接內存訪問(DMA)是一種硬件特性,允許外圍設備直接讀寫系統內存,而不需要CPU的直接控制。這種技術主要用于高速數據傳輸
的頭像 發表于 11-11 10:49 ?1.7w次閱讀

STM32CUBEMX(3)--ADC通過DMA方式采樣,USART打印

使用的產品型號的不同,有一個或兩個DMA模塊。 STM32F0XX DMA控制器總共有5個通道用于DMA1,每個
發表于 09-04 14:08

STM32CUBEMX(2)--USART通過DMA方式接收不定長數據

的不同,有一個或兩個DMA模塊。 STM32F0XX DMA控制器總共有5個通道用于DMA1,每個通道
發表于 09-04 11:48

揭秘車載VCU項目之外掛界的“大哥”DMA

引腳配置此實例選擇CAN0進行配置。三、外設配置對于DMA,其采用的固定映射,對于通道0至通道15,其
的頭像 發表于 07-30 08:11 ?1160次閱讀
揭秘車載VCU項目之外掛界的“大哥”<b class='flag-5'>DMA</b>

【GD32F303紅楓派開發板使用手冊】第十六講 USART-DMA串口收發實驗

在前面ADC章節中,我們介紹了DMA的工作原理,這里就不多做介紹。從GD32F303用戶手冊中可以查到,各串口的TX和RX分別對應DMA的不同通道,比如USART0的TX對應
的頭像 發表于 06-15 09:54 ?1596次閱讀
【GD32<b class='flag-5'>F</b>303紅楓派開發板使用手冊】第十六講 USART-<b class='flag-5'>DMA</b>串口收發實驗

如何在STM32F439 DMA流中斷中區分是哪個通道產生的中斷?

STM32F439有兩個DMA控制器DMA1和DMA2,每個控制器有8個流,每個流有8個通道,我做的是采用串口1
發表于 05-17 08:20

STM32F4 Cube配置ADC時選擇轉換觸發通道的選項中為什么沒有EXTI線11的選項?

STM32F4 Cube 配置ADC時選擇轉換觸發通道的選項中為什么沒有EXTI 線 11的選項,而在庫中有宏定義”ADC_EXTERNALTRIGCONV_Ext_IT11“
發表于 05-13 07:01

STM32F103的DMA無法實現共存怎么解決?

有幸在工程中用到STM32F103的DMA功能,而且是兩個串口(USART2和USART3)都需要用到DMA功能來實現數據傳輸。以前用STM32F
發表于 05-11 07:14

stm32f303采用LL庫,4個ADC連續多通道掃描,應該如何設置DMA

stm32f303,采用LL庫,4個ADC連續多通道掃描,應該如何設置DMA?ADC轉換完DMA傳輸
發表于 04-30 07:06
主站蜘蛛池模板: 伊人成综合 | 高h细节肉爽文bl文 高h细节肉爽文男男 | 国产精品资源网 | 69国产成人综合久久精品 | 亚偷熟乱区视频在线观看 | 高清影院在线欧美人色 | 国产精品777 | 婷婷欧美 | 黄色三级三级三级免费看 | 777奇米四色米奇影院在线播放 | 精品国产柚木在线观看 | 亚洲人成网站999久久久综合 | 狠狠色狠狠色综合久久一 | 色噜噜狠狠狠狠色综合久 | 久久艹免费视频 | 午夜影院免费入口 | 2018天天干天天操 | 99色99| 日本一区不卡视频 | 日本www网站 | 国产精品成人va在线观看入口 | 一级做a爰片久久毛片免费 一级做a爰片久久毛片免费看 | 成片一卡三卡四卡免费网站 | 色五五月五月开 | 五月婷婷六月爱 | 91国在线啪精品一区 | 福利片免费一区二区三区 | 婷婷成人丁香五月综合激情 | 无遮挡高清一级毛片免费 | 男人j进女人j免费视频视频 | 4虎影院永久地址www | 久操视频在线播放 | 大学生一级特黄的免费大片视频 | 日韩黄a级成人毛片 | 天堂电影在线 | 午夜国产福利在线观看 | 最近2018年中文字幕免费图片 | www.射| 深夜大尺度视频在线观看 | 色婷婷综合网 | 国产精品视频永久免费播放 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品