立创开源手撕USB可调电源V5:基于HC32F334的Buck-Boost电源设计与PD/QC协议实现
立创开源手撕USB可调电源V5从零打造你的Buck-Boost电源最近在捣鼓一个便携的调试电源市面上的成品要么太贵要么功能不满足需求。于是我花了差不多一年的时间从零开始“手搓”了一个功能强大的USB可调电源。它不仅能从普通的USB充电器取电还能通过PD/QC协议“诱骗”出最高20V的电压然后经过我设计的Buck-Boost电路输出0.4V到36V宽范围可调的电压最大电流能达到5A。最关键的是这个项目的软硬件全部开源如果你也对开关电源设计、单片机控制特别是小华半导体的HC32F334以及USB快充协议感兴趣想亲手做一个属于自己的实验室电源那这篇教程就是为你准备的。我会带你一步步理解这个项目的核心设计思路和实现方法。1. 项目概览它到底能干什么简单来说这个项目就是一个高度自主、功能强大的可编程直流电源。咱们先看看它的核心能力宽范围可调输出输出电压可以从0.4V 到 36V连续调节输出电流最大5A并且限流值可以在10mA 到 5A之间设置。这意味着它既能给3.3V的单片机供电也能给12V的电机或者24V的灯带供电非常灵活。智能协议诱骗支持USB PD 3.0和QC 2.0快充协议。当你插上一个支持快充的充电宝或充电器时它能自动协商让充电器输出5V、9V、12V、15V 或 20V的电压作为整个系统的输入电源。这样你就不需要专门找一个20V的电源适配器了一个普通的氮化镓充电头就能搞定。实时监控与交互通过一块2.8寸的TFT屏幕或者连接上位机软件可以实时看到输入电压、输出电压和电流。调节电压和电流限值只需要拧一个旋转编码器就像调节音响音量那样或者在电脑上设置即可非常方便。强大的扩展性硬件上已经预留了蓝牙和Wi-Fi模块的位置后续通过软件升级就能实现无线控制、手机小程序监控等更多玩法。整个系统分为三块核心板卡协议板基于CH543单片机负责与USB充电器“谈判”获取合适的输入电压。功率板基于HC32F334单片机这是大脑负责控制Buck-Boost电路实现精准的电压转换和限流。显示/交互板负责驱动屏幕、处理编码器按键并预留了无线通信接口。2. 核心原理Buck-Boost是如何工作的这个电源最核心的部分就是Buck-Boost 拓扑电路。你可以把它理解为一个“电压魔术师”无论输入电压比输出电压高还是低它都能变出你想要的电压。2.1 四种工作模式为了实现从0.4V到36V的全范围调节并且保证高效率我的设计里让电路在四种模式下智能切换Buck模式降压模式何时启用当输入电压比输出电压高1V以上时。比如输入是20V你要输出5V。怎么工作此时电路主要作为一个降压器Buck工作。Boost那边的高侧MOS管只需要一个很小的占空比固定4%维持自举电容充电真正调节输出电压的是Buck这边的PWM占空比。Boost模式升压模式何时启用当输入电压比输出电压低1.2V左右时。比如输入是9V你要输出12V。怎么工作此时电路主要作为一个升压器Boost工作。Buck那边固定输出最小占空比4%调节输出电压靠的是Boost这边的PWM占空比。Buck-Boost混合模式 当输入和输出电压非常接近时单纯用Buck或Boost效率不高控制也不稳定。所以设计了两种混合模式Mix-UP模式当输入电压略低于输出电压差值在1V以内。这时固定Buck端占空比为85%通过调节Boost端来稳定输出。Mix-DW模式当输入电压略高于输出电压差值在0.2V~1V以内。这时固定Boost端占空比为14%通过调节Buck端来稳定输出。注意这里提到的1V、1.2V等阈值是为了实现模式平滑切换而设置的滞回区间防止电压在临界点附近时模式频繁跳动。2.2 控制核心增量式PI算法电源要稳定不能输出电压忽高忽低。这就需要闭环控制。我采用的是增量式PI控制器。你可以把它想象成一个智能的空调遥控器目标设定值你设定的房间温度比如26°C。现状反馈值温度传感器测得的当前室温。PI控制器比较目标温度和当前温度计算出“误差”。然后根据这个误差的大小比例P和持续的时间积分I决定把空调风力调大还是调小控制量。执行器空调压缩机对应我们的PWM波。在这个电源里我们有两个这样的“空调遥控器”电压环PI目标是让输出电压紧紧跟随你设定的电压值。电流环PI目标是让输出电流不超过你设定的限流值。控制器计算出的“控制量”最终会被映射成PWM波的占空比去驱动MOS管开关从而精确控制输出电压/电流。2.3 高效的数据搬运DMA为了实时监控电压和电流我们需要频繁地进行ADC模数转换采样。如果每次采样都让CPU去读取数据会占用大量计算资源。这里我用到了DMA直接存储器访问。DMA就像一个勤快的搬运工可以独立于CPU工作。我配置好ADC和DMA后ADC每转换完一次数据DMA就自动把这个数据搬运到内存中指定的数组里。CPU只需要定期去检查这个数组里的数据就行了大大提高了系统效率。3. 快充协议如何“诱骗”——CH543的作用想让普通的USB充电器输出20V需要和它进行“通信”。这就是协议板上的CH543单片机的工作。CH543是一颗专门用于USB充电协议的MCU它内部集成了PD协议的物理层PHY我们只需要在它上面实现协议层的代码即可。我把协议栈分成了三层来理解物理层硬件引脚电平。对于QC协议就是控制D和D-引脚上的特定电压0.6V, 3.3V等来触发充电器升压。对于PD协议则是通过CC引脚使用BMC双相标记编码协议进行单线通信。协议层我手写的代码实现了PD和QC协议的状态机。它按照协议规范与充电器进行报文交互最终协商出一个双方都支持的电压如20V。应用层协议协商成功后CH543会通过I2C总线将获取到的输入电压信息告诉主控MCUHC32F334以便进行后续的Buck-Boost控制。这样做的好处是自主性强以后想支持新的协议比如UFCS只需要修改协议层的代码即可。4. 动手实战硬件组装与固件下载理论讲完了咱们来看看怎么把它做出来。所有开源文件原理图、PCB、代码都可以在文章末尾的链接里找到。4.1 硬件组装这个项目主要由两块PCB构成功率板包含HC32F334主控、Buck-Boost功率电路、采样电路等。显示板包含屏幕、旋转编码器、无线模块接口等。你需要准备一些结构件来固定它们亚克力前面板和后面板各1片。三种不同高度的铜柱M3规格各4颗用于分层固定板子。M3螺丝8颗。一条FPC软排线连接功率板和显示板。按照3D结构图用铜柱和螺丝将两块PCB和亚克力板组装起来即可。4.2 给三个MCU下载程序这是最关键的一步三个芯片都需要烧录固件。1. 主控MCU (HC32F334) 下载工具使用小华半导体官方的ISP下载工具HC32F334-固件下载工具.zip。接线需要一个USB转串口TTL电平工具。连接方式如下USB转串口的TX接 板子的PA9 (UART0_RX)USB转串口的RX接 板子的PA10 (UART0_TX)USB转串口的GND接 板子的GND进入下载模式给板子上电后短接一下板子上标注的NRST和GND测试点短接后立即松开MCU就会复位进入ISP模式。操作在工具中选择正确的串口号设置波特率建议115200或更低加载buck-boost-HC32F334-V1.3.hex文件点击下载即可。2. 协议MCU (CH543) 下载工具沁恒的CH543 ISP工具CH543-ISP-下载工具.zip。接线最简单直接用一根USB-C线连接协议板和电脑。进入下载模式如果芯片是全新的无需任何操作插上USB工具就能识别。如果芯片里已有旧程序则需要持续短接板子上的3V3和PD_UPG测试点直到下载完成。操作工具识别到设备后选择open-pd-ch543仓库里编译生成的.hex文件点击下载。3. 显示MCU (W800) 下载工具联盛德W800的下载工具W800-固件下载工具.rar。接线同样使用USB转串口工具。USB转串口的TX接 板子的W_RXUSB转串口的RX接 板子的W_TXUSB转串口的GND接 板子的GND进入下载模式首先短接板子上的W_BOOT和GND测试点下载期间保持短接。然后短接一下W_RST和GND测试点并松开使其复位进入下载模式。操作在工具中选择串口波特率设置为115200最稳妥加载w800_usr_app_v1.3.fls文件开始下载。提示下载时如果遇到问题首先检查串口号是否正确其次尝试降低波特率最后确认测试点短接操作无误。5. 如何使用旋转编码器的妙用硬件组装好程序也下载完了怎么用呢整个设备只有一个旋转编码器作为输入设备但通过不同的按键逻辑实现了所有功能。旋转编码器有三个动作顺时针旋转 (CW)、逆时针旋转 (CCW)、按下 (CENTER)。基本操作逻辑如下开机上电后屏幕会显示当前输入、输出电压和电流。使能设置双击编码器中间键CENTER此时输出电压或电流限值会有一个框框选中表示可以调节。切换调节对象在设置使能状态下再次双击中间键可以在“调节电压”和“调节电流限值”之间切换。调节数值顺时针旋转 (CW)增加数值逆时针旋转 (CCW)减少数值。开关输出单击编码器中间键可以打开或关闭电源输出。退出设置调节完毕后长按中间键可以退出设置模式。这个交互逻辑非常直观稍加熟悉就能盲操作。6. 开源资源与后续这个项目所有的代码和设计文件都已开源你可以直接拿来学习、修改甚至生产。HC32F334主控软件https://gitee.com/Bryan_He/open-buck-boost-v5-hc32f334.gitCH543协议软件https://gitee.com/Bryan_He/open-pd-ch543.gitW800显示/无线软件https://gitee.com/Bryan_He/open-w800-bt-wifi.gitSquareline Studio UI工程https://gitee.com/Bryan_He/usb-ps-v5-sqline-prj.git项目演示视频【手撕USB可调电源-V5】这个项目从电路拓扑、控制算法到协议栈都是我自己一步步实现的过程中踩了不少坑也学到了很多东西。比如模式切换的逻辑、PI参数的整定、ADC采样的抗干扰等等。希望这个开源项目能成为一个很好的学习平台无论是想深入研究开关电源还是想学习HC32F334、USB PD协议都能从中找到有价值的参考。后续我还会更新软件加入蓝牙和Wi-Fi的远程控制功能让这个电源变得更智能。

