简介

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

起始频率和终止频率

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

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

扫频类型

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

线性扫频

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

对数扫频

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

启用对数扫频时,用户可以设置以下几个参数:起始频率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 <= totalsamples;i++)
{t = (i / (double) this->totalsamples) * this->totaltime; // 现在的时间omega = startFreq + (diff * t / this->totaltime);
}

简化后,即为:
omega = startFreq + (diff * i / this->totalsamples);

定时1ms中断服务函数中实现:

 //TIMER3中断  1ms一次
void OS_TASK_IRQHandler(void)
{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<<0)){if(tMasterBoardData.Flash_RiseTime > g_iRunTime){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<<0)){if(tMasterBoardData.Flash_HodeTime > g_iRunTime){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<<0)){if(tMasterBoardData.Flash_FallTime > g_iRunTime){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;}}
}

STM32实现扫频功能相关推荐

  1. 基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)

    目录 一.项目功能 二.视频 三.原理图 4.材料选择 5.部分程序 资料下载地址:基于STM32的多功能门禁系统 一.项目功能 1.AS608指纹解锁:可以录入.删除.验证指纹: 2.密码解锁:可以 ...

  2. 基于STM32的多功能MP3设计 毕业设计(论文)开题报告

    中国计量学院 毕业设计(论文)开题报告 学生姓名:卢杰学 号:XXXXXXXXX 专    业:电子科学与技术 班    级:10电子1 设计(论文)题目: 基于STM32的多功能MP3设计 指导教师 ...

  3. MDK上使用 ULINK2设备上的SW调试 实现STM32 的 trace功能 (一)

    MDK上使用 ULINK2设备上的SW调试 实现STM32 的 trace功能 (一) 目标调试过程的配置加粗样式 在目标调试过程中,必须选择正确的调试驱动器,同时要包含正确的初始化文件. 配置调试驱 ...

  4. QA | 关于信号发生器的扫频功能,您了解多少?

    在上期文章中,我们介绍了可编程信号发生器使用中的相关问题,那么关于便携式信号发生器的扫频功能您是否有很多问题呢,今天我们将围绕信号源扫频功能详细解答大家感兴趣的几个问题,快来看看吧! Q1:信号源是否 ...

  5. 硬件课程设计:基于STM32的多功能播放器之小说阅读

    1 小说阅读功能 1.1 功能介绍 1.1.1 设计思路 在TFTLCD屏上显示中英文文本文件是本次硬件课程设计的基本要求,也是我设计的多功能播放器最重要的功能,要求能够读取事先存储在SD卡中的文本文 ...

  6. 硬件课程设计:基于STM32的多功能播放器之MP3音乐播放

    3 MP3音乐播放 3.1 功能介绍 3.1.1 设计思路 音乐播放是手机等电子产品最常见的功能,也是最具娱乐性的功能,在该模块中,我先从SD卡中读取已存放的MP3音乐文件,然后将读取的字节流依次送人 ...

  7. STM32定时器同步功能2

    STM32定时器同步功能2:用一个定时使能另外一个定时器 测试芯片:STM32L151C8T6 代码库:LL库 本例中,TIM3为主定时器,TIM2为从定时器,通过TIM3 的更新事件使能TIM2,T ...

  8. STM32定时器同步功能1

    STM32定时器同步功能1:将一个定时器用作另一个定时器的预分频器 测试程序说明: 测试芯片为STM32L151C8T6, 程序库使用的是LL库 用TIM3为主定时器,产生更新事件,并产生触发输出(T ...

  9. 基于STM32的多功能秒表

    基于STM32的多功能秒表 当上电运行后,按下KEY1,秒表开始正计时,再次按下KEY1秒表停止计时,按下KEY2秒表清零,按下KEY3,手动调节秒表时间递增,按下KEY4手动调节秒表时间递减,按下K ...

最新文章

  1. linux dd命令制作u盘启动_制做linux启动U盘
  2. LeetCode 1236. 网络爬虫(BFS/DFS)
  3. oracle dba_waiters中的lockid是什么,查杀oracle lock session and table
  4. css左侧投影_css单边投影与双侧投影
  5. 严蔚敏版数据结构视频讲解
  6. android模拟器可以复制文件,从PC中向Android模拟器中复制文件
  7. c语言中人脸磨皮算法,人脸磨皮算法
  8. 2012 IMF 全球人均gdp排名
  9. MNN源码阅读之模型转换
  10. 狮虎论:软件测试和软件开发到底哪个实际工资更高
  11. python-igraph创建网络(图)
  12. 人间富贵花间露,纸上功名水上沤
  13. 315来了,跨境卖家们赶紧自检容易被维权举报的问题
  14. 关于Oracle数据库如何查询非当前用户名命名空间下的表不需要写ower直接from 表名
  15. 软件评测和测试国家现行标准
  16. js 导出excel,设置下载的标题
  17. 【笔记】Create React APP 文档略读
  18. Maven环境搭建及配置
  19. 程序猿要chatpgpt干掉了?
  20. MCS-51单片机总结——No4.存储之AT24C04A

热门文章

  1. PHP+Mysql服装商城 网上服装购物商城 基于PHP服装商城的系统设计与实现(2)分类
  2. 专访DSP协议周炎:分布式存储的发展需与5G、IoT并行演进 |链捕手
  3. 国产工业CPU平台,米尔基于全志T507-H开发板的实时性分析与测试
  4. DMA IP PS侧c / python代码笔记
  5. H3CNE中DHCP自动获取
  6. SSVEP介绍|第一章 SSVEP的基础应用系统|第二节 SSVEP的信号处理过程(1)
  7. 【渝粤题库】陕西师范大学163205 旅游市场分析与预测
  8. webform计算某几列结果_1+x 证书 Web 前端开发初级实操考试(试卷5 )
  9. css布局方式,实现四宫格,九宫格,16宫格等切换
  10. halcon 区域 inner_circle smallest_circle