树莓派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);
}
}

浙公网安备 33010602011771号