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

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

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

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

STM32 DMA傳輸?shù)膯栴}分析

茶話MCU ? 來源:茶話MCU ? 2023-12-01 09:19 ? 次閱讀

問題1、

用戶使用STM32G473RET6芯片,開發(fā)環(huán)境STM32CubeMX+Keil(LL庫)。使用DMA1通道1,在半傳輸中斷和完全傳輸中斷里,拷貝ADC采集的數(shù)據(jù)。在應(yīng)用過程中發(fā)現(xiàn)DMA半傳輸中斷和完全傳輸中斷不能獨(dú)立使用。

具體體現(xiàn):
1、在DMA1初始化時(shí),打開了半傳輸中斷,關(guān)閉完全傳輸中斷,照樣能觸發(fā)完全傳輸中斷
LL_DMA_EnableIT_HT(DMA1,LL_DMA_CHANNEL_1);//打開DMA1半傳輸中斷
LL_DMA_DisableIT_TC(DMA1,LL_DMA_CHANNEL_1);//關(guān)閉DMA1完全傳輸中斷
2、在DMA1初始化時(shí),關(guān)閉了半傳輸中斷,打開完全傳輸中斷,照樣能觸發(fā)半傳輸中斷
LL_DMA_EnableIT_TC(DMA1,LL_DMA_CHANNEL_1);//打開DMA1完全傳輸中斷
LL_DMA_DisableIT_HC(DMA1,LL_DMA_CHANNEL_1);//關(guān)閉DMA1半傳輸中斷

這個(gè)問題很讓他很困惑,想知道怎么回事。

關(guān)于這個(gè)問題,我們在操作DMA相關(guān)的使能位或做相關(guān)傳輸長度配置時(shí),一定要注意他們往往要求在DMA通道未被使能的前提下進(jìn)行【具體閱讀芯片手冊】。現(xiàn)在的問題是,他想對DMA傳輸中斷使能位進(jìn)行改寫,依然也有這個(gè)前提。見下圖黃色高亮內(nèi)容,即當(dāng)相應(yīng)DMA通道被使能時(shí),是不接受對相應(yīng)DMA通道的傳輸完成和半完成中斷使能的改寫。

3c31184e-8f7a-11ee-939d-92fbcf53809c.png

換言之,這里若要對相應(yīng)中斷使能位進(jìn)行改寫,得先將DMA通道使能位【EN位】進(jìn)行清零。使用LL庫的話就調(diào)用LL_DMA_DisableChannel()函數(shù)實(shí)現(xiàn),修改相應(yīng)中斷使能位之后再將DMA通道打開,即調(diào)用LL_DMA_EnableChannel()函數(shù)。

3c7126be-8f7a-11ee-939d-92fbcf53809c.png

問題2、用戶使用STM32G431芯片,用到TIMER1的PWM功能,并啟用基于TIMER事件的DMA Burst傳輸實(shí)現(xiàn)4個(gè)比較通道寄存器的批量修改。使用CubeMx進(jìn)行配置。配置時(shí)發(fā)現(xiàn)一點(diǎn)疑惑,為什么外設(shè)端不需地址自增的勾選。

3c831ab8-8f7a-11ee-939d-92fbcf53809c.png

現(xiàn)在用戶的具體情況就是利用TIMER更新事件觸發(fā)DMA請求,每次更新事件觸發(fā)DMA將4個(gè)內(nèi)存數(shù)據(jù)轉(zhuǎn)發(fā)給定時(shí)器的4個(gè)CCR寄存器。

3c985a36-8f7a-11ee-939d-92fbcf53809c.png

按照客戶的理解,在做DMA配置時(shí)這里的外設(shè)地址也應(yīng)該勾選自增才對,可事實(shí)發(fā)現(xiàn)不勾選才結(jié)果正常,若選擇外設(shè)地址自增了反而異常。

3cb7314a-8f7a-11ee-939d-92fbcf53809c.png

3cddd4d0-8f7a-11ee-939d-92fbcf53809c.png

ST公司設(shè)計(jì)人員為了滿足DMA對TIMER寄存器批量訪問,還特別設(shè)計(jì)了2個(gè)寄存器,分別是TIMx_DCR和TIMx_DMAR。其中,DCR寄存器由DBL和DBA字段組成。

DBA:被訪問的第一個(gè)定時(shí)器寄存器相對于定時(shí)器地址映射表中的TIMx_CR1的地址偏移量【偏移量從0開始計(jì)算】。

DBL:每組批量訪問的寄存器個(gè)數(shù)【從0開始計(jì)算】。DMA訪問DMAR寄存器時(shí),按照如下算式得到絕對地址實(shí)現(xiàn)對寄存器的逐個(gè)訪問。(TIM2_CR1address) + (DBA + DMA?index)x 4。

