国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

STM32芯片中的DMAMUX是干啥用的?

發布時間:2020-5-13 14:03    發布者:嵌入式人生17
STM32芯片中的DMAMUX是干啥用的?
STM32家族中的有些系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等系列都內置了DMAMUX模塊,它是干什么用的?跟DMA有什么關聯?
簡單點說,它是DMA請求中轉調度器,或說DMA請求路由器。基本功能就是將各路DMA請求經過它的再分配調度后連接到相應的DMA控制器傳輸通道以實現DMA傳輸。
用過不帶DMAMUXSTM32芯片的DMA模塊的人可能會問,之前沒這個模塊,不是照樣用嗎?外設申請DMA請求,DMA控制器做出應答響應后即可實現DMA傳輸。為什么后面推出的STM32系列往往要增加這個DMA請求復用路由器呢?
我們不妨先看看那些片內不帶DMAMUXDMA外設請求與DMA傳輸通道的關系。
下圖是STM32F3系列的DMA1DMA請求與傳輸通道的映射關系圖[STM32F1系列的DMA架構跟F3系列類似]
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml25264\wps27.png
拿上圖中的DMA傳輸通道Channel2為例,DMA請求可以來自多個外設,不過每路傳輸通道每次只能配置1個外設請求。從上圖可以看出,各個外設請求所對應的DMA傳輸通道是唯一且固定的。比方說,若TIM1_CH1TIM2_UP兩個外設事件都想申請DMA傳輸,這時就有點麻煩,因為二者都只能申請DMA傳輸通道Channel2。那能不能有稍微靈活點的DMA請求與傳輸方案呢?像遇到多個DMA請求只能申請同一DMA傳輸通道時就麻煩了。ST后面推出的STM32F4/STM32F7等系列,在這個地方就做了調整。
下面是STM32F4系列的DMA2DMA請求與傳輸通道的映射關系圖:
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml25264\wps28.png
不難看出,STM32F4系列的DMA架構跟STM32F1/F3有所不同,在DMA請求與DMA傳輸通道的映射安排方面有明顯改良和優化,相比之下,DMA請求與DMA傳輸通道間的安排更為靈活了。
比如ADC2SPI1_RXUSART1_RX原則上都可以申請Stream2的傳輸,由于每條傳輸通道每次只接受1個外設請求,根據上表,我們還可以將SPI1_RX請求安排在Stream0,ADC2的請求安排在Stream3。顯然,各個外設請求所對應的DMA傳輸通道的安排不像上面F3/F1系列那樣固定僵化了。
不過,盡管說STM32F4系列的DMA請求與DMA傳輸通道的映射關系多了些選擇性,更為靈活了,但各個外設請求與能申請到DMA傳輸通道的映射關系還是固定的。比方ADC2的請求只可能申請到Stream2Strem3,SPI_RX的請求就只能申請到Stream0Stream2,別的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相連,DMAMUXDMA請求路由通道DMA控制器相連。至于某個DMA請求到底跟DMA控制器的哪條傳輸通道相關聯,通過軟件配置,并不事先固定下來。對于那些用過不帶DMAMUXSTM32用戶來說,當它切換到帶DMAMUXSTM32芯片,使用DMA時會發現之前的那張基于DMA請求與DMA傳輸通道映射表不復存在了,而換之以基于DMAMUX的各類輸入、輸出信號或事件的映射表。【注:DMA請求或稱DMA請求線】
下面以STM32G4系列內置的DMAMUX為例,對其概念架構及工作原理再做些具體的介紹。下圖是STM32G4系列內部的DMAMUX的功能框圖。
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml25264\wps29.png
從功能框架上看,它由兩大塊組成。
第一塊,DMA請求路由器Request Multiplexer, 上面框圖右上方的紅色方框。
它的核心功能就是實現DMA請求的路由轉發。其組成單元是DMA請求路由通道,請求路由器由多個請求路由通道組成。
每個路由通道可轉發1DMA請求【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為例,將上面的功能框圖具體化看看。
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml25264\wps30.png
根據上圖,STM32G4芯片因不同子序列,DMAMUX的路由輸出通道數可能是1216
DMAMUX的請求生成器通道數為4,請求生成器可接受的觸發輸入信號有21個,路由通道的同步輸入信號可達21個,可接受的外設請求輸入信號或事件可達115個。
DMAMUX路由輸出通道數最終與片內DMA控制器所擁有的傳輸通道對應匹配
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml25264\wps31.png
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml25264\wps32.png
這里DMAMUX的請求生成器通道數為4,即有4個通道可以基于觸發輸入信號產生DMA請求:
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml25264\wps33.png
用來可以生成DMA請求的觸發輸入信號可以有21個:
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml25264\wps34.png
從上圖可以看出,絕大部分觸發信號都源于外部中斷事件,還有幾個來自DMAMUX路由通道產生的DMA路由事件【紅色方框內所示】。這么多觸發輸入信號,而可以產生DMA請求的生成通道才4個,每個通道根據什么來選擇所需要的觸發信號呢,當然是通過各個生成通道的配置寄存器DMAMUX_RGCnCR進行選擇配置【n對應生成器通道號】。
可以用來作為DMAMUX路由通道的同步輸入信號也可以有21個,具體內容跟上面的觸發輸入信號一樣。同樣,具體到各個路由通道選擇哪路信號作為同步信號,通過路由通道配置寄存器MAMUX_CmCR進行配置即可【m對應路由通道號】。
可接受的外設請求輸入信號或事件可達115個,這個數據應該包括了DMAMUX生成器的4個通道生成的DMA請求。手冊一直將來自外設的DMA請求和基于生成器產生的DMA請求分開表述的,這里突然籠統地將二者稱之為外設請求感覺有點突兀。
關于DMAMUX模塊的大致原理及基本框架就介紹到這里,更多細節還得閱讀STM32芯片相應的參考手冊。當對它有了一個相對清晰的框架性了解后,再結合應用實例和手冊就更容易理解和把握更深入的細節。

本文地址:http://m.qingdxww.cn/thread-588570-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 草莓视频app下载站长统计 | 成人国产三级在线播放 | 最新在线黄色网址 | 国产成人亚洲综合在线 | 精品真实国产乱文在线 | 殴美aⅴ| 亚洲天堂在线观看视频 | 77788色淫免费网站视频 | 日本三级欧美三级人妇视频黑白配 | 国产视频手机在线观看 | 国产网站在线播放 | 成人国产三级精品 | 亚洲欧美综合另类 | 欧美日本综合一区二区三区 | 日本日韩欧美 | 久久久久久久国产精品 | 男女特黄一级全版视频 | 精品国产精品国产偷麻豆 | 亚洲一区二区三区精品视频 | 久久精品国产一区二区三区 | 欧美v日本 | 欧美日韩国产高清 | 精品日本三级在线观看视频 | 欧美高清一区二区 | 四虎影院在线免费 | 一本伊在人香蕉线观新在线 | 羞羞视频在线观看网站 | 日韩免费高清一级毛片久久 | 精品久久久久久影院免费 | www.草逼.com| 日韩免费一级片 | re99热久久这里只有精品 | 国内性爱视频 | 亚洲欧美日本国产 | 偷拍第一页 | 国产精品怕怕怕视频免费 | 国产精品亚欧美一区二区三区 | 韩日一级毛片 | 国产网站免费观看 | 在线观看免费av网站 | 天堂一区二区三区在线观看 |