最近在做一个AD的项目,AD数据线与STM32中GPIOD pin0~pin15相连,想通过DMA将GPIOD输入的数据存放到SRAM中。因为AD是在不断的进行数据转换,所以DMA的模式只能是循环模式,看STM32F4 reference manual说如果是循环模式的话,就不能是MemoryToMemory,但是PeripheralToMemory需要DMA请求源,那么怎么使用合适的请求源呢?希望大家能够给我一些建议!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
可是AD都是有个转换时间的,并不是说你给AD一个转换信号,立刻就会有数据出来(AD转换完成的标志是AD的busy引脚由高电平下降为低电平)
并不是说你给AD一个转换信号,立刻就会有数据出来
所以你的ADC是你觸發一次 它轉換一次? 如果是這樣的話 你還不會設定頻率@@?
AD转换完成的标志是AD的busy引脚由高电平下降为低电平 <==這個有可能會沒固定轉換時間嗎?
而且用MtoM更奇怪...DMA沒有看到MtoM能控制傳輸時機(請求源)的register
你採樣100次 DMA收了100筆 可實際上DMA可能收了100筆同一個採樣點的資料
另外我认为你说的MtoM是正确的,我也认为MtoM不能控制传输时机,事实上,我用MtoM正如你所说的“你採樣100次 DMA收了100筆 可實際上DMA可能收了100筆同一個採樣點的資料”
然後去看看DMA2的請求源...看看哪個能抓來應用
是我就直接勾示波器抓時間來設定了...如果之後量產測試差異很多再說了
除非連同一顆IC 時間還能變來變去 還差很多...那就無言了
和你讨论了这么多,总之可以确定“不能使用MtoM”,但是你说的用TIM设定转换信号,然后enable DMA request,我觉得这个也似乎不可以。因为转换信号一到,同时触发DMA request,实际上这个时候AD还在转换过程中,传输过去的数据肯定不是正确的数据。
一周热门 更多>