除了本科入门课程之外,我对 DSP 知之甚少。我正在寻找一种 C 算法,该算法采用 ADC 样本并确定是否存在特定频率(在 100KHz 范围内);不关心信号的任何其他分量。
我不知道从哪里开始。我看了Goertzel算法;这是一个值得推荐的方法吗?
我想知道用 ARM 微控制器分析 100KHz 的信号是否可行,或者我需要特殊的 DSP 品种吗?
我是否应该使用 PLL 或类似的东西来解决这个问题?如果是这样,有人有一些设计参考吗?
谢谢!
除了本科入门课程之外,我对 DSP 知之甚少。我正在寻找一种 C 算法,该算法采用 ADC 样本并确定是否存在特定频率(在 100KHz 范围内);不关心信号的任何其他分量。
我不知道从哪里开始。我看了Goertzel算法;这是一个值得推荐的方法吗?
我想知道用 ARM 微控制器分析 100KHz 的信号是否可行,或者我需要特殊的 DSP 品种吗?
我是否应该使用 PLL 或类似的东西来解决这个问题?如果是这样,有人有一些设计参考吗?
谢谢!
关于实现问题,也许您可以告诉我们更多有关您的硬件的信息:ARM 系列(Cortex M3 还是 M4?),时钟频率...
Goertzel 算法的定点实现是十几个指令,因此在时钟频率为 72 MHz 的低端 ARM 微控制器(例如 STM32F1 或 LPC1343)上以 1 MHz 的采样率确实可以做到这一点(假设你没有读取 ADC 有很多开销,例如让 DMA 子系统处理这个)。
然而:
在这种情况下,如果您控制目标硬件,则在模拟域中进行一些预处理可能会很方便,例如:
如果您熟悉离散傅立叶变换,则它基本上与每个可能频率的正弦波和余弦波相关。因此,如果您只对一个特定频率感兴趣,您可以与您感兴趣的频率的正弦和余弦进行相关。另一种方法是使用带通滤波器,使用 IIR 滤波器可以获得一些非常有效的算法,如果这是您想要的,这将使您获得接近目标频率的频率。