OpenEdv-开源电子网

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

关于ADC在DMA模式下的测量问题

[复制链接]

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-8-11
在线时间
0 小时
发表于 2015-9-10 10:07:10 | 显示全部楼层 |阅读模式
5金钱

我在做ADC转换的时候发现如下问题:

如果单单使用ADC1做单次转换,测量值没有问题,最大的测量值为4096,也就是3.3V;

但是如果使用了DMA将测量数据传到指定地址里面时,就会发生最大的测量值(接3.3V时)变为255,而不是4096;

请教一下,这是什么原因??


以下是ADC和DMA的配置:

DMA配置,其中 Convert_Data 是一个 u16 的全局变量。


ADC配置。


主函数,其中Send_Str是发送字符串的函数,Result是一个 float 形式的变量。主函数就是不断地将DMA 传输过来的 Convert_Data 的值进行转换,然后输出到串口。


但是就是会发生上述问题,请大家帮忙看看哪里有问题,或者还需要我提供什么信息?

谢谢~~


最佳答案

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

我今天看出来为什么错了,其实是一个很低级的错误。 DMA.PeripherialDataSize = DMA_MemoryDataSize_HalfWord; 其实应该是 DMA_PeripherialDataSize。 写错了一个变量啊,看了我两个礼拜!!! 除了这个,其他的还是正确的,程序也可以运行。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-8-11
在线时间
0 小时
 楼主| 发表于 2015-9-10 10:07:11 | 显示全部楼层
我今天看出来为什么错了,其实是一个很低级的错误。
DMA.PeripherialDataSize = DMA_MemoryDataSize_HalfWord;
其实应该是 DMA_PeripherialDataSize。
写错了一个变量啊,看了我两个礼拜!!!

除了这个,其他的还是正确的,程序也可以运行。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-10 23:03:41 | 显示全部楼层
帮顶....
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 21:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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