OpenEdv-开源电子网

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

STM32F103ZET6 AD转换求助

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-4-30
在线时间
4 小时
发表于 2020-5-7 12:12:58 | 显示全部楼层 |阅读模式
1金钱
各位大佬们好  本人新手  最近在做关于AD转换的项目  要求采集1KH的正弦信号通过串口输出到电脑上  并且用matlab显示波形  程序写好后发现当输入频率大于5HZ的时候波形就开始失真  最开始以为是采样率的问题  但在多次调大采样率后发现失真地越来越厉害  请问是什么原因呢  程序和测试结果如下:

采样周期为239.5

采样周期为239.5

采样周期为71.5

采样周期为71.5

主函数

主函数

ADC配置1

ADC配置1

ADC配置2

ADC配置2

最佳答案

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

你设置的采样率是ADC软件转换的速率,虽然你加快了ADC的转换速率,但是你主程序需要将一个ADC数据通过串口发送出去后才会去读取下一个数据,主程序里面的发送是需要时间的,ADC速率慢的时候或许发送还来得及,但是如果你把采样率提高了,数据发送就会影响你去读数据,这也就会错过一些数据,采样率越高,错过的数据会越多,波形失真也会越严重,如果想要不失真的话可以试试ADC+DMA采集方式。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2020-4-7
在线时间
309 小时
发表于 2020-5-7 12:12:59 | 显示全部楼层
你设置的采样率是ADC软件转换的速率,虽然你加快了ADC的转换速率,但是你主程序需要将一个ADC数据通过串口发送出去后才会去读取下一个数据,主程序里面的发送是需要时间的,ADC速率慢的时候或许发送还来得及,但是如果你把采样率提高了,数据发送就会影响你去读数据,这也就会错过一些数据,采样率越高,错过的数据会越多,波形失真也会越严重,如果想要不失真的话可以试试ADC+DMA采集方式。
回复

使用道具 举报

0

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2019-7-11
在线时间
1 小时
发表于 2020-5-7 12:13:01 | 显示全部楼层
帮顶!!!!!!
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-4-30
在线时间
4 小时
 楼主| 发表于 2020-5-7 12:18:15 | 显示全部楼层
第一张图片和第二张图片反了  采样周期为239.5的那个看着波形更好一些
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2020-5-7 21:26:13 | 显示全部楼层
建议你dma采集  串口全速发就好了  最好定时器触发dma采样 串口全速发
回复

使用道具 举报

7

主题

105

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2016-1-28
在线时间
135 小时
发表于 2020-5-8 12:59:28 | 显示全部楼层
用定时器触发,这样采样周期可人为设定。如果采集1KHZ,每个周期采50个点的话,你就把定时器设为50KHZ 20us触发一次,就行了。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-4-30
在线时间
4 小时
 楼主| 发表于 2020-5-8 16:02:52 | 显示全部楼层
qjp1988113 发表于 2020-5-8 12:59
用定时器触发,这样采样周期可人为设定。如果采集1KHZ,每个周期采50个点的话,你就把定时器设为50KHZ 20us ...

好的谢谢  我试试
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-4-30
在线时间
4 小时
 楼主| 发表于 2020-5-8 16:53:42 | 显示全部楼层
lv浅陌 发表于 2020-5-7 21:00
你设置的采样率是ADC软件转换的速率,虽然你加快了ADC的转换速率,但是你主程序需要将一个ADC数据通过串口 ...

嗯嗯  我试下   谢谢
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-4-30
在线时间
4 小时
 楼主| 发表于 2020-5-8 16:54:04 | 显示全部楼层
nashui_sx 发表于 2020-5-7 21:26
建议你dma采集  串口全速发就好了  最好定时器触发dma采样 串口全速发

OK我明白了  谢谢
回复

使用道具 举报

2

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
470
金钱
470
注册时间
2017-12-20
在线时间
61 小时
发表于 2020-5-8 16:56:31 | 显示全部楼层
lv浅陌 发表于 2020-5-7 21:00
你设置的采样率是ADC软件转换的速率,虽然你加快了ADC的转换速率,但是你主程序需要将一个ADC数据通过串口 ...

+1同意你的说法
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 07:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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