相关新闻

Nano-Banana实战教程:为盲文打印机生成凸点阵列+驱动电路分解示意图

Nano-Banana实战教程:为盲文打印机生成凸点阵列+驱动电路分解示意图

Nano-Banana实战教程:为盲文打印机生成凸点阵列驱动电路分解示意图 1. 引言:让技术之美触手可及 想象一下,你面前有一台精密的盲文打印机,内部结构复杂得让人眼花缭乱。传统的技术文档往往使用枯燥的文字描述和简单的二维图纸&a…

2026/5/17 11:42:44 阅读更多 →
Qwen3-32B效果展示:320亿参数模型,实测生成能力有多强

Qwen3-32B效果展示:320亿参数模型,实测生成能力有多强

Qwen3-32B效果展示:320亿参数模型,实测生成能力有多强 最近,一个名字在技术圈里被频繁提起——Qwen3-32B。作为通义千问家族的最新成员,这个拥有320亿参数的“大家伙”到底表现如何?是名副其实的性能怪兽,…

2026/7/2 20:22:37 阅读更多 →
lychee-rerank-mm实战教程:构建CLI命令行工具支持非GUI环境批量重排序

lychee-rerank-mm实战教程:构建CLI命令行工具支持非GUI环境批量重排序

lychee-rerank-mm实战教程:构建CLI命令行工具支持非GUI环境批量重排序 1. 项目背景与核心价值 lychee-rerank-mm是一个基于Qwen2.5-VL多模态大模型和Lychee-rerank-mm重排序模型的智能图文相关性分析系统。这个系统专门为RTX 4090显卡优化,能够对批量图…

