chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

茶話MCU ? 來源:茶話MCU ? 2024-03-25 09:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有人通過公眾號微信留言,詢問是否有關(guān)于STM32 DMAMUX模塊具體的應(yīng)用示例代碼。同時,個人也發(fā)現(xiàn),雖然STM32片內(nèi)的DMAMUX不是什么新模塊,似乎還是很多人并不太熟悉。這里借機聊聊這方面的內(nèi)容,重點演示相關(guān)功能的實現(xiàn),以供參考。

其實,DMAMUX作為一個外設(shè)模塊,操作它并不需要添加太多用戶代碼,尤其是當(dāng)我們基于STM32CubeMx進行配置時。它的主要功能就是為各種DMA請求做DMA傳輸通道的靈活調(diào)度與安排,并配合DMA使用,我們可以把它看成DMA控制器的前端拓展。

DMAMUX模塊大體上由DMA請求轉(zhuǎn)發(fā)通道和DMA請求發(fā)生器組成,其中每個DMA請求轉(zhuǎn)發(fā)通道還配有同步控制單元。DMA請求發(fā)生器可以基于某些事件產(chǎn)生DMA請求申請DMA傳輸。至于同步控制單元,可以簡單理解為每個DMA請求最終是否被轉(zhuǎn)發(fā)出去的一個控制開關(guān),就像蓄勢待發(fā)的田徑選手有時還得等信號槍響一樣。

1eed29d4-ea3e-11ee-a297-92fbcf53809c.png

上圖是DMAMUX與DMA功能關(guān)聯(lián)示意圖,供理解參考。關(guān)于STM32 DMAMUX的基本功能及特性,可以閱讀本公眾號的另外一篇分享筆記《STM32芯片中的DMAMUX是干啥用的?》,這里就不對其功能原理及特性贅述了。

下面使用STM32G0系列Nucleo板重點演示其主要功能的實現(xiàn)。實驗會用到PC13的外部中斷功能,LPTIM1的輸出功能、USART2外設(shè)和USART1外設(shè)基于DMA方式的通信功能。

1efdff48-ea3e-11ee-a297-92fbcf53809c.png

我們先看看DMAMUX的路由轉(zhuǎn)發(fā)功能。

DMAMUX對DMA請求做路由轉(zhuǎn)發(fā)是其基本功能,應(yīng)該也是設(shè)計它的初衷。我們平常使用該功能時是沒啥明顯感覺的,就像我們通過HUB讓USB設(shè)備跟PC通信一樣,尤其是在基于STM32CubeMx進行配置時。如果說,你之前用過其它不帶DMAMUX的STM32系列的DMA功能,再來使用帶DMAMUX的DMA功能時,使用STM32CubeMx工具做DMA配置,會發(fā)現(xiàn)DMA可選通道突然變多且可隨意選擇。不妨看看下圖基于STM32F4【不帶DMAMUX】和STM32G0系列【內(nèi)置DMAMUX】對UART2接收進行DMA配置時的情形,差別一目了然。

1fd1a596-ea3e-11ee-a297-92fbcf53809c.png

說到這里,順便介紹下目前內(nèi)置DMAMUX模塊的STM32系列。我從ST官方應(yīng)用筆記AN5224截圖過來,下面這些系列都內(nèi)置了DMAMUX。后面我以STM32G0芯片演示相關(guān)功能的實現(xiàn)。

1fe54196-ea3e-11ee-a297-92fbcf53809c.png

我們接下來來看看DMAMUX的第2個功能---DMA請求生成功能。它能基于某些特定事件產(chǎn)生DMA請求,請求的個數(shù)可以從1~32之間。這里的特定事件主要是指各種外部中斷事件和少數(shù)幾個路由通道的DMA事件以及LPTIM的輸出事件。

這里使用STM32G071的PC13外部中斷功能。每次按鍵事件經(jīng)DMAMUX的DMA generator申請10個DMA請求,讓DMA將內(nèi)存字符數(shù)據(jù)傳輸?shù)経ART2的數(shù)據(jù)發(fā)送寄存器,最終在串口終端顯示字符串“Key In!”。下面是有關(guān)PC13外部中斷和DMAMUX generator的配置?!咀ⅲ合旅娲a都是基于HAL庫的】

1ff3eb1a-ea3e-11ee-a297-92fbcf53809c.png

使用UART2將字符串輸出到串口終端,UART2的基本配置如下:

20085cd0-ea3e-11ee-a297-92fbcf53809c.png

創(chuàng)建工程,添加下面用戶代碼【基于HAL庫】后即可驗證結(jié)果:

201efe0e-ea3e-11ee-a297-92fbcf53809c.png

現(xiàn)在繼續(xù)看看DMAMUX的同步功能。針對該功能,這里再做兩個小演示。

