STM32系列芯片可以直接通过输入捕获正弦波来计算正弦波的频率吗?

wqq995 2018-08-18 05:30:06
STM32系列芯片可以直接通过输入捕获正弦波来计算正弦波的频率吗?还是说需要转化为方波才可以?我的程序可以捕获到方波并得出频率,但是捕获正弦波却不行,由于这个正弦波是通过谐振得来峰峰值只有1.7V左右,不知道是不是幅值小的原因还是芯片本来就不可以直接捕获正弦波的原因,特来求助。
...全文
2153 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqq995 2018-08-28
  • 打赏
  • 举报
回复
谢谢各位!问题我已经解决了,虽然测得频率不是非常准。对于前辈们说的FFT,因为我没用过FFT,不知道该怎么搞,所以这几天一直想通过其它方式来达到目的,最近才想用施密特触发器或者电压比较器来做,后来我发现我用的STM32F072CBT6这个芯片本身就自带比较器,所以我就尝试用比较器来转换成方波再来测频率,发现可行。之前一直不知道原来STM32芯片还有的自带比较器的,之前一直接触的是F1,F4,现在才知道F05,F07,F09这些系列的芯片自带比较器。
电子小余 2018-08-23
  • 打赏
  • 举报
回复
引用 13 楼 wqq995的回复:
我试一下,不知道是我配置的AD是不是有问题,0V和3.3V的电压可以准确采样输出,但是0V-3.3V之间的电压就一直输出0.1V-0.2V之间的电压值,用AD来采样正弦波的时候采到的数据一直是:我也不知道哪里出了问题
信号频率多少,采样率多少? 其实你可以使用MATLAB仿真一下,确定好合适的采样率,这样可以确定你的代码是不是有问题
电子小余 2018-08-23
  • 打赏
  • 举报
回复
如果只是测频率,可以考虑使用adc采集信号,然后fft计算出频率。
  • 打赏
  • 举报
回复
他这图方波频率3.35KHz,低电平那部分占比大约1/3,理论上来说用10KHz采样就可以了。
灌水号 2018-08-20
  • 打赏
  • 举报
回复
刚才没看清楚,原来是要求底电平那些正弦啊,,这个频率太高了。应该像楼上说的, 不能在线分析。看你ADC能不能达到这么高的采样频率了。
朝闻道_v 2018-08-20
  • 打赏
  • 举报
回复
这个目测有300kHz以上了,STM32的话可用ADC模块采数据,然后离线分析,在线实时处理可能不太现实,毕竟运算能力有限。
建议UP换个示波器。
灌水号 2018-08-20
  • 打赏
  • 举报
回复
电压比较已经把电压变成0,1状态,当然能捕获。当然正弦波型的offset不能变,幅度也不能变得太明显。
使用捕获就可以啊,计算两个高电平或者低电平开始点的间隙就是周期。基本上M3,M0 系列的都有这个功能。
wqq995 2018-08-20
  • 打赏
  • 举报
回复
用·STM32系列芯片有什么办法捕获如下图所示的方波低电平时间段内的正弦波并计算出频率吗?
wqq995 2018-08-20
  • 打赏
  • 举报
回复
这个正弦波已经是经过放大的了,把这个正弦波转化为方波之后幅值应该还是小吧?还能捕获到吗?
灌水号 2018-08-20
  • 打赏
  • 举报
回复
幅值太小了。
可以外面加一个电压比较器转成方波。
wqq995 2018-08-20
  • 打赏
  • 举报
回复
配置如下:
那个clock prescaler只有同步四分频和异步模式两种选择,已开启DMA中断,一直奇怪采样不到0V-3.3V之间的电压数据
wqq995 2018-08-20
  • 打赏
  • 举报
回复
我试一下,不知道是我配置的AD是不是有问题,0V和3.3V的电压可以准确采样输出,但是0V-3.3V之间的电压就一直输出0.1V-0.2V之间的电压值,用AD来采样正弦波的时候采到的数据一直是:我也不知道哪里出了问题
灌水号 2018-08-20
  • 打赏
  • 举报
回复
用DMA应该能达到 这个速率吧。
  • 打赏
  • 举报
回复
STM32不是普遍支持1MHz以上采样吗
wqq995 2018-08-20
  • 打赏
  • 举报
回复
那个正弦波的频率大概在500K左右,用的是F0芯片,用ADC的话它的采样周期加上转化周期已经将近2us,差不多是这个正弦波的一个周期时间了,ADC应该搞不定,才接触这个STM32cubeMX,用的是HAL库,公司因为要与其它公司对接要求用这个cube来做,各位前辈有什么办法?

zhxlx 2018-08-20
  • 打赏
  • 举报
回复
底部波形的频率大概是多少,采样频率要满足奈奎斯特吧,你在用是stm32自带的dsp库,里面有fft算法,查看幅值,应该能求出大概的频率
灌水号 2018-08-20
  • 打赏
  • 举报