2026/5/17 11:42:43 阅读更多 →

最新新闻

如何轻松解密DRM加密视频:Video Decrypter完整操作指南

如何轻松解密DRM加密视频:Video Decrypter完整操作指南

如何轻松解密DRM加密视频:Video Decrypter完整操作指南 【免费下载链接】video_decrypter Decrypt video from a streaming site with MPEG-DASH Widevine DRM encryption. 项目地址: https://gitcode.com/gh_mirrors/vi/video_decrypter 还在为无法保存喜欢…

2026/7/3 22:23:58 阅读更多 →
Text-to-CAD UI终极指南:如何用一句话生成专业3D模型

Text-to-CAD UI终极指南:如何用一句话生成专业3D模型

Text-to-CAD UI终极指南:如何用一句话生成专业3D模型 【免费下载链接】text-to-cad-ui A lightweight UI for interacting with the Zoo Text-to-CAD API. 项目地址: https://gitcode.com/gh_mirrors/te/text-to-cad-ui 你是否曾经因为不会使用复杂的CAD软件…

2026/7/3 22:23:58 阅读更多 →
深入pytest_collection_modifyitems钩子:定制化测试用例执行与调度

深入pytest_collection_modifyitems钩子:定制化测试用例执行与调度

1. 项目概述如果你在用pytest做自动化测试,尤其是项目规模稍微大一点,或者对测试报告、用例执行顺序有特殊要求时,你大概率会碰到一个绕不开的“神器”——pytest_collection_modifyitems钩子函数。我第一次深入使用它,是因为一个…

2026/7/3 22:17:57 阅读更多 →
DVWA从入门到精通(八):SQL Injection(SQL注入)

DVWA从入门到精通(八):SQL Injection(SQL注入)

摘要:本文是《DVWA从入门到精通》系列的第八篇,带你全面掌握SQL Injection(SQL注入)模块的攻防全流程。从SQL注入的核心原理出发,逐步讲解Low、Medium、High三个级别的攻击手法与源码分析,并深入探讨Imposs…

2026/7/3 22:17:57 阅读更多 →
基于PIC18F4685与KMR221的高精度电压管理系统设计

基于PIC18F4685与KMR221的高精度电压管理系统设计

1. 项目概述:基于KMR221与PIC18F4685的电压管理系统在嵌入式系统设计中,精确的电压管理一直是硬件工程师面临的挑战。传统方案往往需要复杂的分立元件组合,而现代微控制器与专用电源管理芯片的协同工作正在改变这一局面。这次我要分享的&…

2026/7/3 22:15:57 阅读更多 →
【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案 1. 问题描述 在自己动手用 Anthropic Messages API 搭建 Agent Harness、实现多轮工具调用循环时,很多人会在某一次请求时遇到这样的 400 错误: {"type": "error&qu…

2026/7/3 22:13:56 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