STM32F4通过DMA将GPIO口输入的数据存放到SRAM中

2019-07-20 23:18发布

    最近在做一个AD的项目,AD数据线与STM32中GPIOD pin0~pin15相连,想通过DMA将GPIOD输入的数据存放到SRAM中。因为AD是在不断的进行数据转换,所以DMA的模式只能是循环模式,看STM32F4 reference manual说如果是循环模式的话,就不能是MemoryToMemory,但是PeripheralToMemory需要DMA请求源,那么怎么使用合适的请求源呢?希望大家能够给我一些建议!!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
civic7366
1楼-- · 2019-07-21 02:28
我就是最近有做類似的東東...我才覺得OK的...

TIM1串TIM2又串TIM4 來產生VSYNC HSYNC PCLK DATA(TIM1 DMA)
然後影像感測器 也是Analog輸出的 我也外掛ADC 只是跟你時序不一樣 我的是自己給它CLK
那邊我也串了2個 用DMA又改位址(ODR) 又抓資料的(IDR)...

我也邊做邊一值改...因為PCLK 2MHz 不可能用程序去做處理 光中斷響應的時間就受不了了
(只是進中斷翻個GPIO腳就過了150ns以上了)

如果怕麻煩 情況又許可的話 你就別用DMA了..
正点原子
2楼-- · 2019-07-21 05:07
必须用MEM TO MEM这个模式,你可以在完成中断里面,重新开启一次即可.
veblen
3楼-- · 2019-07-21 07:21
 精彩回答 2  元偷偷看……
civic7366
4楼-- · 2019-07-21 10:42
 精彩回答 2  元偷偷看……
veblen
5楼-- · 2019-07-21 11:27
civic7366 发表于 2016-3-21 15:23
TIM1或TIM8的DMA請求  

你是不是外掛ADC然後直接拉一組GPIO去接收?  ADC的頻率總該知道吧

谢谢civic7366解答,我确实外挂ADC然后拉一组GPIO去接收,但是如何使用TIM取触发呢?我的AD芯片没有任何引脚是接在可以AF为TIM的GPIO口上的
civic7366
6楼-- · 2019-07-21 13:58
沒有要用到TIM_CH..把它拿來當定時器而已 (為了它的DMA_requset)

例如:
你把TIM1 設定ARR後(你要的頻率) 然後enable DMA UI_requset   

然後初始化DMA2(TIM1_UP)
之後每次TIM1周期到了 DMA就會去接收IDR到你要存的地方

一定要DMA2...因為DMA1沒辦法訪問ODR或IDR 所以你只能選TIM1或TIM8



一周热门 更多>