0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用STM32调试FMSDR模块及解调FM电台(3)

冬至子 来源:硬木课堂语雀 作者:硬木课堂语雀 2022-10-13 16:04 次阅读

3. 调试8027使其发出单音FM信号

3.1 输出24Mhz和验证I2C接口

1. 硬件连接

将FM_SDR板卡和STM32H750开发板连接。

本文中所有例子中我们都仅给MSI001使用天线,因为QN8027离得很近,发射端不需要使用天线

本程序中操作的管脚如下描述:

pYYBAGNHxSeAW6rAAABbcGtd_0s636.png

2. PWM输出24MHz

QN8027芯片需要输入24MHz的时钟作为参考信号,在这里通过STM32H750的TIMER2产生24M的方波,提供给QN8027作为输入参考信号。

PWM信号的关键参数是频率和占空比,我们分别看一下如何设定TIM2来确定输出PWM的频率和占空比:

PWM的输出频率=计数器计数频率/(计数器的计数上限+1),计数器计数频率在上图中是CK_CNT,它由时钟和触发控制模块输出的CK_PSC经过PSC分频器得到,因此我们在初始化TIM1的时候选择时钟源为CK_INT,预分频器比为1(寄存器中写入为0),这样我们的CK_CNT是240MHz;而计数器的计数上限就是自动重载寄存器APR的值,设定为9;

PWM的占空比,由比较寄存器(CCR1-4的值)和计数器计数上限(APR的值)决定,设定CCR1为4的话,PWM1的占空比即为(4+1)/(9+1)= 50%。

具体TIMER输出PWM方法介绍,可以回顾基础实验“实验六TIM1输出PWM”:

3. 硬件IIC接口配置

芯片的控制接口是I2C协议,要使芯片正常工作,首先I2C接口的操作要正常。这里利用QN8027的I2C支持可读可写,写入0x00寄存器一个值,再读出来。如果读出和写入的一致,说明I2C操作正常,芯片可以被控。这样进行后续调试才有初步把握。

需要配置STM32H750的硬件I2C,然后发出控制字操作8027芯片,确认板卡和芯片正常工作。I2C工作速度设为100K.

也可以使用GPIO模拟I2C时序,可以回顾基础实验“实验十五 矩阵键盘和数码管显示—模拟IIC”。

4. 编写代码

在main中使能PWM输出,和读写QN8027寄存器

pYYBAGNHxUOAFqP3AACEIMt-yU4204.png

添加QN8027驱动代码

pYYBAGNHxWeAEEx6AAExuj22k3k629.pngpoYBAGNHxW6AXcn9AACH0QPBQKI211.png

5. PWM测试输出

如果有条件,可以使用示波器测试QN8027_REFCLK管脚,观测有无24M的波形。

6. Qn8027读写测试

keil中用debug单步调试,先向寄存器0x00写入值0x31,再读取寄存器0x00的值,通过Watch窗口观察变量qn8027_read_byte值为0X31.说明I2C读写正确。

pYYBAGNHxYSALr8HAAD7gxpGj-8646.png

如果读出的值和写入的值一致,说明I2C时序和8027硬件都没有问题。那么我们就可以继续下一步配置。

注意,I2C时序写入这一步看上去虽然简单,却是最经常出问题的步骤。如果遇到8027没有反应,建议用如下方法排查:

电源测试:8027供电是否正常;

IO通断测试:使用IO输出高低电平,通过测量确定PCB焊接正确,且插对了孔位;

I2C时序测试:确定I2C的上拉电阻正确,使用示波器或逻辑分析仪捕获发出的I2C时序,判断是否I2C配置寄存器有错误;FPGA写的I2C程序,则要特别留意是否有代码bug。

8027如果没有应答,观察是否有虚焊等情况(开发板发货前经过测试,基本上可以排除电源和8027的焊接问题)。

3.2 将H750内部DAC输出的1KHz正弦波调制到98.5MHz

下面,我们将使用单片机的PA4管脚发出单音(正弦波),频率1KHz,峰峰值1600mVpp,直流偏置1.65V。接入FMSDR开发板的调制信号管脚DAC_L。单片机管脚PA15发出24MHz的PWM信号,提供芯片的参考时钟。通过I2C接口控制QN8027芯片。

1. 硬件连接

将FM_SDR板卡和STM32H750开发板连接。

程序中操作的管脚如下描述:

pYYBAGNHxaCAaVR5AAB0mCfwZCM482.png

2. DAC输出1kHz正弦波

