熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2022-4-25 14:42
正文摘要:各位大佬請(qǐng)指教一下:STM32F103C8T6 我使用DMA來搬運(yùn)ADC讀取到的數(shù)據(jù),想使用硬件觸發(fā)DMA搬運(yùn)。那ADC是在滿足那個(gè)條件下觸發(fā)DMA搬運(yùn)的呢?在DMA搬運(yùn)前ADC讀取到的數(shù)據(jù)又存放在哪里呢?能存多少數(shù)據(jù)呢?在DMA初始化 ... |
查DAM手冊(cè),找到觸發(fā)DAM的方式。 |
風(fēng)吹過又見你 發(fā)表于 2022-4-26 02:31 我都說得這么明白,還不理解?"這100個(gè)數(shù)據(jù)就一直是最近100次ADC的數(shù)據(jù)" 不是一輪數(shù)據(jù),是每次ADC成功轉(zhuǎn)換之后的一個(gè)數(shù)據(jù),"一個(gè)數(shù)據(jù)"明白不? 然后,DMA的100個(gè)數(shù)據(jù)中,最先保存那個(gè)數(shù)據(jù)會(huì)被替換成本次ADC的數(shù)據(jù),類似于堆棧溢出或者像數(shù)組溢出一樣的方式,把最先保存的數(shù)據(jù)給擠出去(不要問擠出去的數(shù)據(jù)到哪里了) |
Y_G_G 發(fā)表于 2022-4-25 20:34 也就是說DMA會(huì)保存最新100個(gè)ADC所測(cè)量的數(shù)值嗎?如果有新的一輪數(shù)據(jù)將會(huì)覆蓋掉舊的是吧!但硬件觸發(fā)DMA搬運(yùn),仍然是ADC轉(zhuǎn)換成功一次就會(huì)觸發(fā)一次咯,還是說先保存下100個(gè)數(shù)據(jù)再硬件觸發(fā)一次DMA搬運(yùn)? |
風(fēng)吹過又見你 發(fā)表于 2022-4-25 17:55 DMA_BufferSize就是指定DMA緩存的大小 就是留下多少個(gè)地址來存放ADC結(jié)果的意思 比如說你要保存100組ADC數(shù)據(jù),那這個(gè)值就是100 實(shí)際上它就是等于(u32)dma1_data_buff這個(gè)數(shù)組的總長(zhǎng)度,如果是二維數(shù)組,那就是行*列 |
風(fēng)吹過又見你 發(fā)表于 2022-4-25 15:45 是的是的,每次ADC成功轉(zhuǎn)換一次就搬運(yùn)一次 但并不是每次搬運(yùn)100個(gè),只是把ADC的數(shù)據(jù)(就是12位ADC結(jié)果)搬運(yùn)到DMA初始化時(shí)所指定的地址而已 但你說的"數(shù)據(jù)大小"不知道指的是什么,代碼上傳一下 可能是教材不一樣吧,我這本書里只有數(shù)據(jù)位寬和存儲(chǔ)長(zhǎng)度,沒有大小這一說 |
是不是說DMA在循環(huán)模式下,ADC轉(zhuǎn)換成功一次就會(huì)觸發(fā)DMA搬運(yùn)一次數(shù)據(jù)。在DMA搬運(yùn)數(shù)據(jù)中,有一個(gè)數(shù)據(jù)大小,這個(gè)參數(shù)是干嘛的呢?是指每次搬運(yùn)這么多個(gè)數(shù)據(jù)嗎? |
感謝解答! |
ADC工作在DMA的模式下又不占用運(yùn)行,干嘛要硬件觸發(fā)呢? 如果不是要降低功耗,ADC可以一直進(jìn)行,MDA工作在循環(huán)模式下,就一直在保存著一定長(zhǎng)度的數(shù)據(jù),你用的時(shí)候,只要讀取就可以了 在DMA模式下,每次ADC轉(zhuǎn)換完成,DMA就搬運(yùn)一次數(shù)據(jù),并不是要等到100次ADC之后才搬運(yùn)的 如果是你設(shè)定了100個(gè)數(shù)據(jù),而且,ADC已經(jīng)進(jìn)行超過了100次,那么,這100個(gè)數(shù)據(jù)就一直是最近100次ADC的數(shù)據(jù) |
Powered by 單片機(jī)教程網(wǎng)