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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DMAMUX模塊的大致原理及基本框架

茶話MCU ? 來源:ST MCU 信息交流 ? 作者:ST MCU 信息交流 ? 2020-06-18 09:49 ? 次閱讀

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

簡單點(diǎn)說,它是DMA請求中轉(zhuǎn)調(diào)度器,或說DMA請求路由器。基本功能就是將各路DMA請求經(jīng)過它的再分配調(diào)度后連接到相應(yīng)的DMA控制器傳輸通道以實(shí)現(xiàn)DMA傳輸。

用過不帶DMAMUX的STM32芯片的DMA模塊的人可能會(huì)問,之前沒這個(gè)模塊,不是照樣用嗎?外設(shè)申請DMA請求,DMA控制器做出應(yīng)答響應(yīng)后即可實(shí)現(xiàn)DMA傳輸。為什么后面推出的STM32系列往往要增加這個(gè)DMA請求復(fù)用路由器呢?

我們不妨先看看那些片內(nèi)不帶DMAMUX的DMA外設(shè)請求與DMA傳輸通道的關(guān)系。

下圖是STM32F3系列的DMA1的DMA請求與傳輸通道的映射關(guān)系圖[STM32F1系列的DMA架構(gòu)跟F3系列類似]:

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

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

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

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

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

這時(shí),應(yīng)該說DMAMUX就基于這些需求應(yīng)運(yùn)而生了!【注:這是我理解加想象的推論,畢竟芯片不是我設(shè)計(jì)的。】

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

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

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

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

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

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

它的核心功能就是實(shí)現(xiàn)DMA請求的路由轉(zhuǎn)發(fā)。其組成單元是DMA請求路由通道,請求路由器由多個(gè)請求路由通道組成。

每個(gè)路由通道可轉(zhuǎn)發(fā)1路DMA請求【dmamux_req_outx】到DMA控制器并與相應(yīng)的DMA傳輸通道相關(guān)聯(lián)。

每個(gè)路由通道都與所有DMA輸入請求線【dmamux_reqx】并行相連,并且都有同步單元【Sync】和DMA請求計(jì)數(shù)器。多個(gè)同步輸入信號(hào)與各同步單元并行相連,可用來控制DMA請求的轉(zhuǎn)發(fā)輸出。

各同步單元還可以生成DMA路由事件【dmamux_evtx】,該事件既可以作為DMAMUX其它路由通道的同步輸入信號(hào),以實(shí)現(xiàn)不同路由通道之間的級(jí)聯(lián)【不同路由通道最終對應(yīng)到不同的DMA傳輸通道】,又可以作為DMA請求生成器的觸發(fā)輸入信號(hào),可以實(shí)現(xiàn)基于不同DMA請求之間的級(jí)聯(lián)關(guān)系。

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

它的核心功能,就是生成DMA請求。其組成單元是請求生成通道,由多個(gè)請求生成通道構(gòu)成請求生成器。每個(gè)生成通道與所有的觸發(fā)輸入信號(hào)并行相連,每個(gè)通道也具有DMA請求計(jì)數(shù)器。當(dāng)生成器收到觸發(fā)輸入信號(hào)【dmamux_trgx】時(shí),相應(yīng)的請求生成通道則產(chǎn)生DMA請求信號(hào)【dmamux_req_genx】,并輸出到DMA請求路由器。

通過DMA請求生成器基于觸發(fā)信號(hào)生成DMA請求,一方面可以彌補(bǔ)只是部分外設(shè)事件【dmamux_req_inx】才可以申請DMA傳輸?shù)木窒蓿硪环矫婵梢詫⒉煌珼MA請求借助路由器模塊輸出的路由事件【dmamux_evtx】關(guān)聯(lián)起來,讓DMA應(yīng)用更為靈活并富有創(chuàng)意

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

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

DMAMUX的請求生成器通道數(shù)為4,請求生成器可接受的觸發(fā)輸入信號(hào)有21個(gè),路由通道的同步輸入信號(hào)可達(dá)21個(gè),可接受的外設(shè)請求輸入信號(hào)或事件可達(dá)115個(gè)。

DMAMUX路由輸出通道數(shù)最終與片內(nèi)DMA控制器所擁有的傳輸通道相對應(yīng)匹配。

這里DMAMUX的請求生成器通道數(shù)為4,即有4個(gè)通道可以基于觸發(fā)輸入信號(hào)產(chǎn)生DMA請求:

用來可以生成DMA請求的觸發(fā)輸入信號(hào)可以有21個(gè):

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

