ESP32 ADC
2个12位的ADC,共计18通道,ADC2比较特殊的一点就是:ADC2和wifi共用,wifi的优先级更高,所以ADC2只有在WIFI模块不用的情况下好使;
在读取ADC数据之前,必须先对ADC进行设置,然后才可以读出数据,设置的示例代码如下:
//Configure ADC
if (unit == ADC_UNIT_1) {
adc1_config_width(ADC_WIDTH_BIT_12);
adc1_config_channel_atten(channel, atten);
} else {
adc2_config_channel_atten((adc2_channel_t)channel, atten);
}
可以很明显对比出ADC1和ADC2的初始化是不一样的,ADC2知己设置通道&衰减之后就可以用了,通道2没有设置宽度,以后咱们就直接按照示例来用就可以,我也不知道为什么;
The reading width of ADC2 is configured every time you take the reading.这是官方给出的原因,说是每次读ADC2数据之前的时候设置ADC2的宽度;
经过上述的设置之后就可以读取ADC的数据了,读取数据的函数如下: adc1_get_raw()
and adc2_get_raw()
这里需要特别注意的一点就是,大家不要忘记我们在初始化ADC2的时候没有初始化宽度,在读ADC2数据的时候需要把宽度作为一个参数输入读数据的API函数adc2_get_raw()
中;
ADC1还可以用来读取霍尔传感器的数值,但是又两点特别注意的地方:读内置霍尔传感器数值的时候智能用ADC1的0和3通道,这就要求我们这两个通道别拿出来干别的事情,就是(GPIO36和GPIO39)别链接别的设备了,用特定函数hall_sensor_read()来读取霍尔传感器数值,和普通的读取函数不同哦;
adc2_vref_to_gpio()用来把内部的参考电压引流至GPIO口,消除噪音的时候,这个函数有用处;
ESP32是存在噪音的,读值需要校正,可以在GPIO上连接一个0.1微法的电容来降低噪音,也可以读取多个数值后取平均值来降低噪音;ESP32的参考电压在应该是1100mV,但是实际上每片ESP32的参考电压都不同(参考电压在1000-1200之间),这就要求我们得校正参考电压,因为参考电压不一样的时候,对相同电压的读值就不同了,所以得校正参考电压;
读取adc1_get_raw()
and adc2_get_raw()的数值需要校正成mV,是通过一个函数来校正的(y = coeff_a * x + coeff_b),实际上就是一条斜率一定的曲线,那么怎么得到这条曲线呢?这就需要存储在eFuse里的参数或者是咱们用户自己提供的参数,至于这些参数怎么得到,咱不讲了,就知道
esp_adc_cal_raw_to_voltage(reading, adc_chars);就是通过一条斜率曲线把读取
adc1_get_raw()
and adc2_get_raw()的数值转变成了mV的就行了,当然是用之前要得到斜率曲线的代码必须码上如下:
//Characterize ADC at particular atten
esp_adc_cal_characteristics_t *adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));
esp_adc_cal_value_t val_type = esp_adc_cal_characterize(unit, atten, ADC_WIDTH_BIT_12, DEFAULT_VREF, adc_chars);
//Check type of calibration value used to characterize ADC
if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) {
printf("eFuse Vref");
} else if (val_type == ESP_ADC_CAL_VAL_EFUSE_TP) {
printf("Two Point");
} else {
printf("Default");
}
至此ADC就算可以正常读值了!总结一下,读值之前必须先设置宽度和量程,然后读值,读值需要转化成毫伏,所以需要得到校正曲线,然后把原始读值转化成毫伏;
ESP32 ADC的更多相关文章
- ESP32引脚参考(转)
ESP32芯片配有48个具有多种功能的引脚.并非所有的引脚都暴露在所有的ESP32开发板中,有些引脚不能使用. 关于如何使用ESP32 GPIO有很多问题.你应该用什么pin?在项目中应该避免使用哪 ...
- ESP32音频输入-MAX4466,MAX9814,SPH0645LM4H,INMP441(翻译)
有几种方法可以将模拟音频数据输入到ESP32中. 直接从内置的模数转换器(ADC)读取 这对于一次性读取很有用,但不适用于高采样率. 使用I2S通过DMA读取内置ADC 适用于模拟麦克风,例如MAX4 ...
- 关于esp32的ADC采集
对于ADC采集 程序源码如下: /* ADC1 Example This example code is in the Public Domain (or CC0 licensed, at your ...
- ESP32随笔汇总
版权声明:本文为博主原创文章,未经博主本人不得转载.联系邮箱:mynoticeable@gmail.com 1.ubuntu 14.04下搭建esp32开发环境 2.UBUNTU14.0.4安装ecl ...
- ESP32 DAC
ESP32有两个DAC通道,通道1链接GPIO25, 通道2链接GPIO26; 当DAC设置为 “built-in DAC mode”的时候,I2S可以通过DAC发送数据: 使用示例: dac_out ...
- ESP32的ULP 协处理器笔记
1.ULP 协处理器是一个功耗极低的协处理器设备,无论主 CPU 是处于正常运行模式还是 Deep-sleep 模式,ULP 协处理器都可以独立运行.超低功耗协处理器的补充使得 ESP32 能够胜任一 ...
- STM32之DMA+ADC
借用小甲鱼的经典:各位互联网的广大网友们.大家早上中午晚上好..(打下小广告,因为小甲鱼的视频真的很不错).每次看小甲鱼的视频自学都是比较轻松愉快的..我在想,如果小甲鱼出STM32的视频,我会一集不 ...
- STM32之ADC+步骤小技巧(英文)
神通广大的各位互联网的网友们.大家早上中午晚上好好好.今早起来很准时的收到了两条10086的扣月租的信息.心痛不已.怀着这心情.又开始了STM32的研究.早上做了计算机控制的PID实验,又让我想起了飞 ...
- [nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC
一.本实验ADC 配置 分辨率:10 位. 输入通道:5,即使用输入通道AIN5 检测电位器的电压. ADC 基准电压:1.2V. 二.NRF51822 ADC 管脚分布 NRF51822 的ADC ...
随机推荐
- Django Rest Framework之用户频率/访问次数限制
内置接口代码基本结构 settings.py: REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES':['api.utils.mythrottle.UserThr ...
- SPOJ GSS3 (动态dp)
题意 题目链接 Sol 这题可以动态dp做. 设\(f[i]\)表示以\(i\)为结尾的最大子段和,\(g[i]\)表示\(1-i\)的最大子段和 那么 \(f[i] = max(f[i - 1] + ...
- ionic 项目中,ng-bind-html会过滤掉内嵌样式的问题
一.引入$sce,转化一步即可 $scope.articlesdetail.info = $sce.trustAsHtml($scope.articlesdetail.info); 参考网址: htt ...
- IDEA项目搭建十——使用slf4j和logback进行日志记录
.简介 java里面日志分为两部分一个门面.一个实现,我们所熟知的SLF4j.Log4j.Log4j2.Logback的日志组件slf4j是门面提供的统一的入口,具体实现由log4j.log4j2.l ...
- PopupWindow 弹出时背景变暗
下面的PopupWindow 的高是相对于屏幕高设计,宽是获取的某一个控件的宽设置,位置位于某控件的上方,红色部分是设置弹出时屏幕变暗的. //设置contentView View contentV ...
- Telephone dialer
运行电话拨号器,需要加这个权限,否则不会打通电话.这个权限是用户权限,是谷歌工程师为了跟自己撇清关系,用户需要权限的时候自己加. 运行android程序的时候提示:ActivityManager: W ...
- 我的博客:C# PHP J2ee Java Android js WP Asp.net mvc Python
<p><A target="_blank" href="http://blog.163.com/hr_company_product/" &g ...
- 解决Firefox下,页面元素不刷新问题
由于FireFox的刷新机制与IE有较大区别.所以javascript代码 document.location.reload();通常在IE上工作正常,在Firefox下效果却并不理想,这是因为Fir ...
- vue权威指南笔记01——样式的设置
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- weblogic系列漏洞整理 -- 1. weblogic安装
目录 0. 概述 1. 下载安装Java环境 2. 下载安装weblogic 安装 部署domain域 进入weblogic 3. 排错 如果出现如下错误 0. 概述 WebLogic是美国Oracl ...