完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
昨天学弟帮我写好了采集程序,是基于STM32F4的,使用其ADC直接采样,采样2048个点并实施存入数组,随后写入SD卡中。
虽然我们的matlab程序正常跑起来了,但是文件存储的部分仍然有点小问题,因为12bit ADC采样获得的最大数值是4096,学弟的程序在存储这些数字进SD卡TXT文档的时候出现了一点小bug,那就是如果非4位数,在该行数字最后会出现几个空格,把不满4位数的补上。如果直接使用matlab打开,会直接报错,但是我打开了文档,随便删掉一个空格随后保存,程序就可以正常运行了。。实在是非常古怪。 但是毕竟能用就行,我们也就没有过多追究,因为这只是一个测试平台,之后我们还会拿到FPGA平台上去运行,到时候出现bug我们可以继续解决。 存储数据的文件放在了实验室的同步文件服务器上,没有带回来,不过大家应该知道,就跟我们之前模拟出来的那个txt文件格式一致的。 下面上实验数据。 这是第一次采集获得的结果,因为一开始的程序中,ADC采集函数里写了个delay进去,所以采样率变得很低,学弟说数值变化的很奇怪,所以他就把信号源产生的频率开的很低了,调整到了10Hz,至于采样率,我也忘记了,貌似是200Hz,我们是用了一个引脚,每一次采集ADC数据就将该引脚电平翻转,随后再用示波器测量其信号频率,乘以2以后就是采样率了。 在其单边幅度谱中,可以看到主peak是位于10Hz位置的,符合预期。但是可以观察到信号边缘有毛刺,这其实是因为我们没有将ADC采样触发放到定时器中运行,而是仅仅使用delay函数来控制它的采样间隔,因此如果出现时间突然加快或者变慢,就会出现相位抖动,导致FFT时,频谱会出现轻微偏移。 上图是第二次采集获得的数据,我们将ADC采集函数中的延时删除了,测得的采样率大约为2 x 32.8kSps左右,将这个数值输入matlab中,可以正确的做出FFT,输入信号为1kHz,可以观察到在1kHz位置有一峰,即为我们所需信号的频谱。 当我们将信号源的频率开到30kHz,也就是接近于1/2 Fs的时候,可以发现虽然信号处于第一奈奎斯特区域内,但是ADC采集的值无法直接用于FFT,需要先恢复出原始信号才可进行后续处理。 以上desu。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 20:19 , Processed in 0.819023 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号