曾有人在STMCU社區(qū)網(wǎng)站咨詢(xún)?nèi)缦聠?wèn)題:
由于實(shí)驗(yàn)需要,要用到STM32F407的兩個(gè)DMA并用定時(shí)器觸發(fā),在使用過(guò)程中發(fā)現(xiàn)DMA1無(wú)法把GPIO的IDR數(shù)據(jù)傳輸?shù)絻?nèi)存,調(diào)試過(guò)程中出現(xiàn)DMA1的數(shù)據(jù)流傳輸錯(cuò)誤標(biāo)志,但是使用DMA2沒(méi)有問(wèn)題。另外當(dāng)把訪問(wèn)GPIO的IDR改成訪問(wèn)APB1下的tim5的ARR時(shí),DMA1也能正常工作。請(qǐng)問(wèn)這是怎么回事?
咨詢(xún)者提到STM32F4系列中DMA1與DMA和另外兩個(gè)外設(shè)GPIO和TIM5 。為了弄清這個(gè)問(wèn)題,我們有必要先看看STM32F407的總線與存儲(chǔ)框架圖。 如下圖所示:
整個(gè)系統(tǒng)架構(gòu)由多層32位AHB總線矩陣及主從總線構(gòu)成,并建立起各個(gè)主從模塊間的互聯(lián)訪問(wèn)。借助于總線矩陣,可以實(shí)現(xiàn)主控設(shè)備到從控設(shè)備的訪問(wèn),可以實(shí)現(xiàn)多個(gè)高速外設(shè)的并發(fā)訪問(wèn)和高效運(yùn)行。[需要注意的是,對(duì)于STM32F4系列,圖中64K CCM并不經(jīng)過(guò)總線矩陣,只能被CPU訪問(wèn)。自然DMA是不能訪問(wèn)它的.]
我們接著看看STM32F407 的DMA1和DMA2的訪問(wèn)框架圖。這兩個(gè)DMA都具有雙AHB總線訪問(wèn)端口,一端用于存儲(chǔ)器訪問(wèn),另一端用于外設(shè)訪問(wèn)。
結(jié)合這幅DMA總線訪問(wèn)框圖和上面的系統(tǒng)存儲(chǔ)總線框架圖可以看出,2個(gè)DMA的外設(shè)訪問(wèn)端口的總線連接有點(diǎn)不一樣。
DMA2的外設(shè)訪問(wèn)端口既與總線矩陣相連,經(jīng)過(guò)矩陣可以訪問(wèn)AHB外設(shè),又與AHB-APB橋2相連,可以進(jìn)一步訪問(wèn)APB2外設(shè);而DMA1卻沒(méi)有與總線矩陣相連,只是跟AHB-APB橋1相連,從而訪問(wèn)APB1外設(shè)。[長(zhǎng)方形方框代表總線矩陣]
現(xiàn)在的問(wèn)題是說(shuō)DMA1訪問(wèn)不了GPIO,但如果換成TIM5就可以。我們可以去芯片數(shù)據(jù)手冊(cè)的Device overview部分查看相關(guān)總線和外設(shè)聯(lián)結(jié)圖。截取STM32F40x block diagram的部分如下:
不難看出GPIO外設(shè)跟AHB1相連;TIM5跟APB1相連。我們?cè)俳Y(jié)合中間的DMA訪問(wèn)框圖看得清楚,DMA1的外設(shè)端口根本沒(méi)連接AHB1,自然沒(méi)法訪問(wèn)相應(yīng)外設(shè),比如GPIO。而DMA2 可以,因?yàn)樗梢越?jīng)過(guò)總線矩陣后再去訪問(wèn)AHB1的外設(shè)。DMA1為什么能訪問(wèn)TIM5也不難解釋了,因DMA1的AHB外設(shè)端口總線經(jīng)過(guò)AHB/APB1橋后就可以訪問(wèn)APB1各類(lèi)外設(shè),而TIM5就是掛在APB1總線上的外設(shè)之一。
咨詢(xún)者的問(wèn)題基本上靠看上面幾幅圖可以得到答案。這些圖很重要,很多信息用圖描述也很直觀明了。各技術(shù)手冊(cè)里的插圖往往大有乾坤,不要視而不見(jiàn)。上面提到的都是基于STM32F4系列的總線架構(gòu),你也可以去看看其它系列的系統(tǒng)總線框圖,相信你一定會(huì)另有發(fā)現(xiàn)和收獲。
上一篇:基于stm32的GPIO寄存器學(xué)習(xí)解析
下一篇:全面剖析基于stm32的四軸飛行器設(shè)計(jì)方案
推薦閱讀最新更新時(shí)間:2025-04-16 22:04








