
1. 项目背景与核心器件选型在嵌入式系统开发中电源管理模块的设计往往决定了整个系统的稳定性和可靠性。当我们需要将低电压如3.3V或5V转换为更高的工作电压如12V、24V甚至38V时DC-DC升压转换器就成为不可或缺的关键部件。TPS61170作为德州仪器(TI)推出的一款高性能升压转换芯片配合GD32VF103VBT6这款RISC-V架构的微控制器能够构建一个高效、灵活的高电压电源解决方案。1.1 TPS61170关键特性解析TPS61170是一款单片式高压开关稳压器集成了1.2A、40V的功率MOSFET。其核心参数包括输入电压范围3V至18V输出电压范围最高可达38V固定开关频率1.2MHz转换效率最高93%封装形式6引脚2x2mm QFN这款芯片特别适合以下应用场景由多节电池供电的设备需要更高工作电压从标准5V或12V电源轨生成更高电压空间受限但对电源性能要求较高的嵌入式系统1.2 GD32VF103VBT6微控制器优势GD32VF103VBT6是基于RISC-V架构的32位通用微控制器主要特点包括内核Bumblebee RISC-V最高108MHz主频存储128KB Flash32KB SRAM丰富外设多达3个USART、2个I2C、3个SPI等工作电压2.6V至3.6V封装LQFP100选择这款MCU控制TPS61170主要基于以下考虑RISC-V架构的开源特性降低了开发成本充足的GPIO和通信接口便于实现灵活控制适中的功耗符合电源管理系统的需求丰富的定时器资源适合PWM信号生成2. 硬件电路设计与实现2.1 升压转换器基础拓扑TPS61170支持多种开关稳压器拓扑结构本项目采用最基本的升压(Boost)拓扑。其工作原理是通过控制内部MOSFET的开关使电感周期性地储能和释能从而实现电压升高。基本公式为Vout Vin × (1 / (1 - D))其中D为占空比TPS61170最大占空比可达93%。2.2 关键外围元件选型2.2.1 电感选择电感值计算公式 L (Vin × D) / (ΔIL × fsw)推荐参数电感值4.7μH至10μH饱和电流至少1.5倍于最大开关电流直流电阻(DCR)尽可能低以减少损耗实际项目中选用Coilcraft的MSS1048系列6.8μH电感其饱和电流达2.1ADCR仅45mΩ。2.2.2 输入/输出电容输入电容建议值10μF陶瓷电容(X5R或X7R)位置尽量靠近芯片Vin引脚输出电容计算公式Cout ≥ (Iout × D) / (fsw × ΔVout)典型值22μF至47μF陶瓷电容2.2.3 反馈电阻网络输出电压由FB引脚(1.229V基准)和电阻分压网络决定 Vout 1.229V × (1 R1/R2)例如需要12V输出时 取R210kΩ则R110kΩ×(12V/1.229V -1)≈87.6kΩ 实际选用88.7kΩ(1%)标准电阻2.3 PCB布局注意事项功率回路最小化SW引脚、电感、输出电容形成的回路面积要尽可能小地平面处理采用星型接地将功率地和信号地分开后在芯片GND引脚单点连接热管理QFN封装的散热焊盘必须良好焊接必要时添加过孔阵列辅助散热噪声敏感信号FB走线要远离SW等高频节点必要时采用保护环设计实际布线经验在四层板设计中将功率组件全部放置在顶层底层保持完整地平面中间层用于走线和电源分配。FB分压电阻尽量靠近芯片放置走线长度不超过5mm。3. 软件控制策略实现3.1 GD32VF103VBT6基础配置首先需要配置MCU的时钟和外设// 系统时钟配置 rcu_clock_freq_set(RCU_CKSYSSRC_PLL, RCU_PLL_MUL_9); rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_TIMER0); // GPIO配置 gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6); // TIMER0_CH03.2 PWM信号生成TPS61170的CTRL引脚支持两种控制模式Easyscale™数字接口调节输出电压PWM信号调节输出电压本项目采用PWM模式通过GD32VF103的定时器产生// 定时器PWM配置 timer_oc_parameter_struct timer_ocinitpara; timer_parameter_struct timer_initpara; timer_initpara.prescaler 107; // 108MHz/(1071) 1MHz timer_initpara.alignedmode TIMER_COUNTER_EDGE; timer_initpara.counterdirection TIMER_COUNTER_UP; timer_initpara.period 99; // 1MHz/(991) 10kHz PWM timer_initpara.clockdivision TIMER_CKDIV_DIV1; timer_init(TIMER0, timer_initpara); timer_ocinitpara.outputstate TIMER_CCX_ENABLE; timer_ocinitpara.ocpolarity TIMER_OC_POLARITY_HIGH; timer_ocinitpara.ocidlestate TIMER_OC_IDLE_STATE_LOW; timer_channel_output_config(TIMER0, TIMER_CH_0, timer_ocinitpara); timer_channel_output_pulse_value_config(TIMER0, TIMER_CH_0, 50); // 50%占空比 timer_channel_output_mode_config(TIMER0, TIMER_CH_0, TIMER_OC_MODE_PWM0); timer_channel_output_shadow_config(TIMER0, TIMER_CH_0, TIMER_OC_SHADOW_DISABLE); timer_auto_reload_shadow_enable(TIMER0); timer_enable(TIMER0);3.3 动态电压调节算法通过改变PWM占空比可以线性调节输出电压void set_output_voltage(float target_voltage) { // 限制输出电压范围 if(target_voltage 3.0f) target_voltage 3.0f; if(target_voltage 38.0f) target_voltage 38.0f; // 计算所需占空比 (经验公式需根据实际校准) uint16_t duty (uint16_t)((target_voltage - 3.0f) * 2.5f); // 设置PWM占空比 timer_channel_output_pulse_value_config(TIMER0, TIMER_CH_0, duty); }4. 系统测试与性能优化4.1 基础功能测试上电测试输入5V空载时测量输出电压应为12V±1%逐步增加负载至300mA观察输出电压稳定性动态响应测试使用函数发生器产生负载阶跃变化(如100mA↔300mA)用示波器观察输出电压的瞬态响应和恢复时间效率测试在不同负载条件下测量输入/输出电压和电流计算效率η (Vout×Iout) / (Vin×Iin)4.2 常见问题排查输出电压不稳定检查FB分压电阻精度和焊接确认输出电容ESR是否足够低尝试调整补偿网络如有芯片过热检查负载电流是否超过额定值确认电感饱和电流是否足够优化PCB散热设计启动失败测量EN引脚电压是否高于1.5V检查输入电压是否在3V-18V范围内确认功率元件没有短路4.3 性能优化技巧轻载效率提升利用芯片的跳周期模式(Skip Mode)在软件中根据负载动态调整PWM频率瞬态响应改善在FB引脚添加适当的前馈电容(10pF-100pF)优化补偿网络参数噪声抑制在SW引脚添加RC缓冲电路(如100Ω100pF)使用屏蔽电感或改变开关频率避开敏感频段5. 实际应用案例扩展5.1 多路电压生成系统利用GD32VF103VBT6的多个定时器可以控制多个TPS61170实现不同电压输出// 三路独立电压控制 void set_multi_voltages(float v1, float v2, float v3) { set_output_voltage(TIMER0, v1); // 使用TIMER0控制第一路 set_output_voltage(TIMER1, v2); // 使用TIMER1控制第二路 set_output_voltage(TIMER2, v3); // 使用TIMER2控制第三路 }5.2 智能充电管理结合MCU的ADC功能可以实现智能充电控制void charging_management(void) { float battery_voltage read_adc(ADC_CH0) * 3.3f / 4096.0f * 11.0f; if(battery_voltage 12.6f) { // 恒流充电阶段 set_output_voltage(14.4f); } else { // 恒压充电阶段 set_output_voltage(13.8f); } }5.3 故障保护机制实现增强系统的可靠性void protection_monitor(void) { static uint32_t over_current_count 0; float current read_adc(ADC_CH1) * 3.3f / 4096.0f * 2.0f; // 假设2A/V if(current 1.5f) { over_current_count; if(over_current_count 10) { disable_power_output(); trigger_alarm(); } } else { over_current_count 0; } }在实际项目中这套方案成功应用在了工业传感器供电模块中将24V输入转换为±15V和5V多路输出系统转换效率达到91%输出电压纹波小于50mV完全满足精密测量电路的电源需求。