STM32-2FSK解调 一种简单的C语言包络提取方法

这篇具有很好参考价值的文章主要介绍了STM32-2FSK解调 一种简单的C语言包络提取方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果如图,其中方波为基带信号,原始信号为2FSK经过一路带通滤波器后的理想输出结果。

程序对原始信号的绝对值信号进行包络提取。可以看到提取出的包络信号与方波信号相差无几。

c语言包络线,c语言,开发语言,stm32,单片机,嵌入式硬件

 代码如下:

//信号条件:10khz为码元"1"的载波,所以设置基带信号频率为2400B/S<2500B/S=10K/4
//因为10K/2400=4.1666,取越5个载波周期对应一个码元
//假设v为一个电容的电压
//因为我的ADC采样频率为140KHz,所以每个载波周期对应14个ADC值,因此v的最大值取14+1即可,最大值不应大于14x5=70。
#define V_MAX 15
u8 v=0,j=0;
u8 i=50000;
while (j<=i)
{
    if (ABS[1,j]>0.5)//假设绝对值信号最大值为1,当前值大于最大值的一半
        v=V_MAX ;//电容充能至最大值
    else
        {
        if((v-1)>0)//防止减成负数
            v=v-1;//相当于电容电压衰减
        else
            v=0;//电容能量衰减完后电压持续为0
        }

    if (v>V_MAX/2 )//电压大于阈值
        old_res[1,j]=1;//为逻辑真
    else
        old_res[1,j]=0;//为逻辑假

    j=j+1;
}

可以看出阈值的设置相当重要,建议对输入的信号求平均值,以平均值作为阈值进行后续处理。

V_MAX的选取:

V_MAX=15:

c语言包络线,c语言,开发语言,stm32,单片机,嵌入式硬件

 V_MAX=100:

c语言包络线,c语言,开发语言,stm32,单片机,嵌入式硬件

稳定起见,后续建议进行斜率检测以删除突变数据,或者用MCU的定时器以基带信号频率来采样获得的包络检波信号。

 文章来源地址https://www.toymoban.com/news/detail-650314.html

 

到了这里,关于STM32-2FSK解调 一种简单的C语言包络提取方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于verilog实现2FSK调制解调器

      在某些具体情况下,如通过电话线传输信息时,由于在电话线上只能传输模拟信号,因此需要将数字信号转换为模拟信号,进而将转换后的模拟信号进行传输。数据接收端对模拟信号进行采样,量化,编码后,还原出数字信号。   在上述过程中,数据发送端将数字信号

    2024年02月02日
    浏览(29)
  • 信号处理中简单实用的方法——提取信号中的包络

    一、用希尔伯特变换计算信号的包络 在求某一信号包络时用得最多的是希尔伯特变换,但并不是希尔伯特变换适用于所有信号求包络的情况。这是因为对于包络没有一个很严格的定义,在求包络时不同的情况会有不同的要求。下面将介绍用希尔伯特变换求取信号的包络。 对

    2024年02月06日
    浏览(40)
  • FSK解调技术的FPGA实现

    本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 一、FSK信号的解调原理 FSK信号的解调也有非相干和相干两种,FSK信号可以看作是用两个频率源交替传输得到的,所以FSK的接收机由两个并联的ASK接收机组成。 (1)相干解调 相干解

    2024年02月09日
    浏览(38)
  • 基于FPGA的FSK调制解调系统verilog开发

    目录 1.算法仿真效果 2.verilog核心程序 3.算法涉及理论知识概要 4.完整verilog VIVADO2019.2仿真结果如下:       频移键控是利用载波的频率变化来传递数字信息。数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,

    2024年02月05日
    浏览(46)
  • 信号数据的‘包络谱’提取 及Matlab实现代码

    目录 1、使用 hilbert 函数提取包络。  2、使用envelope函数直接生成信号包络并修改其计算方式。         创建双边带幅值调制信号,以此信号作为讲解样本。载波频率为 1 kHz。调制频率为 50 Hz。调制深度为 100%。采样率为 10 kHz。         包络是由  hilbert  计算的解析

    2024年02月16日
    浏览(45)
  • 一种解决STM32多串口同时收发的方法

    在做项目中,遇到了同时调用串口通信时程序崩溃的问题,在项目中,串口1用作调试串口,串口2用作MQTT通信串口,串口3用作下位机通信串口, 串口1重定向以后,用库函数自带的printf函数打印字符串 串口2使用自己写的u2_printf函数,即va_list这套变参宏定义后使用vsprintf函数

    2023年04月21日
    浏览(26)
  • STM32 RS485通信的一种办法

    一、RS485        485通信,通信接口的远程重数据采集方法,在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线标准。RS-485采用平衡发送和差分接受,因此具有抑制共模干扰的能力。 它的电气特性是逻辑“1”以两线间电压差+(2-6)V表示;逻辑“0”以两线间电压差

    2024年02月11日
    浏览(33)
  • ZYNQ上的简单 FSK 基带发射器

    由于某种需求需要生成正弦波,因此使用 C 应用程序中的sin()函数来计算单位圆的幅度值,然后将该幅度值转换为 AD9717 的适当 DAC 代码(当然将每个角度值转换为弧度)。 能够使用DAC生成简单的正弦波,下一个想法就是在 SDR(软件定义无线电)中使用频率调制。 大多数 SD

    2024年02月09日
    浏览(22)
  • 嵌入式_一种非常简单实用的基于GD32的裸机程序框架

    搜索了一下关于GD或ST裸机程序的问题,网上有非常多也非常的例子,但是针对裸机开发的程序框架却比较少,这里简单整理了一下在项目中使用过的一种比较小巧便携的裸机程序框架(确切点说算不上框架,只能说一种写法)。 之前常见的裸机程序框架就是流水账框架,比

    2024年02月13日
    浏览(29)
  • STM32——定位模块ATGM336H,数据解析,提取经纬度

    ATGM336H定位模块支持GPS系统,BDS(北斗)系统,GLONASS(俄罗斯)系统,伽利略卫星导航系统(欧盟)。这个模块要拿到室外才能接收到信号,且初次初始化或者隔太久时间没有启用会导致获取定位信息的时间很长。 可以使用中科微电子提供的集成软件设置模块,可以设置串口

    2023年04月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包