可以用來作為DMAMUX路由通道的同步輸入信號(hào)也可以有21個(gè),具體內(nèi)容跟上面的觸發(fā)輸入信號(hào)一樣。同樣,具體到各個(gè)路由通道選擇哪路信號(hào)作為同步信號(hào),通過路由通道配置寄存器MAMUX_CmCR進(jìn)行配置即可【m對應(yīng)路由通道號(hào)】。

可接受的外設(shè)請求輸入信號(hào)或事件可達(dá)115個(gè),這個(gè)數(shù)據(jù)應(yīng)該包括了DMAMUX生成器的4個(gè)通道生成的DMA請求。手冊一直將來自外設(shè)的DMA請求和基于生成器產(chǎn)生的DMA請求分開表述的,這里突然籠統(tǒng)地將二者稱之為外設(shè)請求感覺有點(diǎn)突兀。

關(guān)于DMAMUX模塊的大致原理及基本框架就介紹到這里,更多細(xì)節(jié)還得閱讀STM32芯片相應(yīng)的參考手冊。當(dāng)對它有了一個(gè)相對清晰的框架性了解后,再結(jié)合應(yīng)用實(shí)例和手冊就更容易理解和把握更深入的細(xì)節(jié)。最后推薦個(gè)關(guān)于DMAMUX的應(yīng)用筆記AN5224,可以下載閱讀。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2723

    瀏覽量

    47604
  • STM32芯片
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    4402

