外观
ADC 电压采样
2025-10-29
本文将介绍如何基于 睿擎工业开发平台 的 SARADC 进行电压采样。
RK3506 内置一个 4 通道、单端输入、10 位精度的逐次逼近型模数转换器(SARADC),具有以下特性:
- 工作方式:
- 支持 单次转换模式(single mode):每次由软件触发进行一次采样;
- 支持 连续轮询模式(series conversion):自动轮询所有通道,持续采样,直到软件停止。
- 输入规格:
- 支持 4 路单端模拟输入;
- 输入范围为 0V ~ 1.8V;
- 参考电压采用 内部供电和地,无需外部参考电压。
- 中断功能:
- 支持设置高/低阈值;
- 支持高于阈值、低于阈值、或处于阈值之间的中断触发。
- 分辨率:
- 10 位。
读取电压
选取 SARADC 通道,测试电压,并读取 SARADC 输出值,注意输入电压范围为 0V ~ 1.8V。
硬件连接
将 RK3506 上的 SARADC 接口(通道 3)连接至可调电源(注意输入电压范围为 0V ~ 1.8V),如图所示:

创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化设备树

固化 APP

核心示例代码
初始化 SARADC,并设置 SARADC 通道,读取 SARADC 输出值,代码见 saradc_example.c:
saradc_example.c
static void saradc_example(char argc, char *argv[])
{
rt_uint8_t channel = 0;
rt_uint32_t voltage;
rk_saradc *saradc;
if (argc != 2)
{
LOG_W("Usage: saradc_example <channel>, <channel> range is 0~3.\n");
return;
}
else
{
channel = atoi(argv[1]);
}
saradc = saradc_init();
saradc_start_channel(saradc, channel); // 启动目标通道
voltage = saradc_to_voltage(saradc, channel); // 转换为电压值
LOG_I("voltage: %d mV\n", voltage);
}运行程序
提示
代码中已配置为单次触发模式,重复测量需要重新执行命令
开发板运行程序后,在终端输入 saradc_example 命令。 此时可以使用可变电源调节电压,重复执行命令,观察 SARADC 输出值变化。
msh /> saradc_example 3
[I/example.saradc] voltage: 898 mV
msh />
msh /> saradc_example 3
[I/example.saradc] voltage: 601 mV
msh />
msh /> saradc_example 3
[I/example.saradc] voltage: 397 mV