一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

牽手一起夢(mèng) ? 來(lái)源:ST MCU 信息交流 ? 作者:ST MCU 信息交流 ? 2020-06-04 14:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

簡(jiǎn)單點(diǎn)說(shuō),它是DMA請(qǐng)求中轉(zhuǎn)調(diào)度器,或說(shuō)DMA請(qǐng)求路由器?;竟δ芫褪菍⒏髀稤MA請(qǐng)求經(jīng)過(guò)它的再分配調(diào)度后連接到相應(yīng)的DMA控制器傳輸通道以實(shí)現(xiàn)DMA傳輸。

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

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

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

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

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

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

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

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

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

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

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

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

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

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

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

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

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

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

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

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

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

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

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

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

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

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

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

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

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

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

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

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

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

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

STM32F4系列的DMA請(qǐng)求與DMA傳輸通道的映射關(guān)系多了些選擇性,靈活性

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

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

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

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

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

    關(guān)注

    7

    文章

    2788

    瀏覽量

    50372
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17105

    瀏覽量

    184268
  • STM32F4
    +關(guān)注

    關(guān)注

    3

    文章

    203

    瀏覽量

    29043
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之五:DMA 控制單元設(shè)計(jì)

    DMA 控制單元負(fù)責(zé)控制 DMA 傳輸事務(wù), 該單元承擔(dān)了 DMA 事務(wù)到 NVMe 事務(wù)的轉(zhuǎn)換任務(wù), 使用戶對(duì)數(shù)據(jù)傳輸事務(wù)的控制更加簡(jiǎn)單快
    的頭像 發(fā)表于 07-02 19:47 ?1026次閱讀
    NVMe IP高速<b class='flag-5'>傳輸</b>卻不依賴XDMA設(shè)計(jì)之五:<b class='flag-5'>DMA</b> 控制單元設(shè)計(jì)

    NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之五:DMA 控制單元設(shè)計(jì)

    請(qǐng)求的數(shù)據(jù)傳輸長(zhǎng)度, 該長(zhǎng)度以 NVMe 設(shè)備邏輯塊大小為單位; DMA 源地址和 DMA 目的地址寄存器定義了 DMA
    發(fā)表于 07-02 19:45

    STM32F3系列、STM32F4系列、STM32L4系列STM32L4+系列Cortex-M4編程手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《STM32F3系列STM32F4系列、STM32L4系列
    發(fā)表于 06-06 17:06 ?5次下載

    一文詳解AXI DMA技術(shù)

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

    為什么無(wú)法設(shè)置DMA傳輸大小?

    我學(xué)會(huì)了將HSADC和DMA結(jié)合起來(lái)進(jìn)行數(shù)據(jù)傳輸,我嘗試修改DMA傳輸數(shù)據(jù)的大小,但一直沒(méi)有成功,傳輸的數(shù)據(jù)已經(jīng)是4095了,這就是為什么,
    發(fā)表于 03-17 07:08

    STM32f103RE FatFs初始化導(dǎo)致DMA傳輸異常怎么解決?

    感謝!??! 主要實(shí)現(xiàn)代碼如下://DMA1通道5傳輸數(shù)據(jù)volatile uint32_t LDS_Buffer[8]={0x00ff00f0, 0x00ff0000, 0x00ff
    發(fā)表于 03-12 08:24

    STM32G030F6 ADC+DMA通道非連續(xù)采樣無(wú)法正常工作怎么解決?

    配置:使用STM32G030F6 ADC外設(shè)時(shí),ADC使用兩個(gè)通道DMA配置為循環(huán)模式,ADC掃描模式+非連續(xù)采樣。 問(wèn)題:初始化階段能進(jìn)一次DMA
    發(fā)表于 03-12 07:10

    CKS32F107xx系列DMA控制器簡(jiǎn)介

    直接存儲(chǔ)器存取(DMA)用來(lái)提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。無(wú)須CPU干預(yù),數(shù)據(jù)可以通過(guò)DMA快速地移動(dòng),這就節(jié)省了CPU的資源來(lái)做其他操作。兩個(gè)DMA控制
    的頭像 發(fā)表于 02-18 17:24 ?901次閱讀
    CKS32<b class='flag-5'>F</b>107xx<b class='flag-5'>系列</b>的<b class='flag-5'>DMA</b>控制器簡(jiǎn)介

    ZYNQ基礎(chǔ)---AXI DMA使用

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

    雅特力AT32F402/F405 DMA使用指南

    通道都支持外設(shè)的DMA請(qǐng)求映射到任意通道上。圖1.DMA控制器架構(gòu)DMAMUX簡(jiǎn)介對(duì)于如何將外設(shè)
    的頭像 發(fā)表于 11-20 01:03 ?1005次閱讀
    雅特力AT32<b class='flag-5'>F</b>402/<b class='flag-5'>F</b>405 <b class='flag-5'>DMA</b>使用指南

    DMA是什么?詳細(xì)介紹

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

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

    使用的產(chǎn)品型號(hào)的不同,有一個(gè)或兩個(gè)DMA模塊。 STM32F0XX DMA控制器總共有5個(gè)通道用于DMA1,每個(gè)
    發(fā)表于 09-04 14:08

    STM32CUBEMX(2)--USART通過(guò)DMA方式接收不定長(zhǎng)數(shù)據(jù)

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

    STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx中文手冊(cè)

    STM32F4系列單片機(jī)中文手冊(cè)
    發(fā)表于 08-08 14:32 ?2次下載

    揭秘車載VCU項(xiàng)目之外掛界的“大哥”DMA

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