STM32精确测频率
STM32精确测频率
在STM32上实现精确频率测量,常用的方法是利用定时器的输入捕获模式或外部中断配合定时器计数。以下是两种方法的详细说明和实现步骤:
方法1:输入捕获模式(推荐)
利用定时器的捕获/比较通道,在信号边沿触发时记录定时器计数值,通过计算两次捕获的差值得到信号周期,从而计算频率。
实现步骤:
-
配置定时器基础参数:
- 选择定时器(如TIM2、TIM3等)。
- 设置预分频器(PSC)和自动重装载值(ARR),使定时器工作在较高频率(例如72 MHz)。
- 计数模式:向上计数(Up-counting)。
-
配置输入捕获通道:
- 选择输入通道(如TIM_Channel_1)。
- 设置捕获极性(上升沿/下降沿/双边沿)。
- 配置输入滤波器(减少噪声干扰)。
- 启用捕获中断。
-
处理捕获中断:
- 在中断中记录两次捕获的计数值(
TIMx->CCR1)。 - 计算两次捕获的差值(需处理定时器溢出)。
- 在中断中记录两次捕获的计数值(
-
计算频率:
- 频率公式:
[ f{\text{信号}} = \frac{f{\text{定时器}}}{( \text{差值} \times (\text{PSC} + 1) )} ] - ( f_{\text{定时器}} ):定时器时钟源频率(如72 MHz)。
- 频率公式:
示例代码(STM32 HAL库)
// 全局变量
uint32_t last_capture = 0;
uint32_t period = 0;
float frequency_hz = 0.0;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
uint32_t current_capture = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
// 第一次捕获:仅记录值
if (last_capture == 0) {
last_capture = current_capture;
}
// 后续捕获:计算周期
else {
if (current_capture > last_capture) {
period = current_capture - last_capture;
} else {
period = (0xFFFF - last_capture) + current_capture; // 处理溢出
}
last_capture = current_capture;
// 计算频率(假设定时器时钟72MHz,预分频PSC=0)
frequency_hz = 72000000.0f / (period * 1); // 实际需计入(PSC+1)
}
}
}
方法2:外部中断 + 定时器计数
适用于低频信号(<1 kHz),通过外部中断记录边沿次数,配合定时器计时计算频率。
实现步骤:
-
配置外部中断:
- 设置GPIO为输入模式(对应信号引脚)。
- 配置外部中断(上升沿/下降沿触发)。
-
配置定时器计时:
- 定时器设为1秒中断(或其他固定时间)。
- 在中断中读取外部中断的触发次数(即信号边沿数)。
-
计算频率:
- 频率公式:
[ f_{\text{信号}} = \frac{\text{边沿次数}}{\text{计时时间}} ]
- 频率公式:
示例代码(HAL库)
// 全局变量
volatile uint32_t edge_count = 0;
float frequency_hz = 0.0;
// 外部中断回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
if (GPIO_Pin == GPIO_PIN_0) { // 假设信号接在PA0
edge_count++;
}
}
// 定时器中断回调(1秒触发)
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
frequency_hz = (float)edge_count / 1.0f; // 计时1秒
edge_count = 0; // 重置计数
}
精度优化技巧
-
提高定时器分辨率:
- 减小预分频(PSC),提高定时器计数频率。
- 使用32位定时器(如TIM2/TIM5)避免溢出。
-
减小中断延迟:
- 优化中断服务函数(快速执行)。
- 使用DMA传输捕获数据(减少CPU干预)。
-
噪声抑制:
- 启用输入捕获的数字滤波器(例如设置
ICFilter = 0x0F)。 - 硬件上增加RC滤波电路。
- 启用输入捕获的数字滤波器(例如设置
-
频率范围适配:
- 高频信号:输入捕获模式(精度高)。
- 低频信号:外部中断+定时器(避免定时器溢出)。
关键注意事项
- 定时器时钟配置:确保定时器时钟源正确(如内部时钟
TIM_CLOCKSOURCE_INTERNAL)。 - 中断优先级:输入捕获中断优先级应高于其他中断。
- 信号幅度:输入信号需满足STM32 GPIO的电平要求(3.3V TTL)。
通过上述方法,可实现从几Hz到数十MHz范围的精确频率测量。实际应用中需根据信号特性选择合适方案,并结合硬件设计优化精度。
stm32最高工作频率是多少
工作频率。 首先,我们需要了解STM32的基本架构。STM32采用了一种高度模块化的设计,主要包括三个部分:处理器核心、存储器和外设。处理器核心
2024-01-03 15:54:23
STM32H7时钟I/O响应频率和定时器最高频率的测试方法
针对常规STM32系列性能测试所引起的准确度低、可靠性差、操作困难等问题,文中提出了一种关于I/O响应频率以及定时器最高频率的极限性能测试方法。
2023-10-24 14:51:18
STM32中精确延时函数的实现
在与传感器或者模块的总线进行通信的时候,常常需要使用到精确延时,一般我们会封装几个常用延时函数,下面我们以STM32F103芯片为例,详细介绍一下STM32
资料下载
杨海清
2021-11-24 18:51:02
32.768Hz频率晶振与精确计时资料下载
电子发烧友网为你提供32.768Hz频率晶振与精确计时资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
资料下载
佚名
2021-04-21 08:49:37
介绍一下STM32下一种精确延时函数的实现
在与传感器或者模块的总线进行通信的时候,常常需要使用到精确延时,一般我们会封装几个常用延时函数,下面我们以STM32F103芯片为例,详细介绍一下STM32
STM32精确延时方式记录学习历程
STM32精确延时方式使用TIM定时器方式延时使用空代码方式延时F103系列F429系列本文纯属记录自己学习历程,如有不妥之处,欢迎指正。使用TIM定时器方式延时使用
stm32使用基本定时器实现精确延时
在stm32中,系统滴答定时器可以实现精确的延时,但有时需要使用基本定时器实现精确延时,保证接下来采取的方法是全网最简单的方法。使用的平台是野火
基于STM32的频率计(采用输入捕获的方式)精选资料分享
参考博客:STM32 HAL库STM32脉冲宽度和周期测量感谢大佬!!!前言之前拿外部中断做了一个频率计,范围到了1MHz,但是
stm32 24l01按键 改 发射频率
stm32 24l01按键如何改发射频率?STM32开发nrf24L01的是开发代码的时候基本比较常见的做主机时初始化相关流程几个开发板的源代码
2021-07-23 09:39:07
如何精确的测量正弦频率的频率?
你好,我需要精确测量正弦频率的频率,容限为0.01赫兹。主振荡器被设置为24MHz的外部晶体(低ppm和温度ToIP COEF)。除了网站上提供
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机