野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11655|回复: 6

DMA传输问题(网上找不到),哪位大神 能解答一下

[复制链接]
发表于 2015-11-23 21:30:32 | 显示全部楼层 |阅读模式
1、DMA实验中数据由内存到外设传输时,需要有USART_DMACmd(USART1,USART_DMAREq_Tx,ENABLE)的DMA请求。在ADC试验时,为什么么有请求?2、在ADC试验时,会不会出现DMA向内存(ADC_ConvertedValue)写数据时被CPU把数据读走?

回复

使用道具 举报

发表于 2015-11-23 22:16:10 | 显示全部楼层
  1.       
  2. // 使能ADC DMA 请求
  3. ADC_DMACmd(macADCx, ENABLE);
复制代码


在ADC例程里面不是有使能ADC的DMA请求嘛,如果没有使用DMA的话,转换的数据就存在ADCx_DR这个数据寄存器,具体怎么处理由你写的代码决定,CPU不会擅自动里面的数据。

你是不是代码看漏了,明明有ADC_DMACmd(macADCx, ENABLE);
        
回复 支持 反对

使用道具 举报

发表于 2015-11-23 22:24:44 | 显示全部楼层
看到没,还是说你用的例程不是我们配套的
123.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-24 18:49:06 | 显示全部楼层
fire 发表于 2015-11-23 22:24
看到没,还是说你用的例程不是我们配套的

我看的是13年5月重印版的 STM32库开发实战指南!例程是只读取ADC1的11通道数据的。上面的注释是英文的,你框的那个语句注释是使能ADC1 DMA 没有请求!!。所以没明白。。。。。   那个火哥,DMA把ADC数据传给内存时,是一位一位串行传的啊,还是一个字节一个字节并行传的啊? 有没有可能数据传到一半就被CPU用printf函数把数据打印出来啊?在数据手册和参考手册中都没有描述具体的传输啊!
回复 支持 反对

使用道具 举报

发表于 2015-11-24 19:43:47 | 显示全部楼层
gy13 发表于 2015-11-24 18:49
我看的是13年5月重印版的 STM32库开发实战指南!例程是只读取ADC1的11通道数据的。上面的注释是英文的, ...

按DMA里的设置传输,一般是半字,也就是16位一次传输,传输到一半的话,cpu只是printf上一次的数据,如果想每次都输出最新的数据,可以检查DMA的状态寄存器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-24 20:10:34 | 显示全部楼层
flyleaf 发表于 2015-11-24 19:43
按DMA里的设置传输,一般是半字,也就是16位一次传输,传输到一半的话,cpu只是printf上一次的数据,如果 ...

灰常感谢
回复 支持 反对

使用道具 举报

发表于 2015-11-25 08:42:29 | 显示全部楼层

关注我们的新书吧,新书里面把这些知识点讲解的非常详细。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-28 17:23 , Processed in 0.030429 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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