STM32H750开发板输出1kHz的正弦波,通过Timer6产生25k频率的触发事件,DAC配置为外部timer6触发中断。正弦波表长度为25字长,每次timer6触发事件发送,在中断服务程序中一直循环发送波表。

也可以使用TIMER事件触发DMA输出波形方法,可以回顾基础实验“实验二十八 DAC应用定时器触发实现DMA输出波形”。

DAC驱动设计

定时器触发DAC做DMA数据传输的实现思路 实现思路框图如下:

poYBAGNHxb2ACB5OAACXG68dvhU835.png

3. QN8027设置输出频率为98.5MHZ

在qn8027.c文件中,添加如下代码,配置qn8027寄存器如下,第一行是寄存器地址,第二行是写入寄存器值。(下表对应98.5M的频点)。寄存器取值参考前面调试文档。

pYYBAGNHxdqABtsSAABFzZCbjRM737.png

I2C配置和操作在前一小节已经讲解,可以回顾前一小节查看。

4. 编写代码

在main中使能PWM输出,初始化正弦波码表,开启TIM6和DAC。初始化qn8027频率为98.5M.在TIM6_DAC_IRQHandler中断中更新DAC值。

pYYBAGNHxgeAI73jAAFYP1aBspI813.png

5. 1khz正弦波输出测试

用示波器测量DAC输出(PA4管脚),和经过滤波后波形。CH1(黄色)是DAC发出的1Khz正弦波,CH2(蓝色)是经过硬件滤波后qn8027输入管脚的波形。

poYBAGNHxheALW8KAAD-kLv8V0A545.png

测试点如下图(滤波前波形测量R45下侧,滤波后波形测量R8左右都行):

pYYBAGNHxjCAW40nAAIFcWl6kjs562.png

6. 98.5MHz FM信号测试

配置好QN8027后,1KHz的正弦波单音就被调制在98.5MHz上,用FM收音机调到98.5MHz频点上就可以听到这个1KHz的“嘟”声。 注意:如果当地98.5MHz上有电台,可以换一个空白的频点,避开已有的电台。

成品收音机的功能是已知的,用已知来调试未知,是调试的基本思路。

除了使用成品收音机来验证98.5M上FM调制的1KHz信号之外,我们也可以用m302的频谱仪来验证,因为m302的带宽有50MHz,输入的100MHz信号虽然有衰减,但是在频域上还是能看见的。

这里涉及到欠采样理论。欠采样理论不在这里讲解,以图示来说明。

poYBAGNHxlyAUIUyAABDDxjAhGU937.png

以98M的频点为例,用100M采样。信号是周期连续波,采样脉冲是δ函数。采样过程就相当于时域相乘,对应频域卷积。就是把信号的正负频谱进行搬移。图中画出0附近的几个搬移,-200M,-100M,0,100M,200M。为了看清楚,每对之间的高度画的不一样,便于区分。可以看到,在100M位置的搬移上,-98M落在2M位置。

同样的,如果以10M采样率采样,经过多个奈奎斯特域的翻折,98M的信号也会落到2M位置上。

我们将AIN1连接到FM输出端口,开启FFT功能:

pYYBAGNHxm6AAaIQAABpypxxpQA508.png

选择5M带宽(采样率10MSPS),可以看到混叠到1.5MHz的FM信号和4MHz上的时钟信号。如下图。

poYBAGNHxoCAJ_5fAAHshU01Lc4447.png

从实验过程可以看到,欠采样会出现频谱翻折,谐波翻折,混频翻折,会有多个频谱线。所以实际中如果要利用欠采样来采样高频信号,需要添加滤波器。这里只是利用了欠采样来查看QN8027是否发出了设置的频点。

使用成品收音机或者使用频谱仪,确认QN8027发出正确的单音FM信号后,我们就可以使用这个“已知的单音FM信号”来调试MSi001了。单音比直接收电台的音频更简单直观的看到MSi001的采集、解调和滤波各个步骤的波形,并和已知正确波形进行对比。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5121

    浏览量

    213239
  • I2C接口
    +关注

    关注

    1

    文章

    124

    浏览量

    25108
  • QN8027
    +关注

    关注

    2

    文章

    3

    浏览量

    1842
  • STM32H750
    +关注

    关注

    1

    文章

    16

    浏览量

    1721