回复
引用 7 楼 DelphiGuy 的回复:
他这图方波频率3.35KHz,低电平那部分占比大约1/3,理论上来说用10KHz采样就可以了。
他说的是低电平那个蜜蜜麻麻的。
分享基于STM32打造的虚拟示波器,资料齐全,有兴趣可以看看,所有资料都在附件里了。 1. 分析仪功能介绍 以“低成本和高性能”为设计思想,借助虚拟仪器的概念和高速的数字信号处理算法将传统的函数发生器、示波器、数据记录仪、频率计、谱分析仪以及滤波器设计和仿真等功能高度集成、统一平台方便使用。 软件环境支持声卡、USB模块和虚拟仿真,三种模式。声卡模式,可以借助电脑的声卡来完成对音频范围内信号的分析和处理;USB模块,可以完成对带宽允许内的信号的分析和处理;其中演示模式采用软件模拟来实现所有的功能,便于教学和理论的演示。 公开软件通信协议,可以按照协议将自己的硬件加入我们的软件环境,使用所有的分析功能。 函数发生器 支持产生“正弦波”、“三角波”、“矩形波”、“上锯齿波”、“下锯齿波”、“白噪声”和“合成波形”,并提供峰值、频率、输出相位差的调整功能。 波形文件输出,可以支持“正弦波”、“三角波”、“矩形波”、“上锯齿波”、“下锯齿波”、“白噪声”和“合成波形”,提供峰值、频率、输出相位差的调整功能,支持以wav、txt、hex 和mif 文件形式的输出。 示波器/谱分析仪 可以工作在“声卡”、“USB模块”、“仿真”和“串口捕获”四种模式。支持任意多画面的同时显示,便于波形的多样分析;支持输入波形硬件和软件触发;支持输入波形的插值和等效采样;支持输入波形的“相加”、“相减”和“相乘”合成;支持对输入波形加“矩形窗”、“三角窗”、“海明窗”、“汉宁窗”和“布莱克曼窗”;支持对输入波形的滤波处理; 支持对输入波形的“李萨茹图形”、“幅频”、“相频”、“对数幅频”、“自功率谱”、“对数自功率谱”、“自相关”和“互相关”的分析。 说明:本协议中B 代表 bit,即8B=1 字节 1.重启序列 改序列用于整个下位机的重启,收到该序列后,需重新握手,其过程如下: PC ---------->0xff,0xff,0xff,0xff,0xff,0x11,0x22,0x33,0x44,0x55 0xff,0xff,0xff,0xff,0xff,0x11,0x22,0x33,0x44,0x55<-------------CE 2.握手 握手用于上位机和下位机的相互识别过程。其过程如下: PC ---------->XX XX XX XX XX (5 个随机数) XX XX XX XX XX (5 个随机数) <-------------CE PC---------->XX XX XX XX XX XX XX XX XX XX (上面10 个随机数) 版本信息 <-------------CE PC----------> AA (握手成功) 55 <-------------CE 版本信息(32B): static const unsigned char banben[]= { ‘Y’,’i’,’X’,’i’,’n’,’g’,’d’,’i’,’a’,’n’,’z’,‘i’, 0, 0, 0, 0, ‘S’,’t’,’u‘,’-’,’0’ ‘.’, ‘1’, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; 3.控制 控制协议用于PC 控制下位机工作和获得一些必要的信息。包含两种格式,第一种:“PC控制特定通道”用于 PC 控制通道 ID 指定的下位机通道;第二种:“PC 控制所有通道”用于 PC 控制下位机中支持的所有通道。例如发送 0x01,0x01,0x00 表示开启通道 0x01;发送0xff,0x12,0x00 表示要求下位机的所有通道开始采集数据,并上传。 需要说明的是,假如你有两个通道,则这两个通道的ID,默认为0x01 和0x02。PC 就用这两个ID 两控制下位机响应的通道。 3.1 控制信息格式 PC 控制特定通道: 通道ID(8B) 控制码(8B) 控制信息(32B) 附加信息 PC 控制所有通道: 通道ID (0xFF) 控制码(8B) 控制信息(32B) 附加信息 3.2 控制码 开启 控制码 01 关闭 控制码 10 通道数 控制码 02 采样位数 控制码 04 采样符号 控制码 08 采集并上传数据 控制码 12 3.3 CE 应答信息格式: 通道ID(8B) 应答码(8B) 应答信息(32B) 附加信息 成功 应答码 01 失败 应答码 10 例如: 通道数 控制码 02 回复信息: 0xFF(8B) 0x01(8B) 0x00000002(32B) 通道ID:所有通道 应答码:成功 应答信息:2 个通道 采样位数 控制码 04 回复信息: 0xFF(8B) 0x01(8B

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