轉(zhuǎn)自 https://bbs.csdn.net/topics/392159760?page=1
zhouxiangbai的實(shí)驗(yàn)結(jié)果:
DMA源端:音頻模塊的數(shù)據(jù)FIFO
DMA目的端:內(nèi)存Buffer
DMA傳輸方式:循環(huán)列表鏈表(linked list)
實(shí)驗(yàn)結(jié)果:?jiǎn)?dòng)DMA傳輸潦闲,DMA在不停的從DMA源取數(shù)據(jù)(因?yàn)槭莻鬏敺绞绞茄h(huán)列表莺债,且在傳輸過(guò)程中沒(méi)有使能任何傳輸中斷),CPU是可以做其他事情的揩晴。
問(wèn)了一下同事鸟妙,他解釋是:芯片是分時(shí)給CPU和DMA的髓梅,當(dāng)分時(shí)給哪一方時(shí)褒脯,哪一方就獨(dú)占總線,另一方被掛起坟募。至于芯片是不是這么設(shè)計(jì)的岛蚤、具體怎么設(shè)計(jì)的,我們都搞不清楚懈糯。但是他這樣解釋我倒是覺(jué)得有道理涤妒,可以解釋我最初的疑惑
不喝冰的解釋:
在STM32中是采用這種方法:
DMA控制器和Cortex?-M3核心共享系統(tǒng)數(shù)據(jù)總線,執(zhí)行直接存儲(chǔ)器數(shù)據(jù)傳輸赚哗。當(dāng)CPU和DMA
同時(shí)訪問(wèn)相同的目標(biāo)(RAM或外設(shè))時(shí)她紫, DMA請(qǐng)求會(huì)暫停CPU訪問(wèn)系統(tǒng)總線達(dá)若干個(gè)周期硅堆,總線
仲裁器執(zhí)行循環(huán)調(diào)度,以保證CPU至少可以得到一半的系統(tǒng)總線(存儲(chǔ)器或外設(shè))帶寬贿讹。
DMA技術(shù)的出現(xiàn)渐逃,使得外圍設(shè)備可以通過(guò)DMA控制器直接訪問(wèn)內(nèi)存,與此同時(shí)民褂,CPU可以繼續(xù)執(zhí)行程序.那么DMA控制器與CPU怎樣分時(shí)使用內(nèi)存呢?通常采用以下三種方法:(1)停止CPU訪內(nèi)存茄菊;(2)周期挪用;(3)DMA與CPU交替訪問(wèn)內(nèi)存.
總結(jié)來(lái)說(shuō):目前的實(shí)驗(yàn)現(xiàn)象說(shuō)明赊堪,在DMA連續(xù)傳輸過(guò)程中面殖,CPU可以正常工作,CPU一定以某種方式獲得了總線的控制權(quán)哭廉。CPU和DMA時(shí)分復(fù)用了總線脊僚。