ADC简介
2026-02-28
ADC子系统包括信号复用和电压模数转换器(VADC),是一种将内部和外部信号路由到VADC的多路复用网络。
ADC模块硬件架构图

模块支持使用的ADC
模块支持使用的ADC如下:
| 接口 | 引脚号 | 引脚名 | PM4250引脚号 | 电压域 | MPM中断 | 引脚描述 |
|---|---|---|---|---|---|---|
| ADC | 128 | ADC0 | GPIO4 | 1.8 V | - | PMU_GPIO04 |
| ADC | 185 | ADC1 | GPIO7 | 1.8 V | - | PMU_GPIO07 |
ADC位置
智能主控板上ADC接口的位置如下图所示:
智能主控板上ADC的位置
ADC节点使用示例
ADC节点主要用来查看该节点输入的ADC数值。
使用方法
测试方法为:使用可调直流电源作为输入信号源,将电源正极连接到ADC0或ADC1引脚,电源GND与智能主控板GND相连。
- ADC0:连接到GPIO4,对应节点
in_voltage_adc_gpio4_input,支持输入电压范围约0~5.25 V。 - ADC1:连接到GPIO7,对应节点
in_voltage_adc_gpio7_input,支持输入电压范围约0~5.25 V。
将直流电源输出设置为任意电压后,可通过下面命令读取返回的ADC值(单位为μV):
adb shell
cd /sys/bus/iio/devices/iio:device0
cat in_voltage_adc_gpio4_input
cat in_voltage_adc_gpio7_input
ADC读取示例输出
测试代码
以下示例代码演示了如何在应用程序中读取ADC值。该代码通过打开ADC节点文件,读取ADC原始值(单位为μV),并将其转换为整数进行后续处理。
点击展开/折叠:ADC读取测试代码(可自行NDK编译)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int main()
{
int fd = -1;
int adc_value;
char buff[64] = {0};
// 打开ADC节点文件(ADC0对应GPIO4)
fd = open("/sys/bus/iio/devices/iio:device0/in_voltage_adc_gpio4_input", O_RDONLY);
if(fd < 0){
perror("open error\n");
return fd;
}
// 读取ADC值
int n_read = read(fd, buff, sizeof(buff));
if(n_read < 0) {
perror("read error\n");
close(fd);
return -1;
}
// 将读取的字符串转换为整数(单位为μV)
adc_value = atol(buff);
printf("read %d bytes, content: %s\n", n_read, buff);
printf("ADC value: %d μV\n", adc_value);
close(fd);
return 0;
}
代码说明:
- 使用
open()函数打开ADC节点文件/sys/bus/iio/devices/iio:device0/in_voltage_adc_gpio4_input。 - 使用
read()函数读取ADC原始值(字符串格式,单位为μV)。 - 使用
atol()函数将字符串转换为长整型数值。 - 读取的ADC值单位为微伏(μV),可根据需要转换为电压值。
编译和运行:
# 使用NDK编译
# 将编译好的可执行文件推送到设备并运行
adb push test_adc /data/local/tmp/test_adc
adb shell "chmod +x /data/local/tmp/test_adc"
adb shell "/data/local/tmp/test_adc"
测试数据
ADC引脚规格
模块上的ADC引脚定义如下:
| 接口 | 模块引脚号 | 模块引脚名 | 模块 I/O | NET名称(复用功能) | 说明 |
|---|---|---|---|---|---|
| ADC | 128 | ADC0 | I | ADC0 | 1) 连接器输入电压范围:0–5.25 V。 2) 分压电阻:RH = 18 kΩ,RL = 10 kΩ。 3) ADC引脚电压 = 连接器输入电压(J0403)× (10/28)。 4) 示例:输入 3 V 时,ADC引脚电压应为 3 V × 10/28 ≈ 1.0714 V。 |
| ADC | 185 | ADC1 | I | ADC1 | 与ADC0相同的电气特性(0–5.25 V输入范围,RH = 18 kΩ,RL = 10 kΩ,ADC引脚电压 = Vin × 10/28)。 |
ADC0测试数据
| 电压源 | ADC0(μV) | 理论值(V) |
|---|---|---|
| 1.8 V | 638408 | 1.8 V×10/28 = 0.642857 |
| 3 V | 1066414 | 3 V×10/28 = 1.07143 |
| 5 V | 1784623 | 5 V×10/28 = 1.78571 |
ADC1测试数据
| 电压源 | ADC1(μV) | 理论值(V) |
|---|---|---|
| 1.8 V | 640549 | 1.8 V×10/28 = 0.642857 |
| 3 V | 1069269 | 3 V×10/28 = 1.07143 |
| 5 V | 1789814 | 5 V×10/28 = 1.78571 |