對于定時(shí)器DMA BURST傳輸,外設(shè)地址就是TIM2_DMAR寄存器的地址。DMA根據(jù)上面地址算式實(shí)現(xiàn)對多個(gè)TIMER寄存器的訪問。TIM2_DMAR寄存器地址本身是固定的,無須增減,所以基于定時(shí)器事件DMA Burst模式配置外設(shè)時(shí)不要做地址自增勾選。

當(dāng)然,上面需求也可以基于非Burst模式來完成。假設(shè)還是基于4個(gè)內(nèi)存數(shù)據(jù)修改4個(gè)CCR寄存器,此時(shí)則需要4次定時(shí)器事件觸發(fā)DMA請求,做DMA配置時(shí)需要將內(nèi)存端和外設(shè)端都選擇地址自增模式。基于CubeMx的參考配置如下:

3d008994-8f7a-11ee-939d-92fbcf53809c.png

當(dāng)然,相應(yīng)API函數(shù)也跟Burst模式下的也不一樣【這里依然使用更新事件申請DMA】。 HAL_DMA_Start_IT(&hdma_tim1_up,(uint32_t)T1_CCRData, (uint32_t)&htim1.Instance->CCR1,4); 下面是兩種不同訪問模式下的示意圖,圖示可能更直觀些。

3d372936-8f7a-11ee-939d-92fbcf53809c.png

好,今天的分享就到這里,下次再聊。

審核編輯:湯梓紅

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

    關(guān)注

    99

    文章

    6606

    瀏覽量

    547575
  • STM32
    +關(guān)注

    關(guān)注

    2282

    文章

    10983

    瀏覽量

    360923
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    902

    瀏覽量

    42321
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    569

    瀏覽量

    101939
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    286

    瀏覽量

    15832

原文標(biāo)題:關(guān)于STM32 DMA傳輸?shù)膬蓚€(gè)問題釋疑

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

