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

本文章 来自原创专栏《ESP32教学专栏 (基于ESP-IDF)》,讲解如何使用 ESP-IDF 构建 ESP32 程序,发布文章并会持续为已发布文章添加新内容! 每篇文章都经过了精打细磨!

↓↓↓通过下方对话框进入专栏目录页↓↓↓
CSDN 请求进入目录       _ O x

是否进入ESP32教学导航(基于ESP-IDF)?

       确定


一、ESP32 DAC 概览

ESP32有两个8位DAC(数字到模拟转换器)通道,连接GPIO25(通道1)和GPIO26(通道2)。


同时,当使用内置DAC模式( built-in DAC mode )时,通过I2S驱动器,DAC通道也可以由“数字控制器”利用“写入的DMA风格示例数据”进行驱动。

不知道转述的准不准确😂,乐鑫官网的原话是

The DAC channels can also be driven with DMA-style written sample data by the digital controller, via the I2S driver when using the “built-in DAC mode”.


注意:
本文 不介绍 通过I2S来驱动DAC

通道序号 ★GPIO(ESP32) GPIO(ESP32-S2)
DAC_CHANNEL_1 GPIO25 GPIO17
DAC_CHANNEL_2 GPIO26 GPIO18
ESP32 和 ESP32-S2 数模转换器(DAC)通道表




二、DAC的使用① —— 在通道GPIO上输出指定电压

在通道GPIO上输出指定电压是DAC最基本的使用,方法很简单。
官方在此功能上只提供了4个API函数:

  • dac_output_voltage()
    设置某DAC通道的输出电压 (关键)
  • dac_output_enable()
    启动DAC输出
  • dac_output_disable()
    关闭DAC输出
  • dac_pad_get_io_num()
    【非必须】 用于通过DAC通道编号获取对应的GPIO编号

1、API 函数简介

函数1 dac_output_voltage()
函数原型 esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value)
简介 设置 DAC 输出电压。由于 DAC 输出为8位.所以取值为0-255正比对应于电源电压(如0 - 3.3V
返回值 若成功则返回ESP_OK
参数 channel: DAC通道

dac_value: DAC 欲输出值

函数2 dac_output_enable()
函数原型 esp_err_t dac_output_enable(dac_channel_t channel)
简介 启动(使能)DAC 输出

如果使用I2S驱动,则 左声道 对应 DAC 通道2,右声道 对应 DAC 通道1
返回值 若成功则返回ESP_OK
参数 channel: DAC 通道

函数3 dac_output_disable()
函数原型 esp_err_t dac_output_disable(dac_channel_t channel)
简介 关闭DAC输出
返回值 若成功则返回ESP_OK
参数 channel: DAC通道

函数4 dac_pad_get_io_num()
函数原型 esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t * gpio_num)
简介 获取特定DAC通道的GPIO号。
返回值 若成功则返回ESP_OK
参数 channel: 通道

gpio_num: 用于接受获取到的GPIO编号的变量指针

2、示例

在3.3v供电,不进入睡眠状态的ESP32上,输出一个2V的电压

以下例程基于C++

#include <iostream>
#include "driver/dac.h"

extern "C" void app_main(void) {
   
    /*DAC channel 1 is GPIO25*/
	dac_output_voltage(DAC_CHANNEL_1, 155
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Augtons正(单片机)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值