STM32F4的DMA能否实现这样的功能?

2019-07-20 23:48发布

STM32F4的DMA能否实现这样的功能?

(1)外设到内存的传输,外设地址固定不变,内存起始地址addr,每次传输1B
(2)用TIM触发DMA,例如每1us传输一次,每次传输后,内存地址+1,外设地址不变
(3)当完成n次传输后(例如n = 1024,即传输了1kB,内存指针位于addr+n处),产生中断,内存指针复位到addr(起始值)
(4)重复上述过程


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
yyx112358
1楼-- · 2019-07-21 05:09
可以
9.3.7  指针递增
根据DMA_SxCR 寄存器中PINC 和MINC 位的状态,外设和存储器指针在每次传输后可以
自动向后递增或保持常量。
通过单个寄存器访问外设源或目标数据时,禁止递增模式十分有用。
如果使能了递增模式,则根据在DMA_SxCR 寄存器PSIZE 或MSIZE 位中编程的数据宽
度,下一次传输的地址将是前一次传输的地址递增1(对于字节)、2(对于半字)或4(对
于字)。
为了优化封装操作,可以不管AHB 外设端口上传输的数据的大小,将外设地址的增量偏移大
小固定下来。DMA_SxCR 寄存器中的PINCOS 位用于将增量偏移大小与外设AHB 端口或
32 位地址(此时地址递增4)上的数据大小对齐。PINCOS 位仅对AHB 外设端口有影响。
如果将PINCOS 位置1,则不论PSIZE 值是多少,下一次传输的地址总是前一次传输的地址
递增4(自动与32 位地址对齐)。但是,AHB 存储器端口不受此操作影响。
如果AHB 外设端口或AHB 存储器端口分别请求突发事务,为了满足AMBA 协议(在固定地
址模式下不允许突发事务),则需要将PINC 或MINC 位置1。
xuande
2楼-- · 2019-07-21 10:40

1、可以;
2、可以;
3、可以;
4、用程序再次启动。


止天
3楼-- · 2019-07-21 12:49
搜一下用DAC  dma  产生正弦波的程序
和你说的这个一样
gelin_ss
4楼-- · 2019-07-21 13:20
 精彩回答 2  元偷偷看……

一周热门 更多>