設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開(kāi)發(fā)環(huán)境為開(kāi)發(fā)者提供支持
- iTOP-i.MX6開(kāi)發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開(kāi)發(fā)板Qt for Android搭建開(kāi)發(fā)環(huán)境
- 迅為i.MX8M mini開(kāi)發(fā)板Windots QT系統(tǒng)開(kāi)發(fā)環(huán)境搭建
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開(kāi)發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開(kāi)發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)設(shè)置開(kāi)機(jī)自啟動(dòng)
- 迅為IMX6Q開(kāi)發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- WS2812奇光板控制部分
- LT1317CS8 PWM DC/DC 轉(zhuǎn)換器的典型應(yīng)用電路
- AKD4385-B,AK4385 192kHz 采樣 24 位 DS DAC 評(píng)估板
- L78L10AC正壓穩(wěn)壓器高輸出電流短路保護(hù)的典型應(yīng)用
- ESP32-S3 4.3寸電子相框(FPC4301MS)
- BLV 一分四線電源供電
- LTC2946IMS-1 12V、50A 功率、電荷和能量監(jiān)視器的典型應(yīng)用
- 使用 Analog Devices 的 LT1634BCS8-1.25 的參考設(shè)計(jì)
- LTC3873ITS8-5、1W 隔離式家政電信轉(zhuǎn)換器的典型應(yīng)用電路
- DC1926A,LTC4353DE 雙路低電壓理想二極管控制器的演示板
- 執(zhí)杖創(chuàng)新,創(chuàng)芯微晉級(jí)電池管理芯片國(guó)產(chǎn)替代領(lǐng)航員
- 數(shù)字萬(wàn)用表使用入門(mén)教程
- 萬(wàn)用表的運(yùn)用辦法_萬(wàn)用表運(yùn)用辦法圖解
- 泰克示波器測(cè)量紋波注意事項(xiàng)
- S3C2440裸機(jī)實(shí)驗(yàn)(4) -----IIC
- 如何使用萬(wàn)用表測(cè)量二極管的阻值
- “樂(lè)高式”連接器簡(jiǎn)化可伸縮設(shè)備組裝
- 基于LabVIEW和MCS-51單片機(jī)實(shí)現(xiàn)數(shù)據(jù)采集與信息分析系統(tǒng)的設(shè)計(jì)
- 來(lái)翻牌吧!解鎖示波器的N種玩法
- TI有獎(jiǎng)直播|C2000™ F280013x實(shí)現(xiàn)更低成本且更高效的實(shí)時(shí)控制方案
- 有獎(jiǎng)直播 | 是德科技 InfiniiMax4.0系列高帶寬示波器探頭新品發(fā)布
- 有獎(jiǎng)活動(dòng)“庖丁”解智能睡眠監(jiān)測(cè)儀,一波“水軍”來(lái)圍觀
- 搶先體驗(yàn)NUCLEO家族新貴,ST STM32 NUCLEO-F091RC開(kāi)發(fā)板28元包郵!
- 【泰克注冊(cè)觀看有禮】 PCI-SIG 前主席解析:PCI Express5.0測(cè)試方案和測(cè)量挑戰(zhàn)
- 英飛凌出手游啦 | 汽車(chē)水泵挑戰(zhàn)賽等你來(lái)!
- 關(guān)于STM8CAN產(chǎn)生bus-off如何自動(dòng)恢復(fù)
- MSP430單片機(jī)__中斷服務(wù)
- MSP430F149的TIMERA定時(shí)中斷理解
- STM32 DAC簡(jiǎn)單介紹
- STM8L151 DAC
- MSP430F149的DS18B20C語(yǔ)言程序
- 臺(tái)積電預(yù)計(jì)4月量產(chǎn)5nm產(chǎn)品
- 關(guān)于STM8的程序下載問(wèn)題:SWIM Error[30006]報(bào)錯(cuò)解決辦法匯總
- iar Error[Li005] no definition for "assert_failed"
- IAR no definition for
- 亂學(xué)一、使用ST最新庫(kù)建立MDK項(xiàng)目
- 手操器電路原理圖+C源程序
- 汽車(chē)半導(dǎo)體行業(yè)2012年或?qū)⒒緦?shí)現(xiàn)復(fù)蘇
- IGBT直接串聯(lián)高壓變頻器
- 解決5G挑戰(zhàn)關(guān)鍵技術(shù)之GaN詳解
- linux完全教程
- 求助大神!關(guān)于AD采樣停止的問(wèn)題
- FreeScale s08JM源碼 資料
- 送分了,問(wèn)兩個(gè)非常初級(jí)的問(wèn)題,剛開(kāi)始學(xué),挺郁悶。
- 想做一個(gè)串口按鈕發(fā)送指令的上位機(jī),沒(méi)做過(guò),沒(méi)有任何頭緒