收藏 人收藏

    評論

    相關(guān)推薦

    使用STM32自帶DMA傳輸數(shù)據(jù)

    使用STM32自帶DMA傳輸數(shù)據(jù),可以減輕CPU負(fù)擔(dān),只需設(shè)置一些參數(shù)即可發(fā)送想要發(fā)送的數(shù)據(jù),以下是STM32F1系列芯片測試過的部分代碼,可實(shí)現(xiàn)D
    發(fā)表于 08-17 06:30

    STM32_DMA應(yīng)用與性能分析

    很好的一份關(guān)于STM32DMA分析資料,可以給開發(fā)者一個(gè)借鑒
    發(fā)表于 07-01 16:45 ?7次下載

    STM32 DMA應(yīng)用與性能分析

    STM32 DMA應(yīng)用與性能分析 學(xué)習(xí)資料,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-06 17:33 ?11次下載

    STM32定時(shí)器觸發(fā)DMA數(shù)據(jù)傳輸失敗的原因如何解決

    有人使用STM32的定時(shí)器事件觸發(fā)DMA,讓其將內(nèi)存數(shù)據(jù)傳輸到通信外設(shè)的數(shù)據(jù)寄存器進(jìn)行發(fā)送,發(fā)現(xiàn)DMA根本就不動作。
    的頭像 發(fā)表于 11-25 09:21 ?2.2w次閱讀
    <b class='flag-5'>STM32</b>定時(shí)器觸發(fā)<b class='flag-5'>DMA</b>數(shù)據(jù)<b class='flag-5'>傳輸</b>失敗的原因如何解決

    STM32F429芯片帶FIFO的DMA傳輸實(shí)現(xiàn)過程

    STM32系列芯片都內(nèi)置DMA外設(shè),其中很多系列的DMA配備了FIFO。這里以STM32F429芯片及開發(fā)板為例,演示一下帶FIFO的DMA
    的頭像 發(fā)表于 09-04 14:36 ?7538次閱讀
    <b class='flag-5'>STM32</b>F429芯片帶FIFO的<b class='flag-5'>DMA</b><b class='flag-5'>傳輸</b>實(shí)現(xiàn)過程

    DMA通信編程與STM32串口中斷方式

    目錄DMA通信原理DMA的基本介紹DMA工作原理STM32DMA結(jié)構(gòu)DMA的主要特性
    發(fā)表于 11-26 19:21 ?13次下載
    <b class='flag-5'>DMA</b>通信編程與<b class='flag-5'>STM32</b>串口中斷方式

    STM32F1開發(fā)指南筆記32----DMA

    本章介紹STM32F1的DMA。在本章中,我們將利用STM32F1的DMA來實(shí)現(xiàn)串口數(shù)據(jù)傳送,并在TFTLCD模塊上顯示當(dāng)前的傳送進(jìn)度。當(dāng)CPU初始化這個(gè)
    發(fā)表于 12-04 19:21 ?20次下載
    <b class='flag-5'>STM32</b>F1開發(fā)指南筆記32----<b class='flag-5'>DMA</b>

    STM32基礎(chǔ)-----DMA

    STM32基礎(chǔ)-------DMA
    發(fā)表于 12-20 19:35 ?11次下載
    <b class='flag-5'>STM32</b>基礎(chǔ)-----<b class='flag-5'>DMA</b>

    STM32CubeMX-串口開啟DMA進(jìn)行數(shù)據(jù)傳輸

    STM32CubeMX筆記-串口開啟DMA進(jìn)行數(shù)據(jù)傳輸
    發(fā)表于 12-27 18:40 ?7次下載
    <b class='flag-5'>STM32</b>CubeMX-串口開啟<b class='flag-5'>DMA</b>進(jìn)行數(shù)據(jù)<b class='flag-5'>傳輸</b>

    DMA】淺談STM32F4xx的DMA(附初始化代碼)

    訪問這次分析的是STM32F4xx系列的DMA,需要注意的是F4系列的DMA和F1系列的DMA在結(jié)構(gòu)上有所不同!
    發(fā)表于 01-17 09:59 ?2次下載
    【<b class='flag-5'>DMA</b>】淺談<b class='flag-5'>STM32</b>F4xx的<b class='flag-5'>DMA</b>(附初始化代碼)

    STM32F10XXX使用DMA傳輸ADC轉(zhuǎn)換的數(shù)據(jù)

    STM32F10XXX使用DMA傳輸ADC轉(zhuǎn)換的數(shù)據(jù)教程說明。
    發(fā)表于 04-24 10:12 ?9次下載

    STM32U59 SPI DMA發(fā)送未產(chǎn)生傳輸完成中斷問題分析

    某客戶發(fā)現(xiàn)修改代碼后,STM32U59 SPI DMA 發(fā)送未產(chǎn)生傳輸完成中斷,但修改的代碼跟 SPI 以及 DMA 毫無關(guān)聯(lián)。
    的頭像 發(fā)表于 09-01 12:11 ?6314次閱讀

    DMA帶中斷的內(nèi)存到內(nèi)存傳輸

    : ? ? 現(xiàn)在按以下鍵生成代碼:Ctrl + S 4.1 HAL 庫 DMA 與 IT 流程↑ DMA 初始化在main.c中生成。 HAL_DMA_Start_IT:開始DMA緩沖
    發(fā)表于 03-23 15:23 ?3350次閱讀
    <b class='flag-5'>DMA</b>帶中斷的內(nèi)存到內(nèi)存<b class='flag-5'>傳輸</b>

    STM32F1的DMA使用

    在前面我們提到過 DMA,這一章我們就來學(xué)習(xí) STM32F1 的DMA 使 用。要實(shí)現(xiàn)的功能是:通過 K_UP 按鍵控制 DMA 串口 1 數(shù)據(jù)的傳送,在傳送過程中讓 D2 指示燈不斷
    的頭像 發(fā)表于 06-22 10:23 ?3466次閱讀
    <b class='flag-5'>STM32</b>F1的<b class='flag-5'>DMA</b>使用

    STM32DMA的五大問題

    1,DMA控制器的內(nèi)部結(jié)構(gòu)STM32中的DMA控制器是一種用于在外設(shè)和存儲器之間傳輸數(shù)據(jù)的專用硬件。DMA控制器的內(nèi)部結(jié)構(gòu)主要包括以下幾個(gè)關(guān)
    的頭像 發(fā)表于 12-10 08:00 ?2313次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>DMA</b>的五大問題
    主站蜘蛛池模板: 女人张开腿 让男人桶个爽 免费观看 | 日本黄色片段 | 在线播放12p| 国产农村一级特黄α真人毛片 | 99久久99久久久精品齐齐鬼色 | 手机看片99 | 天堂资源在线官网资源 | 亚洲热热久久九九精品 | 一区二区三区四区视频在线观看 | 成人午夜网站 | 天天射天 | 久久夜色tv网站免费影院 | 日本最黄视频 | 亚洲不卡视频在线观看 | 国产成人午夜精品影院游乐网 | 性做久久久久久免费观看 | 在线视频一区二区三区 | 国产三及 | 男男h啪肉np文总受 男男h全肉耽污 | 国产精品天天干 | 色爱区综合激情五月综合激情 | 视频在线观看一区二区三区 | 午夜看片网站 | 亚洲人成网站色7799在线观看 | 国产伦精品一区二区三区网站 | 女人张开腿 让男人桶视频 女人张开腿等男人桶免费视频 | 久久国产精品免费 | 五月激情综合 | 美女扒开尿囗给男人玩的动图 | 黄色成人免费网站 | 四虎.com | 天堂资源在线种子资源 | 天天干天天拍天天射天天添天天爱 | 夜夜操网站 | 99精品国产在热久久 | 欧美在线精品一区二区三区 | 亚洲色图图片区 | 欧美顶级xxxxbbbb | 欧美极品bbbbⅹxxxx | 久久精品国产夜色 | 男女免费观看视频 |