1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Stm32F4x采用外部触发法测矩形波频率和占空比

Stm32F4x采用外部触发法测矩形波频率和占空比

时间:2022-09-19 00:05:53

相关推荐

Stm32F4x采用外部触发法测矩形波频率和占空比

摘要:采用外部触发法测矩形波频率和占空比,结合线性补偿,各频段矩形波测量误差均在0.01%以下。

关键词:外部时钟输入、外部触发使能、从模式、门控模式

一、 方案总体介绍

本方案未采用外部中断测频和定时器输入捕获测占空比,原因是在测高频时,中断频率过高,CPU频繁响应中断,导致测量精度严重下降。故采用以下方案:

频率测量方案:用定时器TIM3定时1秒,定时器TIM2设置为外部时钟输入(将要测量的矩形波作为时钟输入)。1秒后,取出TIM2计数器的值,即是所要测量的矩形波的频率。由于存在系统误差,进行多次测量,用Matlab拟合曲线,进行线性补偿。

占空比测量方案:为节省外设资源,对定时器TIM2进行分时复用,即在测频完成后,更改定时器设置,再进行测量占空比。用定时器TIM3定时1秒,定时器TIM2设置从模式、门控模式(高电平定时器时钟使能),触发源为外部触发。1秒后,取出TIM2计数器的值,进行时间计算,得出1秒内高电平的时间,进而计算出占空比。之后同样进行线性补偿。

二、 方案具体实施

主函数编写。

在timer.h进行函数声明。

TIM3初始化,开启中断。

TIM3的中断子函数编写。

TIM2初始化函数编写,将I/O设置为复用功能。

TIM2模式选择函数编写,进行模式切换时注意将外设TIM2重设为省缺值,否则定时器会自动重装之前的ARR和PSC值,将无法进行模式切换。

三、 Matlab线性拟合曲线

1、 频率误差曲线拟合 收集测量值。

第一行为函数信号发生器显示频率,第二行为实际测量值,第三行为误差值。将数据导入Matlab进行数值分析,拟合曲线。

以实际测量值为X,频率误差值为Y,采用多项式拟合,得到X-Y关系式。 占空比误差曲线拟合 收集测量值。

第一行为函数信号发生器显示频率,第二行为定时器计数值,第三行为函数信号发生器显示占空比折算时间值,第四行为误差。将数据导入Matlab进行数值分析,拟合曲线。

由于发现占空比测量误差主要与输入频率有关,所以只进行频率和误差二维关系曲线的拟合,不再进行频率、占空比和误差三维曲线的拟合。图中实际测量的频率值为X(已经过频率线性补偿的值),占空比测量误差为Y,采用多项式拟合,得到X-Y关系式。

四、 运行结果展示

实测频率误差为0.0006%,占空比误差0.064%。(若进行更好的曲线拟合,测量误差更小);低频时不再进行展示,频率和占空比测量误差更小。在误差允许范围内,可测量40M的矩形波的频率和占空比。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。