一、概述

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)。即:
Vout=N255VddV_{out} = \frac{N}{255} V_{dd} Vout​=255N​Vdd​
其中,NNN 为 dac_value 的值,VddV_{dd}Vdd​ 为电源电压(通常为3.3V)。计算得的 VoutV_{out}Vout​ 为输出的DAC电压。

当 N=155N = 155N=155 时,有
Vout=155255Vdd=155255×3.3V≈2.00588VV_{out} = \frac{155}{255} V_{dd}=\frac{155}{255}×3.3V≈2.00588 V Vout​=255155​Vdd​=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 之 ESP-IDF 教学(七)——数模转换器(DAC)

ESP32学习笔记(45)——DAC接口使用相关推荐

  1. ESP32学习笔记(20)——SPI(从机)接口使用

    一.SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC.LCD ...

  2. ESP32学习笔记(19)——SPI(主机)接口使用

    一.SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC.LCD ...

  3. 《ESP32 学习笔记》 之Arduino环境下 使用DAC模拟输出(是真的DAC哦!)完成两路呼吸灯

    在 Arduino 环境下经常使用的 analogWrite(PIN, arg) 语法并不是真正的DAC模拟输出,也只是1kHZ的PWM 波模拟而成! 支持DAC功能的引脚请查看:引脚定义 本次ESP ...

  4. ESP32学习笔记(7)——SmartConfig接口使用(ESP-Touch和AirKiss)

    一.概述 SmartConfig是TI开发的一种配置技术,用于将新的Wi-Fi设备连接到Wi-Fi网络.它使用移动应用程序将网络凭据从智能手机或平板电脑广播到未配置的Wi-Fi设备. 该技术的优点是设 ...

  5. [ESP32]学习笔记03

    今天我们使用ESP32自带的LEDC外设制作一个LED呼吸灯 目录 前言 一.呼吸灯是什么 二.首先我们在Blink实例的基础上建立工程 1.引入库添加宏定义 2.修改主函数 最后我们看一下呼吸灯的效 ...

  6. ESP32学习笔记(27)——BLE GAP主机端扫描

    一.背景 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...

  7. ESP32学习笔记(49)——RFID RC522使用

    一.简介 MF RC522 是应用于 13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.是 NXP 公司针对"三表"应用推出的一款低电压.低成本.体积小的非接触式读写 ...

  8. ESP32学习笔记(一) 芯片型号介绍

    ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介 ...

  9. ESP32学习笔记(30)——BLE GATT服务端自定义服务和特征

    一.简介 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...

  10. ESP32学习笔记(14)——HTTP服务器

    一.HTTP简介 HTTP(Hyper Text Transfer Protocol) 超文本传输协议,是一种建立在 TCP 上的无状态连接,整个基本的工作流程是客户端发送一个 HTTP 请求,说明客 ...

最新文章

  1. python自动化测试框架pytest.pdf_Python自动化测试框架
  2. extjs用iframe的问题
  3. 调研Android的开发环境的发展演变
  4. Ubuntu 下安装AMBER10/AmberTools 1.2
  5. 子网掩码(subnet mask)与默认网关(default gateway)
  6. 如何高效运作机器学习团队(机器学习入门第四篇)
  7. en55032最新标准下载_关于欧盟新版EMC标准EN55032的解析
  8. 2018全球最值得关注的60家半导体公司,7家中国公司新上榜 | 年度榜单
  9. Ubuntu系统上的ImageJ安装和卸载方法
  10. win10安装小爱同学 UWP
  11. 视频字幕识别(百度AI开放平台OCR | python | opencv)
  12. pwa 让你的网页可以像本地程序一样安装到电脑上,Youtube网站使用的也是当前方法 (chrome版本)
  13. OnePlus一加手机:测试
  14. 阿里云购买的域名绑定腾讯云的空间
  15. 网络云存储技术Windows server 2012 (项目二十 一 基于Cluster的高可用企业WEB服务器的部署)
  16. 无懈可击的web设计笔记
  17. 快速学习-Saturn性能测试报告
  18. 数据挖掘中的数据分类
  19. 国开电大-成本管理-形考任务1-4
  20. 洛基国际英语推荐的20首英文歌曲

热门文章

  1. 中职学生计算机学情分析报告,中职学生学情分析及对策
  2. 带感小说:程序员坐牢会被安排写代码吗?
  3. 计算机辅助制造工程师什么,cam工程师是什么意思
  4. commons-io工具包的基本使用
  5. Python生成英文词云图
  6. Idea生成英文JavaDoc以及中文编码问题
  7. CAP原则(CAP定理)
  8. MySQL全量同步和增量同步-
  9. Linux clock子系统【3】-i2c控制器打开时钟的流程分析(devm_clk_get)(consumer侧)
  10. grib2文件格式说明 文件结构