树莓派PICO原生开发-ADC

写个代码测试一下 GPIO26 ADC。笔者手头没有信号发生器,所以直接测悬空引脚的电压,测量过程中用手按压引脚。代码:

#include "pico/stdlib.h"
#include "hardware/adc.h"
#include <cstdio>

int main() {
    stdio_init_all();

//init很重要 adc_init(); // 取消 GPIO26 上的其他功能,也取消数字输入功能 adc_gpio_init(26); // 0~3: GPIO26~29; 4: 内置温度传感器 adc_select_input(0); while(true) { auto res = adc_read(); printf("res = %d\n", res); sleep_ms(100); } }

注意需要在 cmake 中指定链接 hardware_adc 库:
target_link_libraries(adc pico_stdlib hardware_adc)

如果要用 ADC 测量芯片温度,则需要将输入源设为 4,并启用温度传感器。温度值可以通过文档中给出的公式计算。代码如下:

int main() {
    stdio_init_all();
    adc_init();

    // 使能温度传感器
    adc_set_temp_sensor_enabled(true);
    adc_select_input(4);

    while(true) {
        auto res = adc_read();
        auto t = 27 - (1.0 * res / (1<<12) * 3.3 - 0.706) / 0.001721;
        printf("T = %2.04f ℃\n", t);
        sleep_ms(100);
    }
}

 

posted @ 2025-01-14 10:30  mcwhirr  阅读(67)  评论(0)    收藏  举报