社区导航

 

搜索
查看: 3190|回复: 0

[原创] 【ESP32学习】ADC的用法

[复制链接]

9783

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2018-8-9 21:05 | 显示全部楼层 |阅读模式
在ESP32中,内置了 2 个 12 位的逐次逼近数字模拟转换器,由 5 个专用转换器控制器管理,可测量来自 18 个管脚的模拟信号。ADC 还可测量 vdd33 等内部信号。部分管脚有 1 个可编程增益放大器,用于测量微弱模拟信号。

主要特性
  • 采用 2 个 SAR ADC,可支持同时采样与转换
  • 采用 5 个专用 ADC 控制器,可支持不同应用场景(比如,高性能、低功耗,或功率检测和峰值检测)
  • 支持 18 个模拟输入管脚
  • 1 个内部电压 vdd33 通道、2 个 pa_pkdet 通道(部分控制器支持)
  • 可配置 12 位、11 位、10 位、9 位多种分辨率
  • 支持 DMA(1 个控制器支持)
  • 支持多通道扫描模式(2 个控制器支持)
  • 支持 Deep-sleep 模式运行(1 个控制器支持)
  • 支持 ULP 协处理器控制(2 个控制器支持)

ESP32的ADC有两种方式:RTC SAR ADC和DIG SAR ADC。RTC SAR ADC是在低频状态下提供最小功耗的 ADC,而DIG SAR ADC性能和吞吐均实现了一定优化,具备以下特点:
  • 高性能。时钟更快,因此采样速率实现了大幅提升。
  • 支持多通道扫描模式。每个 SAR ADC 的测量规则可见样式表。扫描模式可配置为单通道模式、双通道模式或交替模式。
  • 扫描可由软件或 I2S 总线发起。
  • 支持 DMA。扫描完成即发生中断。


目前MicroPython中,只支持DIG SAR ADC1的功能,ADC2暂时不能使用。

ADC的使用和DAC类似,也是需要指定一下引脚。

  1. from machine import ADC, Pin

  2. adc = ADC(Pin(34))
  3. adc.read()
复制代码

ADC默认是12位的,因此返回值是0-4095。我们也可以将它设置为 9/10/11/12等几种方式,如:
  1. adc.width(ADC.WIDTH_10BIT)
复制代码


也可以指定衰减,用于扩大信号范围,支持0/2.5/6/11dB等,如:

  1. adc.atten(ADC.ATTEN_6DB)
复制代码


相比ESP8266和STM32,ESP32的ADC更加灵活和复杂,使用范围也更广。


此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-2-18 00:07 , Processed in 0.079689 second(s), 16 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表