IDAC使用参考¶
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 1.0 | 05/08/2025 |
1. 概述¶
DAC(数模转换器)是把数字信号转变成模拟信号的电子器件。通常我们用DAC指代电压输出型DAC(即输出的模拟信号是电压),用IDAC指代电流输出型DAC(即输出的模拟信号是电流)。
2. 关键字说明¶
-
DAC
(Digital-to-Analog Converter,数模转换器)是一种将数字信号转换为模拟信号的电子器件。
-
IDAC
(Current Digital-to-Analog Converter,电流输出型数模转换器)是一种以电流作为输出模拟信号的数模转换器。
3. 功能描述¶
支持两种调压方式:VID和IDAC。VID调压是通过控制12根GPIO来调节电压,只有24个电压档位可供调节,不同档位之间的精度在50mV左右。而IDAC调压能更精细地调节电压(调节精度为10mV或20mV),且仅需一根专用的GPIO即可控制最多30个电压档位。
4. 硬件连接介绍¶
IDAC硬件模块集成在SoC内部。需要将开发板上对应的跳帽切换成IDAC mode来开启IDAC调压功能。
5. Uboot用法介绍¶
uboot 下使用 set 命令修改Power Scheme,命令的使用说明如下:
Usage:
set overdrive 0 - change power scheme to 'Low Drive - LD'
set overdrive 1 - change power scheme to 'None Overdrive - NOD'
set overdrive 2 - change power scheme to 'Over Drive - OD'
set overdrive 3 - change power scheme to 'Turn Off'
6. Kernel用法介绍¶
IDAC调压的对象包括Core Power(VDD_CORE),CPU Power(VDD_CPU),IPU Power(VDD_IPU),DSP Power(VDD_DSP)等。不同平台支持的调压对象会有所不同,下面以IFORD平台用IDAC调节CPU Power为例进行说明。
6.1. Kernel Config配置¶
-
Enable 对应的驱动模块:
在编译kernel时需要选择的配置如下:
Device Drivers ---> [*] Sstar SoC platform drivers ---> [*] Sstar Voltage IDAC Control
6.2. Dts配置¶
IDAC控制CPU Power的相关设定在dts里的cpu_power节点中。节点中的参数如下:
1. cpu_power {
2. compatible = "sstar,voltage-idac-ctrl";
3. vid_gpio = <PAD_PM_GPIO5>;
4. base_voltage = <900>;
5. status = "okay";
6. };
cpu_power节点中的属性含义分别为:
| 属性 | 描述 | 设定值 | 备注 |
|---|---|---|---|
| compatible | 匹配驱动进行驱动注册 | "sstar,voltage-idac-ctrl" | 禁止修改 |
| vid_gpio | 配置所使用的GPIO | 硬件决定 | 禁止修改 |
| base_voltage | 基准电压(单位mV) | 硬件决定 | 禁止修改 |
| status | 选择是否使能该节点 | "okay" or "disabled" | 可根据需要修改 |
6.3. Padmux配置¶
NA
6.4. 模块使用介绍¶
6.4.1. SYSFS 使用方法¶
kernel下使用sysfs查询/修改cpu power,使用说明如下:
-
CPU Power
Dump current cpu power
cat /sys/devices/system/voltage/cpu_power/voltage_current 1070 VOLTAGE_DEMANDER_INIT - VOLTAGE_DEMANDER_CPUFREQ 1070 VOLTAGE_DEMANDER_TEMPERATURE - VOLTAGE_DEMANDER_USER -Query available cpu power
cat /sys/devices/system/voltage/cpu_power/voltage_available Vmin(mV) Vmax(mV) 700 1300Set cpu power to 900mV
echo 900 > /sys/devices/system/voltage/cpu_power/voltage_current
6.4.2. ioctl使用方法¶
NA
6.5. Sample code¶
NA
6.6. UT case¶
NA
7. API参考¶
该功能模块提供以下接口:
| API名称 | 功能 |
|---|---|
| set_core_voltage | 设置电压值 |
| get_core_voltage | 查询电压值 |
7.1. set_core_voltage¶
-
功能
设置电压值
-
语法
int set_core_voltage(const char *name, VOLTAGE_DEMANDER_E demander, u32 mV) -
参数
参数名称 描述 name 调压对象的名字,例如core_power,cpu_power,ipu_power demander 请求者的标签 mV 电压值(单位mV) -
返回值
返回值 描述 0 成功 other 失败
7.2. get_core_voltage¶
-
功能
查询电压值
-
语法
int get_core_voltage(const char *name, u32 *mV) -
参数
参数名称 描述 name 查询的调压对象的名字,例如core_power,cpu_power,ipu_power mV 查询到的电压值保存在该变量中 -
返回值
返回值 描述 0 成功 other 失败
8. FAQ¶
NA