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