qq_51822052 2023-10-23 09:44 采纳率: 0%
浏览 22

esp32DAC输出存在毛刺现象

esp32在进行dac输出100hz正弦波时,存在毛刺
正弦波的采样点为128个

const uint8_t g_SinWave128[128] = {128, 134, 140, 146, 152, 158, 164, 170, 176, 182, 187, 193, 198, 203, 208, 213,
                                   217, 222, 226, 230, 233, 236, 240, 242, 245, 247, 249, 251, 252, 253, 254, 254,
                                   255, 254, 254, 253, 252, 251, 249, 247, 245, 242, 240, 236, 233, 230, 226, 222,
                                   217, 213, 208, 203, 198, 193, 187, 182, 176, 170, 164, 158, 152, 146, 140, 134,
                                   127, 121, 115, 109, 103, 97, 91, 85, 79, 73, 68, 62, 57, 52, 47, 42,
                                   38, 33, 29, 25, 22, 19, 15, 13, 10, 8, 6, 4, 3, 2, 1, 0,
                                   0, 0, 1, 2, 3, 4, 6, 8, 10, 13, 15, 19, 22, 25, 29, 33,
                                   38, 42, 47, 52, 57, 62, 68, 73, 79, 85, 91, 97, 103, 109, 115, 121};

dac转换频率设置为6400hz

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-23 12:10
    关注

    【以下回答由 GPT 生成】

    首先,我们需要确认一下问题的具体原因。在ESP32上进行DAC输出时,可能会出现毛刺的情况有几种可能的原因:

    1. 采样点的数量不足导致波形不够平滑。

    如果您使用的正弦波表只有128个采样点,这可能导致波形不够平滑,从而产生毛刺。为了解决这个问题,您可以增加采样点的数量,比如使用256个或更多的采样点。增加采样点的数量可以使波形更加平滑。

    1. DAC输出速率不匹配导致波形失真。

    ESP32的DAC输出速率是固定的,与系统时钟相关。如果您使用的正弦波表是基于不正确的DAC输出速率生成的,可能会导致波形失真。为了解决这个问题,您可以确保正弦波表是基于与DAC输出速率匹配的采样率生成的。

    下面是一个参考代码示例,用于生成基于正确采样率的正弦波表:

    #include <math.h>
    
    #define SAMPLE_RATE 40000 // 假设 DAC 输出速率为 40kHz
    
    void generateSineWaveTable(float* table, int tableSize, float frequency) {
      float increment = frequency * 2.0 * M_PI / SAMPLE_RATE;
      for (int i = 0; i < tableSize; i++) {
        table[i] = sin(i * increment);
      }
    }
    

    在上面的代码中,SAMPLE_RATE 是 DAC 的输出速率,tableSize 是正弦波表的大小,frequency 是正弦波的频率。通过调用 generateSineWaveTable 函数,您可以生成与 DAC 输出速率匹配的正弦波表。

    1. 噪声干扰导致波形不稳定。

    ESP32上的DAC输出可能会受到噪声干扰的影响,从而导致波形不稳定。为了减少噪声干扰,您可以尝试以下方法:

    • 将DAC引脚用短接线连接到电源或地线上,以减少干扰。
    • 使用滤波电路来滤除高频噪声。
    • 确保您的电源供应稳定,以避免电压波动引起的干扰。

    通过以上的优化方案,您应该能够解决ESP32进行DAC输出时存在毛刺的问题。如果以上方案没有解决您的问题,请提供更多的信息,以便我可以更好地帮助您。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月23日