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

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

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

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

茶話(huà)MCU ? 來(lái)源:未知 ? 作者:易水寒 ? 2018-11-25 09:21 ? 次閱讀

有人使用STM32定時(shí)器事件觸發(fā)DMA,讓其將內(nèi)存數(shù)據(jù)傳輸?shù)?a href="http://www.wenjunhu.com/v/tag/1301/" target="_blank">通信外設(shè)的數(shù)據(jù)寄存器進(jìn)行發(fā)送,發(fā)現(xiàn)DMA根本就不動(dòng)作。

比方以基于STM32F411的芯片為例,通過(guò)TIM3更新事件觸發(fā)DMA請(qǐng)求,DMA從內(nèi)存將數(shù)據(jù)送到SPI1?的數(shù)據(jù)寄存器,從而完成數(shù)據(jù)發(fā)送。

他采用CubeMx進(jìn)行配置?;九渲萌缦拢篬文中圖片可以放大觀看]

?

相關(guān)用戶(hù)實(shí)現(xiàn)代碼如下:

從配置過(guò)程和代碼實(shí)現(xiàn)來(lái)看,似乎都沒(méi)有問(wèn)題。那DMA怎么就是不動(dòng)作呢?

問(wèn)題出在我們使用上面的函數(shù)做DMA傳輸所關(guān)聯(lián)源端和目標(biāo)端時(shí),出現(xiàn)了想當(dāng)然的情況。

我們利用TIMER事件來(lái)作為DMA請(qǐng)求源時(shí),而作為數(shù)據(jù)傳輸?shù)脑炊嘶蚰康亩耍际俏覀冇脩?hù)指定的。這時(shí)就一定要注意源端和目標(biāo)端是當(dāng)前DMA流所支持的。否則就會(huì)出現(xiàn)亂點(diǎn)鴛鴦譜,DMA根本可能就跑不起來(lái)。就像你叫了某快遞公司,它的服務(wù)范圍是相對(duì)固定的,并非你想去哪里她就能服務(wù)到哪里。

比方上面的例子,如果改成SPI2就沒(méi)問(wèn)題。為什么剛才SPI1不行呢,因?yàn)镈MA1根本訪問(wèn)不到SPI1,我們不妨看看基于STM32F411芯片的內(nèi)部功能及總線框圖就很清晰了。

從上圖不難看出DMA1是訪問(wèn)不到SPI1或SPI4這些外設(shè)的,或者說(shuō)DMA1就沒(méi)法訪問(wèn)掛在APB2總線上的外設(shè),只能訪問(wèn)APB1總線上的外設(shè)。

小結(jié):一般來(lái)講,基于某觸發(fā)事件,對(duì)應(yīng)的DMA數(shù)據(jù)流就可以確定下來(lái)了,那該DMA數(shù)據(jù)流的傳輸范圍往往也隨之確定。我們?cè)跒樵揇MA數(shù)據(jù)流指定源端和目標(biāo)端時(shí)一定要符合其傳輸范圍,否則會(huì)出現(xiàn)傳輸無(wú)法完成的情形。換言之,我們?cè)谧鯠MA傳輸時(shí),為了實(shí)現(xiàn)DMA的有效傳輸,往往需要結(jié)合源端和目的端來(lái)調(diào)整或選擇合適的DMA數(shù)據(jù)流。結(jié)合前面的比方,如果這家快遞公司到不了,我們換一家可能就輕松解決了。

聲明:本文內(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)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2289

    文章

    11011

    瀏覽量

    362208
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3287

    瀏覽量

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

    關(guān)注

    3

    文章

    572

    瀏覽量

    102276

原文標(biāo)題:定時(shí)器觸發(fā)DMA數(shù)據(jù)傳輸失敗之案例

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