第一個演示,用DMA傳輸完成產(chǎn)生觸發(fā)事件去觸發(fā)另一個DMA傳輸操作。具體來說,我開啟UART2的DMA方式收、發(fā)功能,從串口終端發(fā)送數(shù)據(jù)給UART2,UART2通過DMA方式收到數(shù)據(jù)后,基于DMAMUX產(chǎn)生DMA事件,觸發(fā)UART2將剛才收到的數(shù)據(jù)回顯到串口終端。從串口終端發(fā)送數(shù)據(jù)到再回顯于串口終端一氣呵成,無須CPU參與。

UART2的基本參數(shù)配置跟前面一樣,不重復(fù)貼圖了。下面是有關(guān)UART2 DMA接收的配置:

202ea3d6-ea3e-11ee-a297-92fbcf53809c.png

在上面UART2 DMA接收配置中,使能了DMA 事件功能。該事件將作為UART2 DMA發(fā)送的同步事件。下圖是有關(guān)UART2 DMA發(fā)送的配置,啟用了同步觸發(fā)功能。

20446586-ea3e-11ee-a297-92fbcf53809c.png

基于上面配置創(chuàng)建工程,添加必要代碼即可驗證結(jié)果。結(jié)果就是UART2每收到10個數(shù)據(jù)后立即通過DMA方式回顯在串口終端。見下面截圖:

206292c2-ea3e-11ee-a297-92fbcf53809c.png

最后再演示一個DMAMUX同步功能的實現(xiàn)案例。使用LPTIM的輸出產(chǎn)生周期性的觸發(fā)事件,作為UART1 DMA發(fā)送的同步事件。每次LPTIM產(chǎn)生觸發(fā)事件,UART1就通過DMA發(fā)送一串字符出去。這里使用UART1自發(fā)自收來驗證。顯然,UART1每發(fā)送一串字符出去也同時收到同一串字符。下面是LPTIM1的參數(shù)配置,沒啥過多解釋的.

20741f38-ea3e-11ee-a297-92fbcf53809c.png

下面是有關(guān)UART1 DMA方式收發(fā)功能的配置,重點關(guān)注其DMA發(fā)送的配置。開啟UART1 DMA發(fā)送的同步觸發(fā),LPTIM輸出的上沿作為其同步事件。至于UART1 DMA接收功能保持常規(guī)配置即可,不做同步也不產(chǎn)生DMA輸出事件。

208559d8-ea3e-11ee-a297-92fbcf53809c.png

基于上面配置,添加幾行用戶代碼即可驗證結(jié)果。參看下面截圖:

209be202-ea3e-11ee-a297-92fbcf53809c.png

基于上面配置,如果我們不啟動LPTIM1的話,可以發(fā)現(xiàn)UART1永遠不會發(fā)送數(shù)據(jù),自然它也接收不到任何數(shù)據(jù)。

關(guān)于STM32 DMAMUX的應(yīng)用演示就介紹到這里。不難看出,使用DMAMUX相關(guān)功能及特性時,所需應(yīng)用代碼不多也不復(fù)雜,關(guān)鍵在原理及配置。DMAMUX有時會給我們的應(yīng)用帶來一些意想不到的方便,可以善加利用。

好,就此打住,下次再聊~!




審核編輯:劉清

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

    關(guān)注

    4

    文章

    1423

    瀏覽量

    64394
  • STM32
    +關(guān)注

    關(guān)注

    2305

    文章

    11118

    瀏覽量

    370897
  • 外部中斷
    +關(guān)注

    關(guān)注

    1

    文章

    134

    瀏覽量

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

    關(guān)注

    1

    文章

    43

    瀏覽量

    12876
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    287

    瀏覽量

    17115