原文標(biāo)題:STM32芯片中的DMAMUX是干啥用的?

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一文讀懂Linux各模塊框架

    Linux各模塊框架整理。
    的頭像 發(fā)表于 06-30 11:27 ?8568次閱讀
    一文讀懂Linux各<b class='flag-5'>模塊</b><b class='flag-5'>框架</b>

    關(guān)于STM32 DMAMUX模塊具體的應(yīng)用示例代碼

    有人通過公眾號(hào)微信留言,詢問是否有關(guān)于STM32 DMAMUX模塊具體的應(yīng)用示例代碼。同時(shí),個(gè)人也發(fā)現(xiàn),雖然STM32片內(nèi)的DMAMUX不是什么新模塊,似乎還是很多人并不太熟悉。這里借
    的頭像 發(fā)表于 03-25 09:15 ?2503次閱讀
    關(guān)于STM32 <b class='flag-5'>DMAMUX</b><b class='flag-5'>模塊</b>具體的應(yīng)用示例代碼

    STM32L4R5的DMAMUX異常原因?

    __HAL_RCC_DMA1_CLK_ENABLE(); __HAL_RCC_DMAMUX1_CLK_ENABLE(); /*##-3- Configure the DMA
    發(fā)表于 04-19 06:36

    請問STM32L4R5ZI的DMA/DMAMUX是怎么管理請求?

    原來的STM32系列,比如F1,是沒有DMAMUX這個(gè)東西的,DMA1的1通道2通道具體對應(yīng)什么樣的請求,有一個(gè)專門的對應(yīng)表。但是現(xiàn)在的DMAMUX加進(jìn)來以后,對于89個(gè)外設(shè)請求,并沒有地方說明什么請求對應(yīng)哪一個(gè)通道。求助如何確定???比如SPI1的RX請求,應(yīng)該配置給D
    發(fā)表于 04-28 06:19

    如何打造打造自己的通信框架?

    工作以來,一直在別人搭好的框架下做業(yè)務(wù)開發(fā),翻過框架源碼大致明白實(shí)現(xiàn)原理,但是僅僅做到這樣,很難去理解作者設(shè)計(jì)時(shí)的思量,也容易忽視一些技術(shù)細(xì)節(jié),因此萌生了開發(fā)一套自己的框架的想法,這不
    發(fā)表于 11-05 06:46

    求助,S32K144 DMAMUX觸發(fā)源沒有TRGMUX,如何使用TRGMUX_IN0觸發(fā)DMA傳輸?

    我想通過引腳觸發(fā) DMA 傳輸,但沒有 TRGMUX 的 DMAMUX 觸發(fā)源。 如何使用 TRGMUX_IN0 觸發(fā) DMA 傳輸?
    發(fā)表于 05-04 08:19

    微軟發(fā)布開源框架驅(qū)動(dòng)程序模塊框架

    為了方便開發(fā)人員為Windows編寫驅(qū)動(dòng)程序,微軟昨天發(fā)布了一個(gè)開源框架驅(qū)動(dòng)程序模塊框架(DMF)。這個(gè)新框架將允許開發(fā)人員編寫簡單和結(jié)構(gòu)化的Windows驅(qū)動(dòng)程序
    發(fā)表于 08-22 11:37 ?1160次閱讀

    SKYLAB的定位模塊大致總匯

    室外的位置服務(wù)信息都離不開衛(wèi)星定位,而能夠?qū)⑿l(wèi)星信號(hào)轉(zhuǎn)換為經(jīng)緯度坐標(biāo),結(jié)合GIS地圖就能實(shí)現(xiàn)導(dǎo)航的就少不了定位模塊了。本篇SKYLAB針對個(gè)人定位器廠家介紹幾款小尺寸的定位GPS模塊、北斗模塊
    的頭像 發(fā)表于 03-03 10:09 ?2784次閱讀

    Spring框架功能的模塊作用介紹

    Spring框架采用的是分層架構(gòu),它一系列的功能要素被分成20個(gè)模塊,這些模塊大體分為Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programm
    的頭像 發(fā)表于 05-05 16:18 ?6732次閱讀
    Spring<b class='flag-5'>框架</b>功能的<b class='flag-5'>模塊</b>作用介紹

    SHARC音頻模塊裸機(jī)框架

    SHARC音頻模塊裸機(jī)框架
    發(fā)表于 04-09 10:05 ?4次下載
    SHARC音頻<b class='flag-5'>模塊</b>裸機(jī)<b class='flag-5'>框架</b>

    SHARC音頻模塊裸機(jī)框架

    SHARC音頻模塊裸機(jī)框架
    發(fā)表于 04-24 11:52 ?10次下載
    SHARC音頻<b class='flag-5'>模塊</b>裸機(jī)<b class='flag-5'>框架</b>

    介紹一篇基于DMAMUX同步事件的應(yīng)用演示

    STM32家族中的很多系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等都內(nèi)置了DMAMUX模塊。有了它一方面使得DMA請求與DMA控制器之間的映射關(guān)系更為靈活方便,同時(shí)也
    的頭像 發(fā)表于 08-14 14:55 ?2539次閱讀
    介紹一篇基于<b class='flag-5'>DMAMUX</b>同步事件的應(yīng)用演示

    簡單介紹有關(guān)STM32的DMAMUX模塊

    目前STM32家族中的很多系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等都內(nèi)置了DMAMUX模塊。有了它一方面使得DMA請求與DMA控制器之間的映射關(guān)系更為靈活方便
    的頭像 發(fā)表于 08-14 15:10 ?4992次閱讀
    簡單介紹有關(guān)STM32的<b class='flag-5'>DMAMUX</b><b class='flag-5'>模塊</b>

    framework框架流程 模塊綁定

    framework框架負(fù)責(zé)固件的通用流程實(shí)現(xiàn),包括系統(tǒng)初始化,module初始化,中斷服務(wù)提供,event服務(wù)提供等。這樣module就可以專注于自己功能和對外交互api的實(shí)現(xiàn)。SCP
    的頭像 發(fā)表于 11-02 17:24 ?716次閱讀
    framework<b class='flag-5'>框架</b>流程 <b class='flag-5'>模塊</b>綁定

    無線通信模塊管理框架RIL簡介

    大家好,今天分享一個(gè)開源框架 RIL(Radio Interface Layer),嵌入式平臺(tái)的無線通信模塊管理框架
    的頭像 發(fā)表于 12-21 09:24 ?2085次閱讀
    無線通信<b class='flag-5'>模塊</b>管理<b class='flag-5'>框架</b>RIL簡介
    主站蜘蛛池模板: 亚洲视频天天射| 色中色在线视频| 国语自产拍在线观看7m| 福利看片| 午夜高清在线观看免费6| 夜夜精品视频| 天天干天天拍天天射| 男女啪视频大全1000| 国产精品秒播无毒不卡| 免费视频在线观看1| 天堂最新版中文网| 91在线色| 丁香四月婷婷| 激情网页| 不卡中文字幕在线| 天天爽夜夜爽免费看| 久久777国产线看观看精品卜| 午夜视频在线| 久久精品国产99精品国产2021| h视频日本| 午夜三级网站| 亚1州区2区3区4区产品乱码| 色视频在线网站| 激情亚洲综合网| 亚洲影视自拍揄拍愉拍| 免费观看一级特黄三大片视频| 女69porin18| 伊人久久综合网亚洲| 5g影院午夜伴侣| 乱h亲女小说| 色妇视频| 国产精品美女在线| 国产精品激情综合久久| 亚洲精品网站日本xxxxxxx | 中文字幕一精品亚洲无线一区| 无夜精品久久久久久| 欧美黄色tv| 2021国内精品久久久久影院 | 国产三a级日本三级日产三级| 天天爽夜夜| tueb69xxxxxhd日本|