标签 STM32 下的文章

本文为鄙人的本科毕业设计,在此对文章略作摘录记录于此。本设计存在诸多不成熟的地方,参考时请务必仔细甄别&思考,欢迎讨论。

摘要

本设计拟在STM32上通过软件无线电平台实现一个射频无线电收发平台,该平台可以用于无线电信号的调制与解调,最终确定了发送端的零中频架构与接收端的低中频架构,并同时确定了发送板、核心板、接收板的系统结构。

​硬件设计部分主要涉及滤波器设计、阻抗匹配、信号屏蔽与信号调理电路。最终选用巴特沃斯滤波器作为接收机的前端滤波器,RC滤波器作为ADC的抗混叠滤波器;对于阻抗匹配主要涉及微带线与共面波导两种结构,文中分别予以介绍与计算;对于信号屏蔽部分主要介绍了合理接地与可靠退耦两种方法,通过良好的设计来保证信号的可靠传输;信号调理部分涉及外部输入输出信号的阻抗、功率与频率匹配,本设计中主要通过运算放大器来实现调理。

​软件设计部分主要包括信号的调制解调、下采样、滤波与人机交互。其中FM信号的解调通过差分近似微分实现,信号的调制通过控制PWM输出定时器的自动重装载值实现,下采样通过定点取均值实现,滤波器通过FIR滤波器实现。人机交互部分使用到OLED、按键、扬声器、3.5mm耳机孔等外设,通过软件逻辑实现合理的人机交互。

在课题的最后,还使用到了示波器、频谱仪、信号发生器与网络分析仪来对设计进行分析。通过分析输出信号频谱、滤波器幅频特性、天线驻波比与解调路径波形频谱等指标,最终确定本设计的总体性能指标。通过方案设计、软硬件实现、测试验证等步骤,本课题最终实现了设计的全部流程。但受限于成本、仪器指标、开发周期的限制,本设计仍有诸多不足之处。

- 阅读剩余部分 -

概要

在本项目中,为了降低数字信号处理过程中的主控制器成本,我们不得不使用MCU(微控制器)来替代传统的FPGA与DSP。然而对于MCU而言,实时的数字信号处理是一项非常艰巨的任务。因为每执行一次运算都要重复取指、译码、执行等操作,这些操作累加起来将会消耗非常多的时间。但是只要思想不滑坡,方法总比困难多!

举一个最简单的例子,在STM32F103C8T6上,使用定时器来触发进入中断的最小间隔为3us(HAL库)。这就意味着如果需要在这样的中断里面更新DAC的数值,它的最大采样率就仅为333Ksps,远小于手册标称1Msps。但是好在STM32为我们提供了非常多方便的外设可供调用。在上面的例子中,我们可以使用DMA+DAC的架构从数组中直接更新DAC的取值,实测采样率一直到4Msps都可以提供较好的波形。

借助DMA我们实现了传统MCU架构中无法实现的高速信号搬移(外设->内存、内存->外设、内存->内存),但是信号的实时处理仍然是一个很头疼的问题。然而这个问题已经由ARM的工程师解决了,他们在CMSIS-DSP包中提供了非常多的快速的数学运算方法,包括基本数学运算、矩阵运算、滤波、DSP、统计运算等等。直接使用这些最聪明的工程师的成果,会帮助你实现最快的运算速度与最好的兼容性(所有的ARM类型处理器都可使用)。

在本文中,我们将会介绍一个产生信号并采集滤波的例子:

  • 调制波输出:使用STM32内置的DAC输出一个50Hz、100Hz与1KHz等幅度叠加的调制信号,使用DMA更新数据,采样率为100Ksps。
  • 调制波采集:使用内置ADC1对上述产生的数据通过DMA进行乒乓操作采集处理,并将其通过串口发送到电脑分析,采样率为5Ksps。
  • 降采样:数据采集完成后,对其进行5倍的降采样,使其采样率变为1Ksps。
  • FIR滤波:再对上述降采样的信号进行一次FIR滤波,滤除200Hz的信号,仅保留50Hz的信号。
  • FFT分析:在STM32上运行一个实时的FFT运算,离线分析降采样后的数据在频域表现如何。

- 阅读剩余部分 -