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