OpenEdv-开源电子网

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

结构体初始化中DMA_DIR设置数据传输方向,设置为从内存读取数据发送到串口,那么不应该是使能串口DMA的接收吗?为什么是使能...

[复制链接]

14

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2017-7-19
在线时间
26 小时
发表于 2017-9-8 10:04:58 | 显示全部楼层 |阅读模式
1金钱

最佳答案

查看完整内容[请看2#楼]

因为你是从内存读取数据发送到串口,意思就要从串口发送数据出去
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-8 10:04:59 | 显示全部楼层
本帖最后由 huanghan 于 2017-9-8 10:41 编辑
飞翔的机械人 发表于 2017-9-8 10:06
结构体初始化中DMA_DIR设置数据传输方向,设置为从内存读取数据发送到串口,那么不应该是使能串口DMA的接收 ...

因为你是从内存读取数据发送到串口,意思就要从串口发送数据出去
回复

使用道具 举报

14

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2017-7-19
在线时间
26 小时
 楼主| 发表于 2017-9-8 10:06:16 | 显示全部楼层
结构体初始化中DMA_DIR设置数据传输方向,设置为从内存读取数据发送到串口,那么不应该是使能串口DMA的接收吗?为什么是使能串口的DMA发送 呢?
回复

使用道具 举报

14

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2017-7-19
在线时间
26 小时
 楼主| 发表于 2017-9-8 10:51:21 | 显示全部楼层
huanghan 发表于 2017-9-8 10:39
因为你是从内存读取数据发送到串口,意思就要从串口发送数据出去

还是不理解 不是串口接收到来自内存的数据么?
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-8 11:34:09 | 显示全部楼层
本帖最后由 huanghan 于 2017-9-8 19:35 编辑
飞翔的机械人 发表于 2017-9-8 10:51
还是不理解 不是串口接收到来自内存的数据么?

不是串口接收到来自内存的数据,而是从内存读取数据放到了DMA发送的缓存,DMA发送是发送你缓存你的数据,你去看看DMA配置就明白
回复

使用道具 举报

14

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2017-7-19
在线时间
26 小时
 楼主| 发表于 2017-9-13 10:17:05 | 显示全部楼层
huanghan 发表于 2017-9-8 11:34
不是串口接收到来自内存的数据,而是从内存读取数据放到了DMA发送的缓存,DMA发送是发送你缓存你的数据, ...

内存读取数据放到了DMA,那DMA数据发送数据到串口是通过什么发送的呢?
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-13 19:25:15 | 显示全部楼层
飞翔的机械人 发表于 2017-9-13 10:17
内存读取数据放到了DMA,那DMA数据发送数据到串口是通过什么发送的呢?

DMA通过DMA数据总线发送数据到串口发送缓冲器DR,这样数据就从串口发送出去了
回复

使用道具 举报

18

主题

238

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1823
金钱
1823
注册时间
2014-8-5
在线时间
211 小时
发表于 2017-9-13 20:12:57 | 显示全部楼层
楼主,可能你还是没有理解DMA。我个人的理解为DMA是一个辅助型外设,它的作用就是实现数据的“搬运”,是来帮助外设来搬运数据的。
从你说的例子,DMA来辅助串口外设,那么就是DMA来代替CPU来读取串口缓存数据或者代替CPU来向串口缓存写数据。比如我们想要串口发送数据,都是直接向串口的发送缓存写要发送的数据,串口就会把这个数据发送出去,这个是CPU来实现的,CPU把数据搬运到串口缓存,如果采用DMA,那么这个工作就由DMA来代替CPU来实现了。
所有DMA它单独工作是没有意义的,需要配合对应的外设,DMA只是实现数据的搬运,真正的功能还是要外设来实现。
回复

使用道具 举报

14

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2017-7-19
在线时间
26 小时
 楼主| 发表于 2017-9-13 22:03:05 | 显示全部楼层
513393302@qq.co 发表于 2017-9-13 20:12
楼主,可能你还是没有理解DMA。我个人的理解为DMA是一个辅助型外设,它的作用就是实现数据的“搬运”,是来 ...

你好 这两个箭头可以跟我说一下么?
QQ图片20170913220055.png
回复

使用道具 举报

14

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2017-7-19
在线时间
26 小时
 楼主| 发表于 2017-9-14 09:53:11 | 显示全部楼层
huanghan 发表于 2017-9-13 19:25
DMA通过DMA数据总线发送数据到串口发送缓冲器DR,这样数据就从串口发送出去了

那DMA通过数据总线发送到串口发送缓冲器DR  不应该使能串口接收么?
回复

使用道具 举报

18

主题

238

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1823
金钱
1823
注册时间
2014-8-5
在线时间
211 小时
发表于 2017-9-14 11:18:56 | 显示全部楼层
飞翔的机械人 发表于 2017-9-14 09:53
那DMA通过数据总线发送到串口发送缓冲器DR  不应该使能串口接收么?

DMA->串口DR->串口输出数据       (串口发送数据)
串口接收数据->串口DR->DMA       (串口接收数据)

楼主,理解DMA是一个辅助外设,它只是实现数据的搬运。正在的功能由外设决定
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 22:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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