STM32实现扫频功能

您所在的位置:网站首页 信号发生器counter的作用 STM32实现扫频功能

STM32实现扫频功能

2023-12-31 03:35| 来源: 网络整理| 查看: 265

简介

我们都知道,在信号发生器中,有一个扫频模式:指信号发生器在指定的扫描时间内从起始频率到终止频率变化输出,扫频模式支持线性扫频、对数扫频、和步进扫频三种方式。

起始频率和终止频率

起始频率和终止频率是频率扫描的频率上限和下限。信号发生器总是从起始频率扫频到终止频率,然后又回到起始频率。  当起始频率< 终止频率,信号发生器从低频向高频扫描。  当起始频率> 终止频率,信号发生器从高频向低频扫描。  当起始频率= 终止频率,信号发生器以固定频率输出。

修改“起始频率”或“终止频率”后,信号发生器将重新从指定的“起始频率”开始扫频输出。

扫频类型

扫频类型分为线性、对数、步进三种扫频类型。默认为线性扫频。

线性扫频

在线性扫频模式下,输出信号的频率以线性的方式变化,即每秒若干赫兹的方式改变输出频率,该变化由起始频率、终止频率和扫描时间控制。 在这里插入图片描述

对数扫频

在对数扫频方式下,仪器输出信号的频率以对数方式变化,即每秒倍频程或每秒十倍的方式改变输出频率,该变化由起始频率、终止频率、和扫描时间控制。

启用对数扫频时,用户可以设置以下几个参数:起始频率Fstart,终止频率Fstop和扫描时间 Tsweep。对数扫频的函数原型为: 在这里插入图片描述 Fcuurent 为当前输出的瞬时频率,参数P和T可用以上参数表示如下, 在这里插入图片描述 其中,t 为扫频开始所经历的时间,范围在 0 到 Tsweep之间。

在这里插入图片描述

步进扫频

在步进扫频方式下,仪器输出信号的频率从“起始频率”到“终止频率”之间以阶梯式“步进”,输出信号在每个频点上停留的时间长短由“扫描时间”和“步进数”控制。

在下图中,我们可以看到一条阶梯波,表明输出频率以阶梯式“步进”变化。 在这里插入图片描述

扫描时间

扫描时间默认为1S。范围可以设置1ms 到 500S。修改扫描时间后,信号发生器将重新从指定的“起始频率”开始扫频输出。

这个扫瞄时间与信号本身的频率并不冲突,如起始频率设置为10HZ(100ms),终止频率设置为1KHZ。扫描时间设置100ms。这个时候扫频时间影响的是各个频率点驻留的时间,如果扫瞄时间设置较大,频率变化就较小,如果扫描时间设置较小,频率变化就较大。

算法: 线性扫频 // 假设 扫频率 为: sampleRate 即为总时间内,频率需要变化多少次。 //扫频时间 this->totaltime = this->timeValue; // 时间以秒为单位,直接使用 //需要输出频率变化总数 this->totalsamples = (int) (this->totaltime * this->sampleRate); // 样品总数 //获得差值 double diff = endFreq - startFreq; //输出频率 double omega; //每个频率点的频率值 for(double i=0;i static uint8_t s_state = 0; static uint32_t s_outFrequency = 0; static uint32_t s_timeCnt = 0; //差值频率 double diff = tMasterBoardData.Flash_StopFreq - tMasterBoardData.Flash_StartFreq; // u8 i = 0; if (RESET != TIM_GetITStatus(OS_TASK_TIM,TIM_IT_Update))//检查TIM3更新中断发生与否 { TIM_ClearITPendingBit(OS_TASK_TIM,TIM_IT_Update); /* 全局运行时间每1ms增1 */ g_iRunTime++; if (g_iRunTime == 0x7FFFFFFF) /* 这个变量是 int32_t 类型,最大数为 0x7FFFFFFF */ { g_iRunTime = 0; } switch (s_state) { /* 递增环节 */ case 0: //频率改变,占空比不变 if(tMasterBoardData.Flash_SweepMode & (1 s_outFrequency = tMasterBoardData.Flash_StartFreq + diff * g_iRunTime / tMasterBoardData.Flash_RiseTime; tMasterBoardData.ActualFrequenct = s_outFrequency; Set_TIM_PWM_Update(TIM1,4,tMasterBoardData.ActualFrequenct,tMasterBoardData.Flash_StartDuty*100); } else { g_iRunTime = 0; s_state = 1; } } break; /* 保持环节 */ case 1: if(tMasterBoardData.Flash_SweepMode & (1 s_outFrequency = tMasterBoardData.Flash_StopFreq; tMasterBoardData.ActualFrequenct = s_outFrequency; Set_TIM_PWM_Update(TIM1,4,tMasterBoardData.ActualFrequenct,tMasterBoardData.Flash_StartDuty*100); } else { g_iRunTime = 0; s_state = 2; } } break; /* 递减环节 */ case 2: if(tMasterBoardData.Flash_SweepMode & (1 s_outFrequency = tMasterBoardData.Flash_StopFreq - diff * g_iRunTime / tMasterBoardData.Flash_FallTime; tMasterBoardData.ActualFrequenct = s_outFrequency; Set_TIM_PWM_Update(TIM1,4,tMasterBoardData.ActualFrequenct,tMasterBoardData.Flash_StartDuty*100); } else { g_iRunTime = 0; s_state = 0; } } break; default: break; } } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3