ESP32学习笔记(45)——DAC接口使用
Posted Leung_ManWah
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32学习笔记(45)——DAC接口使用相关的知识,希望对你有一定的参考价值。
一、概述
ESP32 有两个 8 位 DAC(数模转换器) 通道,分别连接 GPIO25(通道 1) 和 GPIO26(通道 2)。
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
o
u
t
=
N
255
V
d
d
V_{out} = \\frac{N}{255} V_{dd}
Vout=255NVdd
其中,
N
N
N 为 dac_value
的值,
V
d
d
V_{dd}
Vdd 为电源电压(通常为3.3V)。计算得的
V
o
u
t
V_{out}
Vout 为输出的DAC电压。
当
N
=
155
N = 155
N=155 时,有
V
o
u
t
=
155
255
V
d
d
=
155
255
×
3.3
V
≈
2.00588
V
V_{out} = \\frac{155}{255} V_{dd}=\\frac{155}{255}×3.3V≈2.00588 V
Vout=255155Vdd=255155×3.3V≈2.00588V
#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学习笔记(45)——DAC接口使用的主要内容,如果未能解决你的问题,请参考以下文章
ESP32学习笔记(39)——播放MP3文件(内部DAC方式)
ESP32学习笔记(25)——OTA(空中升级)接口使用(简化API)
ESP32学习笔记(36)——BluFi(蓝牙配网)接口使用
ESP32学习笔记(49)——ESP-WIFI-MESH接口使用