3. ToF模组电源树设计
任务说明
本案例为ToF模组设计多级电源树,核心目标是为激光驱动电路(VCSEL)和数字核心(SPAD、计时电路、接口逻辑)提供稳定、低噪声的供电轨。需要完成从输入电源到各负载端的完整电源分配与去耦设计,并给出可验证的电源树结构。
电源树架构设计
ToF模组典型供电需求分为三组:激光驱动轨(VCSEL_DRV,2.5V/1A峰值)、数字核心轨(VDD_CORE,1.2V/300mA)、IO与模拟轨(VDD_IO,1.8V/150mA)。输入采用单路5V系统电源,通过两级转换实现:第一级由5V降压至3.3V中间总线,第二级分别由3.3V产生各负载轨。激光驱动轨因峰值电流大且对纹波敏感,需独立LDO供电并靠近负载放置去耦电容;数字核心轨使用高效率DC-DC转换器以降低功耗。
关键设计参数与器件选型
| 电源轨 | 电压/电流 | 转换方案 | 关键选型要求 |
|---|---|---|---|
| VIN | 5V / 2A | 系统输入 | 输入电容 10µF + 0.1µF,反接保护 |
| VDD_3V3 | 3.3V / 1.5A | DC-DC Buck | 开关频率≥2MHz,效率≥90% |
| VCSEL_DRV | 2.5V / 1A峰值 | LDO1 | 低噪声LDO,PSRR≥60dB@100kHz,压差<500mV |
| VDD_CORE | 1.2V / 300mA | DC-DC2 | 小尺寸电感2.2µH,纹波<10mVpp |
| VDD_IO | 1.8V / 150mA | LDO3 | 低静态电流,PSRR≥50dB |
PCB布局与去耦实现
电源树布局遵循“星形接地、负载端去耦”原则。激光驱动轨因瞬态电流大,其LDO输出端需放置4.7µF X7R陶瓷电容与100nF高频电容,且必须靠近VCSEL驱动芯片电源引脚(距离<3mm)。数字核心轨的DC-DC转换器电感下方禁止铺铜,反馈电阻走线采用开尔文连接至输出电容远端。各电源轨的过孔数量按电流密度计算:1A轨至少4个过孔(0.3mm孔径),300mA轨至少2个过孔。
// 电源树配置结构体
typedef struct {
float vcsel_voltage; // 激光器供电电压 (V)
float vcsel_current_max; // 激光器最大峰值电流 (A)
float core_voltage; // 数字核心电压 (V)
float io_voltage; // IO电压 (V)
float avdd_voltage; // 模拟供电电压 (V)
float dvdd_voltage; // 数字供电电压 (V)
uint8_t enable_sequence; // 上电时序位掩码
} tof_power_tree_t;
// 电源树初始化配置
static const tof_power_tree_t power_tree_cfg = {
.vcsel_voltage = 2.8f, // VCSEL激光器供电
.vcsel_current_max = 3.0f, // 3A峰值电流
.core_voltage = 1.2f, // 数字核心
.io_voltage = 1.8f, // IO电平
.avdd_voltage = 3.3f, // 模拟前端
.dvdd_voltage = 1.8f, // 数字逻辑
.enable_sequence = 0x3F // 全部使能
};
// 电源树状态监控
typedef struct {
uint8_t vcsel_ok;
uint8_t core_ok;
uint8_t avdd_ok;
uint8_t dvdd_ok;
uint8_t overcurrent_flag;
} power_status_t;
// 电源树初始化函数
void power_tree_init(void) {
// 1. 使能输入电源 (5V主供电)
gpio_write(EN_5V, 1);
delay_ms(10);
// 2. 使能模拟电源 (AVDD 3.3V)
gpio_write(EN_AVDD, 1);
delay_ms(5);
// 3. 使能数字IO电源 (DVDD 1.8V)
gpio_write(EN_DVDD, 1);
delay_ms(5);
// 4. 使能核心电压 (VDD_CORE 1.2V)
gpio_write(EN_CORE, 1);
delay_ms(5);
// 5. 最后使能VCSEL驱动电源 (高电流路径)
gpio_write(EN_VCSEL, 1);
delay_ms(2);
}
// 电源树电压监测
uint8_t check_power_rails(void) {
power_status_t status;
// ADC读取各电源轨电压
status.vcsel_ok = (adc_read(ADC_VCSEL) > 2.7f) ? 1 : 0;
status.core_ok = (adc_read(ADC_CORE) > 1.1f) ? 1 : 0;
status.avdd_ok = (adc_read(ADC_AVDD) > 3.2f) ? 1 : 0;
status.dvdd_ok = (adc_read(ADC_DVDD) > 1.7f) ? 1 : 0;
// 检查过流标志 (硬件比较器输出)
status.overcurrent_flag = gpio_read(OC_FLAG);
return (status.vcsel_ok && status.core_ok &&
status.avdd_ok && status.dvdd_ok &&
!status.overcurrent_flag);
}
// 激光发射前电源稳定等待
void wait_power_stable(void) {
uint32_t timeout = 1000;
while (!check_power_rails() && timeout--) {
delay_ms(1);
}
if (timeout == 0) {
// 电源异常处理
power_tree_shutdown();
}
}
// 电源树关闭 (逆序)
void power_tree_shutdown(void) {
gpio_write(EN_VCSEL, 0);
delay_ms(2);
gpio_write(EN_CORE, 0);
delay_ms(2);
gpio_write(EN_DVDD, 0);
delay_ms(2);
gpio_write(EN_AVDD, 0);
delay_ms(2);
gpio_write(EN_5V, 0);
}
验证方法与判定标准
静态验证:使用万用表测量各电源轨空载电压,误差应在标称值±3%以内。使用电子负载分别加载100%、50%负载,观察电压跌落不超过50mV。
动态验证:用示波器(带宽≥200MHz,探头使用接地弹簧)测量VCSEL驱动轨在脉冲发射时的电压跌落,要求瞬态跌落<100mV,恢复时间<10µs。数字核心轨纹波使用AC耦合测量,峰峰值应<15mV。
判定标准:所有电源轨在最大负载条件下纹波满足上述指标,且激光驱动轨在1A脉冲负载下无振荡(相位裕度>45°),即判定电源树设计通过。