收藏 人收藏

    评论

    相关推荐

    使用STM32调试FMSDR模块解调FM电台(1)

    示波器:本实验我们使用硬木课堂的口袋仪器产品进行测量
    的头像 发表于 10-13 15:52 2682次阅读
    使用<b class='flag-5'>STM32</b><b class='flag-5'>调试</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模块</b>及<b class='flag-5'>解调</b><b class='flag-5'>FM</b><b class='flag-5'>电台</b>(1)

    教你最简单做一个随身FM电台!X各种使用方法#电台

    电台FM
    Dimsmary
    发布于 :2022年07月12日 14:29:14

    FM解调器电路

    几种FM解调器电路
    发表于 04-21 11:49 1919次阅读
    <b class='flag-5'>FM</b><b class='flag-5'>解调</b>器电路

    哈尔滨文艺电台fm频道列表

    哈尔滨文艺电台fm频道列表 [FM]CH01=09980,黑龙江交通广播CH02=10450,黑龙江生活广播 CH03=09250,哈尔滨经济电台 CH04=10210,黑龙江妇女儿
    发表于 05-15 23:12 3766次阅读

    FM解调器A电路

    FM解调器A电路
    发表于 03-21 19:00 834次阅读
    <b class='flag-5'>FM</b><b class='flag-5'>解调</b>器A电路

    线性FM解调器电路

    线性FM解调器电路
    发表于 03-21 19:14 986次阅读
    线性<b class='flag-5'>FM</b><b class='flag-5'>解调</b>器电路

    FM解调电路图

    FM解调电路图
    发表于 07-15 16:47 1100次阅读
    <b class='flag-5'>FM</b><b class='flag-5'>解调</b>电路图

    FM解调

    FM解调器 LM311
    发表于 09-15 10:28 1505次阅读
    <b class='flag-5'>FM</b><b class='flag-5'>解调</b>器

    455KHz FM解调

    455KHz FM解调
    发表于 09-15 11:04 1145次阅读
    455KHz <b class='flag-5'>FM</b><b class='flag-5'>解调</b>器

    FM调制/解调电路的设计方案分析

    ,我们得到的载波信号的电压大于3V,最大频率偏移5KHz,解调电路输出的FM调制信号的电压大于200mV可以看出我们的具体设计符合设计指标。 关键词:锁相环、调制、解调、滤波器 一、概
    发表于 10-27 17:04 55次下载
    <b class='flag-5'>FM</b>调制/<b class='flag-5'>解调</b>电路的设计方案分析

    使用STM32调试FMSDR模块解调FM电台(2)

    当我们使用FPGA或者STM32模块配合FMSDR模块使用的时候,需要从零开始调试这个电路,逐步完成:硬件好坏判断、8027和MSI001寄
    的头像 发表于 10-13 15:56 3747次阅读
    使用<b class='flag-5'>STM32</b><b class='flag-5'>调试</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模块</b>及<b class='flag-5'>解调</b><b class='flag-5'>FM</b><b class='flag-5'>电台</b>(2)

    使用STM32调试FMSDR模块解调FM电台(1)

    当我们使用FPGA或者STM32模块配合FMSDR模块使用的时候,需要从零开始调试这个电路,逐步完成:硬件好坏判断、8027和MSI001寄
    的头像 发表于 07-06 10:50 1833次阅读
    使用<b class='flag-5'>STM32</b><b class='flag-5'>调试</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模块</b>及<b class='flag-5'>解调</b><b class='flag-5'>FM</b><b class='flag-5'>电台</b>(1)

    使用STM32调试FMSDR模块解调FM电台(2)

    本文中所有例子中我们都仅给MSI001使用天线,因为QN8027离得很近,发射端不需要使用天线
    的头像 发表于 07-06 10:54 1512次阅读
    使用<b class='flag-5'>STM32</b><b class='flag-5'>调试</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模块</b>及<b class='flag-5'>解调</b><b class='flag-5'>FM</b><b class='flag-5'>电台</b>(2)

    使用STM32调试FMSDR模块解调FM电台3

    MSI001芯片需要输入24MHz的时钟作为参考信号,在这里使用专门的时钟产生单元RCC产生24M的方波,提供给MSI001作为输入参考信号。
    的头像 发表于 07-06 11:00 4334次阅读
    使用<b class='flag-5'>STM32</b><b class='flag-5'>调试</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模块</b>及<b class='flag-5'>解调</b><b class='flag-5'>FM</b><b class='flag-5'>电台</b>(<b class='flag-5'>3</b>)

    使用STM32调试FMSDR模块解调FM电台(4)

    本实验是在配置MSI001的频点为101.7Mhz已知交通广播电台,观察喇叭是否能听到交通广播声音,再调整MSI001的输出幅度。
    的头像 发表于 07-06 11:05 1141次阅读
    使用<b class='flag-5'>STM32</b><b class='flag-5'>调试</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模块</b>及<b class='flag-5'>解调</b><b class='flag-5'>FM</b><b class='flag-5'>电台</b>(4)