[STM32F0]

单片机ADC采样FFT计算试验

[复制链接]
1757|13
手机看帖
扫描二维码
随时随地手机跟帖
yjmwxwx|  楼主 | 2019-6-24 12:56 | 显示全部楼层 |阅读模式
本帖最后由 yjmwxwx 于 2019-6-24 13:13 编辑

去年学了点数字信号处理,我数学一点看不懂,库也不会用,没办法当时写了个FFT的函数,想用ADC采样用FFT计算但是失败了,当时写的那个256点的溢出了,加上第一次接触这东西不会搞,最近一些日子又重新捡起来这阑尾工程,调试了几天终于成功了。

        做了简单电路,两个STM32F030F4P6,一个产生正弦波另一个ADC采样256点用FFT计算得到这个正弦波的幅度。

        0x20000000-0x20000400是实部 0x20000400-0x20000800是虚部, 取出第22个数据的实部和虚部计算出幅度用数码管显示。 由于是Q15定点数,每次保存右移了1位,结果需要乘64, 数码管显示位数有限没乘64,结果只显示了后4位没显示全。

        电路图
dianlutu.png




实物图

IMG_20190624_103643.jpg

IMG_20190624_103343.jpg


下图上把单片机数据输入到电脑上软件计算的,用来和单片机计算的比对,第22个实部是-156265.198,虚部是-157711.28

截图_2019-06-24_11-26-25.png


截图_2019-06-22_22-54-39.png


单片机计算的实部,第22个是0XFFFFF675,十进制2443乘64=156352。地址是0X20000058
实部.png

单片机计算的虚部,第22个是0XFFFFF65F十进制是2465乘64=157760。 地址是0X20000458
虚部.png



结果和电脑上的差不太多,电脑上软件可能是浮点数,我这个是Q15定点数的。




ADC采集的波形,采样率1M 。
截图_2019-06-24_12-02-01.png



示波器波形
IMG_20190624_104058.jpg

IMG_20190624_104051.jpg



SPWM单片机程序
dingshiqispwm.tar.gz (5.99 KB)

使用特权

评论回复
yjmwxwx|  楼主 | 2019-6-24 13:16 | 显示全部楼层
本帖最后由 yjmwxwx 于 2019-6-24 18:06 编辑

256点,滤波器里面右移了10位忘记修改,下面的改过来了。

软件计算的单次,数码管显示的是256次计算结果的平均 mpv-shot0002.jpg

这次对了

刚才传错了,重新传一个。
adcfft2.tar.gz (29.07 KB)

使用特权

评论回复
598330983| | 2019-6-24 19:56 | 显示全部楼层
汇编做,厉害。

使用特权

评论回复
评论
yjmwxwx 2019-6-26 10:23 回复TA
语言都一样的,只要知道怎么算就容易写了。 
lgqsyw| | 2019-6-25 20:50 | 显示全部楼层
老哥你敢不用汇编搞一个吗

使用特权

评论回复
评论
yjmwxwx 2019-6-26 10:25 回复TA
程序不复杂,就是加法和乘法,C没怎么用不熟练 
蝴蝶泉2018| | 2019-6-26 10:04 | 显示全部楼层
做实验嘛,换个F1或者F4的芯片也不贵嘛。毕竟将来稍微复杂的程序都是C语言的,还要考虑架构,操作系统等问题

使用特权

评论回复
评论
yjmwxwx 2019-6-26 10:26 回复TA
我是种地的农民搞这个就是业余爱好,没那么多钱砸,只能用便宜的片子。 
yjmwxwx|  楼主 | 2019-6-26 12:39 | 显示全部楼层


测试下时间,STM32F030F4P6 48M时钟,做256点 radix-2  Q15定点数  FFT  在计算前打开SYSTICK定时器,重载值0xffffff,计算完读出0XE000ED18数据到R1=0xfed720

截图_2019-06-26_12-34-33.png

截图_2019-06-26_12-29-41.png

不知道这个怎么算时间?

不知道官方库要多长时间?
截图_2019-06-25_07-07-37.png



使用特权

评论回复
数码小叶| | 2019-6-27 16:47 | 显示全部楼层
采样率1M,采集后大量的数据怎么处理的。。。

使用特权

评论回复
评论
数码小叶 2019-6-27 22:16 回复TA
@yjmwxwx :我还以为是一直采 
yjmwxwx 2019-6-27 20:03 回复TA
@yjmwxwx :计算完了再开DMA,再采256个 
yjmwxwx 2019-6-27 19:58 回复TA
不是一直采,就采256个 
yediezeus| | 2019-6-28 08:54 | 显示全部楼层

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

110

主题

2560

帖子

42

粉丝