原文標題:STM32 DMAMUX應(yīng)用示例

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

    用過不帶DMAMUXSTM32芯片的DMA模塊的人可能會問,之前沒這個模塊,不是照樣用嗎?外設(shè)申請DMA請求,DMA控制器做出應(yīng)答響應(yīng)后即可實現(xiàn)DMA傳輸。為什么后面推出的
    的頭像 發(fā)表于 06-18 09:49 ?1.3w次閱讀
    <b class='flag-5'>DMAMUX</b><b class='flag-5'>模塊</b>的大致原理及基本框架

    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這個東西的,DMA1的1通道2通道具體對應(yīng)什么樣的請求,有一個專門的對應(yīng)表。但是現(xiàn)在的DMAMUX加進來以后,對于89個外設(shè)請求,并沒
    發(fā)表于 04-28 06:19

    LabVIEW關(guān)于USRPRIO的示例代碼

    LabVIEW關(guān)于USRPRIO的示例代碼 USRPRIO 通常以兩種方式使用: 1 基于 FPGA 的編程 對于希望修改USRP上的底層FPGA代碼以添加自定義DSP
    發(fā)表于 11-16 20:22

    STM32 M4 時鐘配置示例代碼和工程文件免費下載

    本文檔的主要內(nèi)容詳細介紹的是STM32 M4 時鐘配置示例代碼和工程文件免費下載。
    發(fā)表于 01-03 16:22 ?7次下載
    <b class='flag-5'>STM32</b> M4 時鐘配置<b class='flag-5'>示例</b>源<b class='flag-5'>代碼</b>和工程文件免費下載

    關(guān)于STM32浮點運算單元FPU的應(yīng)用示例

    有人利用STM32芯片做些DSP處理,在啟用FPU單元進行調(diào)試、驗證過程中可能會遇到些小問題、小困惑,這里通過STM32F4芯片一個具體的應(yīng)用示例簡單分享下,希望順便能給同仁提供些幫助
    的頭像 發(fā)表于 01-02 18:09 ?9740次閱讀
    <b class='flag-5'>關(guān)于</b><b class='flag-5'>STM32</b>浮點運算單元FPU的應(yīng)用<b class='flag-5'>示例</b>

    BeMicro代碼示例

    BeMicro代碼示例
    發(fā)表于 05-10 12:21 ?0次下載
    BeMicro<b class='flag-5'>代碼</b><b class='flag-5'>示例</b>

    STM32多個ADC模塊同時采樣轉(zhuǎn)換的應(yīng)用示例

    STM32多個ADC模塊同時采樣轉(zhuǎn)換的應(yīng)用示例(深圳市普德新星電源技術(shù)有限公司怎么樣)-本文重點介紹利用含有3個ADC模塊STM32F4、
    發(fā)表于 08-04 18:47 ?67次下載
    <b class='flag-5'>STM32</b>多個ADC<b class='flag-5'>模塊</b>同時采樣轉(zhuǎn)換的應(yīng)用<b class='flag-5'>示例</b>

    簡單介紹有關(guān)STM32DMAMUX模塊

    目前STM32家族中的很多系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等都內(nèi)置了
    的頭像 發(fā)表于 08-14 15:10 ?6019次閱讀
    簡單介紹有關(guān)<b class='flag-5'>STM32</b>的<b class='flag-5'>DMAMUX</b><b class='flag-5'>模塊</b>

    STM32DAC講解及代碼示例

    DAC轉(zhuǎn)換STM32的DAC模塊主要特點有:① 2個DAC轉(zhuǎn)換器:每個轉(zhuǎn)換器對應(yīng)1個輸出通道② 8位或者12位單調(diào)輸出③ 12位模式下數(shù)據(jù)左對齊或者右對齊④ 同步更新功能⑤ 噪聲波形生成⑥ 三角波形
    發(fā)表于 12-27 18:26 ?16次下載
    <b class='flag-5'>STM32</b>DAC講解及<b class='flag-5'>代碼</b><b class='flag-5'>示例</b>

    STM32F1復(fù)習(xí)筆記一

    去年疫情在家學(xué)的,現(xiàn)在忘完了。。就準備把一些非常常見的模塊功能的使用方法給記錄這里,一來寫一遍代碼有個印象,二來也方便查閱。主要是整理正點原子的開發(fā)指南我用得到的地方STM32復(fù)習(xí)筆記一STM
    發(fā)表于 01-17 09:36 ?1次下載
    <b class='flag-5'>STM32</b>F1復(fù)習(xí)筆記一

    華為游戲服務(wù)示例代碼教程案例

    概述 游戲服務(wù)kit安卓示例代碼集成了華為游戲服務(wù)的眾多API,提供了示例代碼程序供您參考和使用,下面是對示例
    發(fā)表于 04-11 11:09 ?4次下載

    UM1549 STM32示例代碼生成工具

    UM1549 STM32示例代碼生成工具
    發(fā)表于 11-22 19:12 ?0次下載
    UM1549 <b class='flag-5'>STM32</b><b class='flag-5'>示例</b><b class='flag-5'>代碼</b>生成工具

    UM1550 STM32示例代碼生成工具用戶手冊

    UM1550 STM32示例代碼生成工具用戶手冊
    發(fā)表于 11-22 19:12 ?0次下載
    UM1550 <b class='flag-5'>STM32</b><b class='flag-5'>示例</b><b class='flag-5'>代碼</b>生成工具用戶手冊

    自己編寫函數(shù)示例代碼很難嗎?分享幾個示例!

    Q A 問: Arduino Uno的函數(shù)示例 我決定自己編寫函數(shù)示例代碼,因為這應(yīng)該是Arduino中的基本示例。網(wǎng)絡(luò)上確實有關(guān)于使用函數(shù)
    的頭像 發(fā)表于 11-16 16:05 ?1166次閱讀
    自己編寫函數(shù)<b class='flag-5'>示例</b><b class='flag-5'>代碼</b>很難嗎?分享幾個<b class='flag-5'>示例</b>!