收藏 0人收藏

    評(píng)論

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

    STM32通過(guò)DMA方式傳輸TIM3定時(shí)器計(jì)數(shù)值,數(shù)值重復(fù)是為什么?

    AD值防止數(shù)據(jù)錯(cuò)亂,故DMA配置必須放在ADC之前。) 因此為了排除相同原因導(dǎo)致的數(shù)據(jù)重復(fù),所以將DMA配置放在TIM3
    發(fā)表于 04-10 06:50

    STM32F103定時(shí)器觸發(fā)ADC+DMA傳輸 精選資料分享

    STM32F103定時(shí)器觸發(fā)ADC+DMA傳輸ADC除了軟件觸發(fā)方式之外還有外部
    發(fā)表于 08-11 06:05

    stm32 定時(shí)器觸發(fā)ADC多通道采樣+DMA提取數(shù)據(jù)相關(guān)資料下載

    stm32g0 定時(shí)器觸發(fā)ADC多通道采樣+DMA提取數(shù)據(jù)stm32g0
    發(fā)表于 02-15 06:46

    stm32數(shù)據(jù)傳輸的相關(guān)資料分享

    簡(jiǎn)介DMA,全稱(chēng)Direct Memory Access,即直接存儲(chǔ)訪問(wèn)。DMA傳輸數(shù)據(jù)從一個(gè)地址空間復(fù)制到另一個(gè)地址空間,提供在外設(shè)和
    發(fā)表于 02-22 06:58

    DMA進(jìn)行數(shù)據(jù)傳輸和CPU進(jìn)行數(shù)據(jù)傳輸的疑問(wèn)

    求大佬解答,本人正在學(xué)習(xí)STM32單片機(jī)中DMA直接數(shù)據(jù)存儲(chǔ)部分的內(nèi)容 看了DMA簡(jiǎn)介后,也上手過(guò)實(shí)例代碼,但是沒(méi)有實(shí)際的項(xiàng)目經(jīng)驗(yàn),所以有以下疑問(wèn):
    發(fā)表于 05-25 17:18

    DMA數(shù)據(jù)傳輸(源代碼分享)

    手頭項(xiàng)目也需要加入DMA數(shù)據(jù)傳輸,以最大限度地提升CPU效率,于是測(cè)試了一下XMEGA的DMA模塊,把一塊內(nèi)存中的數(shù)據(jù)DMA
    的頭像 發(fā)表于 04-27 09:22 ?9551次閱讀

    DMA數(shù)據(jù)傳輸在SPEAR300實(shí)現(xiàn)高速串口驅(qū)動(dòng)設(shè)計(jì)

    DMA數(shù)據(jù)傳輸無(wú)需CPU的參與,是一種更加高效的數(shù)據(jù)傳輸方式?,F(xiàn)有的DMA數(shù)據(jù)傳輸方案都是基于DMA
    發(fā)表于 04-04 12:23 ?1762次閱讀
    <b class='flag-5'>DMA</b><b class='flag-5'>數(shù)據(jù)傳輸</b>在SPEAR300實(shí)現(xiàn)高速串口驅(qū)動(dòng)設(shè)計(jì)

    測(cè)試代碼中使用DMA傳輸,定時(shí)器觸發(fā)ADC

    現(xiàn)在共用到ADC1模塊的4個(gè)ADC通道,即1個(gè)片內(nèi)Vrefint通道和其它三個(gè)外部通道CH8,CH10,CH17。下面測(cè)試代碼中使用DMA傳輸定時(shí)器觸發(fā)ADC.
    的頭像 發(fā)表于 08-10 16:22 ?4792次閱讀
    測(cè)試代碼中使用<b class='flag-5'>DMA</b><b class='flag-5'>傳輸</b>,<b class='flag-5'>定時(shí)器</b><b class='flag-5'>觸發(fā)</b>ADC

    STM32CUBEMX配置教程(十二)STM32定時(shí)器觸發(fā)的固定頻率ADC采樣(使用DMA

    STM32CUBEMX配置教程(十二)STM32定時(shí)器觸發(fā)的固定頻率ADC采樣(使用DMA
    發(fā)表于 11-24 13:51 ?86次下載
    <b class='flag-5'>STM32</b>CUBEMX配置教程(十二)<b class='flag-5'>STM32</b>的<b class='flag-5'>定時(shí)器</b><b class='flag-5'>觸發(fā)</b>的固定頻率ADC采樣(使用<b class='flag-5'>DMA</b>)

    STM32CUBEMX配置教程(十三)STM32定時(shí)器觸發(fā)的固定頻率DAC輸出(使用DMA

    STM32CUBEMX配置教程(十三)STM32定時(shí)器觸發(fā)的固定頻率DAC輸出(使用DMA
    發(fā)表于 11-24 14:06 ?47次下載
    <b class='flag-5'>STM32</b>CUBEMX配置教程(十三)<b class='flag-5'>STM32</b>的<b class='flag-5'>定時(shí)器</b><b class='flag-5'>觸發(fā)</b>的固定頻率DAC輸出(使用<b class='flag-5'>DMA</b>)

    STM32F103定時(shí)器觸發(fā)ADC+DMA傳輸

    STM32F103定時(shí)器觸發(fā)ADC+DMA傳輸ADC除了軟件觸發(fā)方式之外還有外部
    發(fā)表于 11-30 10:36 ?57次下載
    <b class='flag-5'>STM32</b>F103<b class='flag-5'>定時(shí)器</b><b class='flag-5'>觸發(fā)</b>ADC+<b class='flag-5'>DMA</b><b class='flag-5'>傳輸</b>

    H743定時(shí)器觸發(fā)ADC轉(zhuǎn)換DMA傳輸之應(yīng)用

    學(xué)習(xí)安富萊的H743的定時(shí)器觸發(fā)ADC DMA傳輸源碼
    發(fā)表于 11-30 11:21 ?12次下載
    H743<b class='flag-5'>定時(shí)器</b><b class='flag-5'>觸發(fā)</b>ADC轉(zhuǎn)換<b class='flag-5'>DMA</b><b class='flag-5'>傳輸</b>之應(yīng)用

    stm32 定時(shí)器觸發(fā)ADC多通道采樣+DMA提取數(shù)據(jù)

    stm32g0 定時(shí)器觸發(fā)ADC多通道采樣+DMA提取數(shù)據(jù)stm32g0
    發(fā)表于 12-16 16:56 ?72次下載
    <b class='flag-5'>stm32</b> <b class='flag-5'>定時(shí)器</b><b class='flag-5'>觸發(fā)</b>ADC多通道采樣+<b class='flag-5'>DMA</b>提取<b class='flag-5'>數(shù)據(jù)</b>

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

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

    stm32數(shù)據(jù)傳輸

    簡(jiǎn)介DMA,全稱(chēng)Direct Memory Access,即直接存儲(chǔ)訪問(wèn)。DMA傳輸數(shù)據(jù)從一個(gè)地址空間復(fù)制到另一個(gè)地址空間,提供在外設(shè)和
    發(fā)表于 12-28 19:08 ?8次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>數(shù)據(jù)傳輸</b>

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品