OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2349|回复: 0

关于DMA的外设到外设问题

[复制链接]

35

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2016-10-12
在线时间
53 小时
发表于 2017-12-28 14:13:26 | 显示全部楼层 |阅读模式
经常有人问:为什么DMA只有内存和外设、内存到内存的模式,为啥没有外设到外设的模式?我这里来解答一下:
1、首先,DMA并没有规定模式,其实原地址和目标地址,你放哪都可以。
2、每个通道可以连接几个硬件,并不是说这个通道的地址只能是这些外设,而是这个通道的触发条件只能是这些外设。
举个例子:
DMA1的4通道,它的触发条件有很几个,其中包括USART1_TX,意思就是,串口的TXE事件能触发这个通道的传输。其实目标地址和源地址放哪里,原则上都是可以的,只不过,我们一般把目标地址放在USART->DR寄存器地址上,这样,当串口1没数据了,DMA会自动开始传输。
3、那么,外设到外设倒底可不可以呢?答案是可以的,但是,会有很多问题。
比如:如果还是串口的例子,DMA的目标是DR寄存器地址,源地址放外设,就一定要注意,外设什么什么的数据可读,我们不知道,而只要串口发送缓冲区一空,就会开始传输,源地址如果数据不对,那就出问题了。所以,源地址如果在外设上,只要是一个随时都可以读的数,那就没问题,比如定时器的CNT寄存器,那就随时可读。可用来做P2P实验。

有人会问,不是有通道的触发条件在定时器上么?
     对,有这样的通道,那就反过来,触发条件在定时器上,只要符合某种条件,就传输,那么,目标会接受吗?外设可不是内存,很多时候是不允许写入数据的。
所以,不是DMA不支持外设到外设,而是这种方式实用性不强,原因就是上面所说,同步问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 05:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表