美文网首页ESP32ESP32
ESP32学习笔记(45)——DAC接口使用

ESP32学习笔记(45)——DAC接口使用

作者: Leung_ManWah | 来源:发表于2021-08-17 17:02 被阅读0次

    一、概述

    ESP32 有两个 8 位 DAC(数模转换器) 通道,分别连接 GPIO25(通道 1)GPIO26(通道 2)

    DAC 驱动器允许将这些通道设置为任意电压。

    ESP-IDF 编程指南——DAC

    二、API说明

    以下 DAC 接口位于 driver/include/driver/dac_common.h

    2.1 dac_output_voltage

    2.2 dac_output_enable

    2.3 dac_cw_generator_config

    2.4 dac_cw_generator_enable

    三、通道引脚

    两个 8 位 DAC(数模转换器) 通道,分别连接 GPIO25(通道 1)GPIO26(通道 2)

    typedef enum {
        DAC_CHANNEL_1 = 0,    /*!< DAC channel 1 is GPIO25(ESP32) / GPIO17(ESP32S2) */
        DAC_CHANNEL_2 = 1,    /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */
        DAC_CHANNEL_MAX,
    } dac_channel_t;
    

    四、DAC输出电压

    由于 DAC 输出为 8 位.所以取值为 0-255 正比对应于电源电压(如0 - 3.3V)。即:
    V_{out} = \frac{N}{255} V_{dd}
    其中,Ndac_value 的值,V_{dd} 为电源电压(通常为3.3V)。计算得的 V_{out} 为输出的DAC电压。

    N = 155 时,有
    V_{out} = \frac{155}{255} V_{dd}=\frac{155}{255}×3.3V≈2.00588 V

    #include "driver/dac.h"
    
    void app_main(void)
    {
        dac_output_voltage(DAC_CHANNEL_1, 155);
        dac_output_enable(DAC_CHANNEL_1);
    }
    

    五、DAC输出余弦波

    #include "driver/dac.h"
    
    void app_main(void)
    {
        dac_cw_config_t config;
        config.en_ch = DAC_CHANNEL_1;
        config.freq = 55000;
        config.scale = DAC_CW_SCALE_1;
        config.phase = DAC_CW_PHASE_0;
    
        dac_cw_generator_config(&config);
        dac_cw_generator_enable();
    
        dac_output_enable(DAC_CHANNEL_1);
    }
    

    这里有个问题,为什么设置频率 55000(100KHz),最后结果只有50多KHz。

    ESP32论坛里也有人问:DAC余弦波发生器的奇怪行为


    • 由 Leung 写于 2021 年 8 月 17 日

    • 参考:ESP32 之 ESP-IDF 教学(七)——数模转换器(DAC)

    相关文章

      网友评论

        本文标题:ESP32学习笔记(45)——DAC接口使用

        本文链接:https://www.haomeiwen.com/subject/aammbltx.html