我正在尝试使用 ESP8266_RTOS_SDK v3.4 测试 ESP-01 的内部系统电压。
* 注意:这是内部系统电压测量,而不是使用 TOUT 引脚的外部测量。
具体来说,我正在使用 SDK 安装外围设备部分的 adc 示例项目。该文件是 adc_example_main.c 。它构建良好,然后闪烁,并成功监控。
我已经设置了一个测试
电路,该电路使用一个分压器和一个 trimpot 10k 和 20k 电阻。输入电压为 3.3V。微调电位器给出了 3.3V 到 0 的范围。我可以看到设备在电压降低时停止(用万用表测量)。
问题是,adc 函数读数始终为 0x01010702 (4466)。由于 ADC 是 10 位的,我假设该值实际上是 0x010702 或十进制的 370。这对应于 0.370V。我用万用表测量的输入电压显示不同(加上模块还活着)。电压从不改变,从不波动。我从 USB-UART、3.7 锂聚合物电池(通过 LDO 获得 3.23 V)和树莓派引脚(3.3V 和 5V)为不同的 ESP-01 供电。
示例代码非常简单,并使用 adc.h 标头中定义的 adc_read 函数:
ESP_OK == adc_read(&adc_data[0])
我的目标是测量系统电压并将其与耗尽的电池相关联,这样我就可以电池充电时间提醒用户。
提供的示例似乎不起作用。
有没有办法直接从代码访问 SAR ADC 的内存寄存器?
ESP8266EX 的数据表未列出 SAR ADC 使用的参考电压。