[应用相关] 如何利用timer对一个频率变化范围比较广的中低频脉冲信号进行精确脉冲长度/周期/频率测定

[复制链接]
3004|24
 楼主| powerantone 发表于 2024-5-29 15:13 | 显示全部楼层 |阅读模式

各位好,

如题,一个变周期脉冲信号A,周期从数秒(甚至数十秒)到不到1ms变化(几十k),希望能测量该信号的精确脉冲长度/周期/频率

我原来想法是通过timer对sysclk进行计数,然后A来触发计数值保存(呃,不知道这个叫哪个模式),后来发现不行,16bit的计数,计数频率低了吧,信号周期短的时候不行,误差太大,计数频率高了吧,周期数秒就溢出了。。。

想来想去都没有办法做的结果值的绝对误差相同

有点头疼不知道怎么做才好,请教大家指点,先谢谢
一只眠羊 发表于 2024-6-14 14:33 | 显示全部楼层
您可以使用STM32的定时器(Timer)来测量中低频脉冲信号的精确脉冲长度、周期和频率。
在曼谷的春 发表于 2024-6-14 17:00 | 显示全部楼层
选择一个合适的定时器,比如TIM2、TIM3等,这些定时器通常具有较高的分辨率和灵活的配置选项。
月亮一键变蓝 发表于 2024-6-14 19:00 | 显示全部楼层
配置定时器为输入捕获模式(Input Capture Mode),以便捕获脉冲信号的上升沿和下降沿。您可以使用定时器的通道来捕获脉冲信号的边沿。
她已醉 发表于 2024-6-14 21:00 | 显示全部楼层
配置定时器的时钟源和预分频器,以确保定时器的计数频率足够高,以便精确测量中低频脉冲信号。
未说出口的像你 发表于 2024-6-14 23:00 | 显示全部楼层
当脉冲信号到来时,定时器将捕获脉冲信号的上升沿和下降沿的计数值。您可以通过读取捕获寄存器的值来获取脉冲信号的脉冲长度和周期。
我吃小朋友 发表于 2024-6-15 02:00 | 显示全部楼层
通过测量脉冲信号的周期,您可以计算出脉冲信号的频率。频率等于1/周期。
失物招領 发表于 2024-6-15 04:00 | 显示全部楼层
精确测量:由于定时器通常具有较高的分辨率,您可以通过对捕获值进行精确的计算和处理,来实现对中低频脉冲信号的精确测量。
将爱藏于深海 发表于 2024-6-15 10:00 | 显示全部楼层
您可以利用STM32的定时器来实现对中低频脉冲信号的精确脉冲长度、周期和频率的测量。在实际应用中,您可能需要根据具体的脉冲信号特性和测量要求进行定时器的配置和数据处理。
春日负喧 发表于 2024-6-15 14:00 | 显示全部楼层
感觉就是逻辑的事儿吧,你说的这种应该能实现
温室雏菊 发表于 2024-6-15 16:00 | 显示全部楼层
你试试外部中断获取脉冲信号呢?
EmmaTT 发表于 2024-6-18 21:50 | 显示全部楼层
这个用输入捕获就可以吧
t60yz 发表于 2024-6-30 20:16 | 显示全部楼层
通过timer对sysclk进行计数不太行
而服务器人 发表于 2024-7-26 15:41 | 显示全部楼层
可以使用定时器的通道来捕获脉冲信号的边沿。
公羊子丹 发表于 2025-2-9 09:11 | 显示全部楼层
你可以试试使用两个定时器,一个负责高频短周期信号的测量,另一个以较低频率测量长周期信号。
周半梅 发表于 2025-2-9 09:12 | 显示全部楼层
STM32的高级定时器支持32位模式,你选的16位定时器可能限制了测量范围,换成32位看看效果?
帛灿灿 发表于 2025-2-9 09:13 | 显示全部楼层
如果信号频率变化范围特别大,可以考虑动态调整定时器的预分频系数来适应不同频率。
童雨竹 发表于 2025-2-9 09:14 | 显示全部楼层
直接用捕获比较模式(Input Capture),这样每次脉冲到来时直接捕获计数器值,避免了溢出问题。
万图 发表于 2025-2-9 09:15 | 显示全部楼层
我觉得你可以用中断模式,遇到长周期信号时降低时钟频率,短周期时再调高。
Wordsworth 发表于 2025-2-9 09:16 | 显示全部楼层
有没有考虑用DMA来自动记录捕获的计数值,这样可以减少CPU干预?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

679

主题

4005

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部