昨天学弟帮我写好了采集程序,是基于STM32F4的,使用其ADC直接采样,采样2048个点并实施存入数组,随后写入SD卡中。 虽然我们的matlab程序正常跑起来了,但是文件存储的部分仍然有点小问题,因为12bit ADC采样获得的最大数值是4096,学弟的程序在存储这些数字进SD卡TXT文档的时候出现了一点小bug,那就是如果非4位数,在该行数字最后会出现几个空格,把不满4位数的补上。如果直接使用matlab打开,会直接报错,但是我打开了文档,随便删掉一个空格随后保存,程序就可以正常运行了。。实在是非常古怪。 在其单边幅度谱中,可以看到主peak是位于10Hz位置的,符合预期。但是可以观察到信号边缘有毛刺,这其实是因为我们没有将ADC采样触发放到定时器中运行,而是仅仅使用delay函数来控制它的采样间隔,因此如果出现时间突然加快或者变慢,就会出现相位抖动,导致FFT时,频谱会出现轻微偏移。 以上desu。
详情请参考这篇文章 【实验室乱记】基于stm32的采集Adc与SD卡储存
但是毕竟能用就行,我们也就没有过多追究,因为这只是一个测试平台,之后我们还会拿到FPGA平台上去运行,到时候出现bug我们可以继续解决。
存储数据的文件放在了实验室的同步文件服务器上,没有带回来,不过大家应该知道,就跟我们之前模拟出来的那个txt文件格式一致的。下面上实验数据。
这是第一次采集获得的结果,因为一开始的程序中,ADC采集函数里写了个delay进去,所以采样率变得很低,学弟说数值变化的很奇怪,所以他就把信号源产生的频率开的很低了,调整到了10Hz,至于采样率,我也忘记了,貌似是200Hz,我们是用了一个引脚,每一次采集ADC数据就将该引脚电平翻转,随后再用示波器测量其信号频率,乘以2以后就是采样率了。
上图是第二次采集获得的数据,我们将ADC采集函数中的延时删除了,测得的采样率大约为2 x 32.8kSps左右,将这个数值输入matlab中,可以正确的做出FFT,输入信号为1kHz,可以观察到在1kHz位置有一峰,即为我们所需信号的频谱。
当我们将信号源的频率开到30kHz,也就是接近于1/2 Fs的时候,可以发现虽然信号处于第一奈奎斯特区域内,但是ADC采集的值无法直接用于FFT,需要先恢复出原始信号才可进行后续处理。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算