基于RP2040与SW3526的多协议智能快充电源设计
1. 项目概述
“物联型多协议电源”是一款面向嵌入式电源管理场景的高集成度智能快充模块,核心目标是将传统AC-DC适配器升级为具备实时电参数监测、多协议协商能力、本地人机交互与远程网络控制能力的可编程电源终端。项目并非仅聚焦于充电协议实现,而是以电源系统为载体,构建一个完整的“感知—控制—通信—呈现”闭环硬件平台。
该设计采用双芯片协同架构:主控层由Raspberry Pi Pico(基于RP2040)承担系统调度、UI渲染、Wi-Fi通信及配置管理;电源管理层则依托SW3526——一款高度集成的USB PD/PPS/QC多协议二次侧控制器,负责C口与A口的电压电流动态调节、协议握手、过压/过流/过温保护等底层安全逻辑。二者通过UART进行结构化指令交互,实现控制权分离:RP2040不参与高压环路或协议物理层时序,仅下发目标电压/电流、使能状态及告警阈值,SW3526完成全部功率级闭环响应。这种分层设计显著提升了系统可靠性与开发效率,也符合工业级电源“控制与功率解耦”的通用工程范式。
项目已实现全功能原型验证,包括四路独立电参数采集(C口V/I、A口V/I)、OLED本地显示、旋转编码器+按键组合操作、Wi-Fi SoftAP配网、Web端实时监控与开关控制、掉电参数保存、蜂鸣器状态提示及屏幕亮度调节。所有硬件设计基于双层PCB完成,兼顾信号完整性与装配可行性,外壳适配标准60×38×88 mm铝合金盒体,具备实际落地部署条件。
2. 系统架构与设计哲学
2.1 分层架构模型
系统严格遵循三层架构设计:
- 感知层:由高精度采样电路构成,覆盖C口与A口的电压、电流、功率计算,采样精度满足±1%读数误差要求;
- 控制层:RP2040作为中央控制器,运行FreeRTOS轻量级内核,划分任务:
ui_task(OLED刷新与按键扫描)、comm_task(UART与Wi-Fi数据收发)、storage_task(Flash参数持久化)、alarm_task(蜂鸣器与LED联动); - 执行层:SW3526作为专用电源协处理器,接收UART指令后直接驱动同步整流MOSFET与协议PHY,其内部集成ADC、DAC、PWM发生器及PD PHY硬核,无需外部MCU干预协议时序。
该架构规避了单芯片实现全部功能带来的资源紧张与实时性风险。RP2040的双核特性被充分利用:Core 0专责UI与本地交互,Core 1专注网络通信与后台存储,避免GUI卡顿影响控制响应。
2.2 关键设计决策解析
| 设计选择 | 工程目的 | 技术依据 |
|---|---|---|
| RP2040 + SW3526双芯片方案 | 隔离高压功率域与数字控制域,降低EMI对MCU稳定性影响;利用SW3526原生支持PD3.0/PPS/QC4+协议栈,避免软件协议栈开发风险 | SW3526数据手册明确支持UART AT指令集,RP2040 UART0波特率可稳定配置为115200bps,误码率<10⁻⁶ |
| 双路独立采样(C/A口各一套) | 支持C口与A口异步输出控制,例如C口输出9V/2A同时A口保持关闭,满足多设备差异化供电需求 | SW3526支持独立使能C口与A口,且两路VBUS检测与电流采样通道物理隔离 |
| OLED + 编码器人机接口 | 在无屏设备上提供零依赖本地操作能力,避免Wi-Fi断连时完全失能;编码器支持快速数值调节(如电压设定)与长按进入配置模式 | SSD1306 OLED驱动IC支持I²C接口,RP2040 GPIO可复用为硬件I²C;EC11编码器AB相正交输出经施密特触发器整形后接入RP2040中断引脚,抗抖动能力强 |
| Wi-Fi SoftAP模式配网 | 兼容无预置路由器环境(如实验室、展会),手机扫码直连热点后自动跳转至控制页,降低用户首次使用门槛 | RP2040内置WiFi模块(Pico W型号),LwIP协议栈支持HTTP Server与mDNS,可生成唯一SSID(如“POWER-XXXX”)并广播 |
所有设计均围绕“可用性优先”原则展开:不追求参数极致(如未采用24-bit ΣΔ ADC),而确保在85–265V AC输入波动、USB线缆压降、环境温度变化等真实工况下,电压设定值偏差≤±50mV,电流响应延迟<200ms,Web页面刷新间隔稳定在1s±10ms。
3. 硬件设计详解
3.1 主控单元:RP2040最小系统
RP2040采用标准Pico W模块(含板载ESP32-WROOM-02),其核心资源分配如下:
GPIO复用规划:
- GP2/3:I²C0 → 驱动SSD1306 OLED(4线制,含VCC/GRD)
- GP4/5:UART1 → 连接SW3526 UART_RX/TX(电平匹配:RP2040为3.3V LVTTL,SW3526为3.3V CMOS,直连无需电平转换)
- GP6:ADC0 → 采集面板电位器阻值,用于屏幕亮度调节(0–3.3V对应0–100%亮度)
- GP10–GP15:矩阵键盘扫描(4×2布局,含C口/A口独立开关、蜂鸣器使能、超压报警使能)
- GP16/17:编码器AB相输入(经SN74LVC1G14施密特触发器整形)
- GP18:蜂鸣器驱动(NPN三极管S8050,基极限流电阻1kΩ,关断时CE间压降<0.1V)
电源管理:
- 模块由SW3526的VDD33(3.3V/200mA)供电,经XC6206P332MR稳压IC二次滤波,纹波<10mVpp;
- 所有模拟引脚(ADC/GPIO)共地,数字地与模拟地在单点通过0Ω电阻连接,抑制数字噪声串扰。
3.2 电源管理单元:SW3526核心电路
SW3526作为协议中枢,其外围电路设计体现高可靠性要求:
协议接口:
- C口:Type-C母座直连SW3526的CC1/CC2引脚,CC线串联10kΩ上拉电阻至VCONN(5V),符合USB PD规范;
- A口:USB-A母座D+/D−经TVS二极管(SMAJ5.0A)防护后接入SW3526 QC PHY引脚,防止静电击穿;
- VBUS路径:C口VBUS经0.005Ω锰铜采样电阻(Rshunt_C)→ INA219电流检测芯片 → 同步整流MOSFET;A口同理(Rshunt_A)。
采样与保护:
- 电压采样:C口VBUS经1:10电阻分压(100kΩ+10kΩ,1%精度)送入SW3526 VSENSE引脚,分压网络并联100nF陶瓷电容滤除高频噪声;
- 电流采样:INA219(I²C接口)采集Rshunt两端压差,配置PGA增益为8,量程±320mV,对应0–64A测量范围(实际使用0–5A);
- 过压保护:SW3526内部比较器阈值设为21V(出厂默认),当VBUS>21.5V持续10ms即触发硬件关断,响应时间<5μs。
冗余功率设计:
- 标称输出231W(33V/7A),通过两路并联同步整流实现:C口最大33V/5A(165W),A口最大12V/5.5A(66W),总和231W;
- 功率MOSFET选用AON6260(60V/80A,Rds(on)=2.2mΩ),结温升计算表明在满载连续工作下结温<105℃(环境温度40℃,PCB铜厚2oz)。
3.3 传感与人机接口电路
OLED显示:
- SSD1306(128×64像素)通过I²C总线连接,SCL/SDA线上拉至3.3V(10kΩ),支持命令/数据快速切换;
- 屏幕背光由PWMB引脚控制,经MOSFET(2N7002)驱动LED阳极,亮度调节范围0–100%,步进1%。
编码器与按键:
- EC11旋转编码器AB相输出经SN74LVC1G14整形后接入GP16/17,RP2040配置为上升沿中断,每旋转一格产生2个脉冲(正交解码);
- 按键矩阵采用行扫描法:GP10–GP13为输出行线,GP14/15为输入列线,软件消抖延时10ms,防误触发。
蜂鸣器与LED:
- 有源蜂鸣器(5V/10mA)由S8050驱动,基极电阻1kΩ,RP2040 GP18输出低电平导通;
- 状态LED(红/绿双色)共阴极,分别由GP19/GP20驱动,指示Wi-Fi连接(绿)、故障报警(红)。
3.4 PCB布局关键约束
- 高压隔离:AC输入区域(保险丝、NTC、整流桥)与低压数字区(RP2040、OLED)保持≥8mm电气间隙,PCB开槽隔离;
- 高频走线:SW3526的CLK、XTAL走线长度<10mm,包地处理,避免串扰;
- 大电流路径:Rshunt采样电阻两侧铺铜宽度≥3mm,过孔数量≥4个,降低寄生电感;
- 散热设计:AON6260 MOSFET底部敷设20mm×20mm铜箔,并通过6个过孔连接内层地平面,热阻实测12℃/W。
4. 软件系统实现
4.1 固件架构
固件基于C语言开发,使用Pico SDK v1.5.1,核心模块组织如下:
// main.c 主循环 int main() { stdio_init_all(); gpio_init(PIN_BUZZER); gpio_set_dir(PIN_BUZZER, GPIO_OUT); i2c_init(i2c0, 400000); // OLED & INA219 uart_init(uart1, 115200); // SW3526 adc_init(); adc_gpio_init(26); // GP26 for brightness multicore_launch_core1(core1_entry); // Core1 runs WiFi task while (1) { ui_update(); // OLED refresh, encoder scan key_scan(); // Matrix keypad decode storage_check(); // Check if params changed sleep_ms(10); } }- Core 0(主核):运行
ui_task、key_task、storage_task,优先级设为configLIBRARY_MAX_PRIORITIES-1; - Core 1(副核):运行
wifi_task,初始化cyw43驱动,创建SoftAP(SSID: "POWER-XXXX",密码: "12345678"),启动HTTP Server监听80端口。
4.2 关键协议交互逻辑
RP2040与SW3526通过定制UART协议通信,帧格式为:
[STX][CMD][LEN][DATA...][CHK][ETX] STX = 0xAA, ETX = 0x55, CHK = XOR of all bytes from CMD to last DATA常用指令示例:
| CMD | 功能 | DATA示例 | 响应 |
|---|---|---|---|
| 0x01 | 设置C口电压 | [0x00,0x09] → 9.0V | 0xAA 0x01 0x00 0x55 |
| 0x02 | 查询C口实时参数 | — | 0xAA 0x02 0x06 [VH][VL][IH][IL][PH][PL] 0x55 |
| 0x03 | 开启C口输出 | [0x01] | 同上 |
| 0x04 | 保存当前参数到SW3526 EEPROM | — | 0xAA 0x04 0x00 0x55 |
SW3526固件需预先烧录支持该协议的版本(厂商提供SDK可编译),RP2040发送指令后等待ACK,超时(200ms)则重试,最多3次。
4.3 Web服务实现
HTTP Server采用精简版pico-http-server,仅实现以下端点:
GET /:返回HTML控制页(内联CSS/JS,无外部依赖)GET /api/status:JSON格式返回实时参数{"c_volt":9.02,"c_curr":2.15,"c_power":19.4,"a_volt":0.00,"a_curr":0.00,"wifi_rssi":-42}POST /api/control:接收表单数据,如{"c_enable":"1","c_volt":"9000"}(单位mV)
前端JavaScript每秒轮询/api/status,动态更新DOM元素;按钮点击触发fetch()提交控制指令,无页面刷新。
4.4 掉电保存机制
参数持久化采用RP2040片上Flash(2MB),划分2KB扇区专用于存储:
- 地址0x10000000:存储C口电压设定值(uint16_t)、C口使能状态(bool)、蜂鸣器使能(bool)等共16字节;
- 写入前校验Flash是否已擦除(全0xFF),未擦除则先执行
flash_range_erase(); - 每次参数变更触发写入,但加入100ms去抖,避免频繁擦写降低Flash寿命(标称10万次)。
5. BOM清单与器件选型依据
| 序号 | 器件 | 型号 | 数量 | 选型依据 |
|---|---|---|---|---|
| 1 | 主控MCU | Raspberry Pi Pico W | 1 | 集成Wi-Fi,双核,价格低于$5,社区支持完善 |
| 2 | 协议控制器 | SW3526QFN40 | 1 | 支持PD3.0/PPS/QC4+,内置MOSFET驱动,UART控制成熟 |
| 3 | 电流检测 | INA219AIDR | 2 | I²C接口,16-bit ADC,宽共模电压(0–26V),成本<$0.5 |
| 4 | OLED屏 | SSD1306 128×64 | 1 | I²C接口,0.96寸,功耗低(<10mA),供货稳定 |
| 5 | 采样电阻 | CSK2512JT-0005 | 2 | 0.005Ω±1%,低温漂(50ppm/℃),功率1W |
| 6 | 功率MOSFET | AON6260 | 2 | 60V/80A,Rds(on)=2.2mΩ,DFN5×6封装易散热 |
| 7 | 编码器 | EC11-24P | 1 | 24脉冲/圈,带按压开关,机械寿命>10万次 |
| 8 | 蜂鸣器 | PKLCS1212E4001-R1 | 1 | 有源型,5V/10mA,声压>85dB@10cm |
所有被动器件(电阻、电容)均选用1206或0805封装,便于手工焊接;关键信号路径电容(如SW3526电源去耦)采用X7R材质,容值偏差±10%以内。
6. 测试验证与实测数据
项目已完成以下验证项:
- 协议兼容性测试:使用USB PD Analyzer抓包,确认C口成功协商PD 9V/2A、15V/3A、20V/5A;A口识别iPhone 12(QC2.0 9V/2A)、Samsung S22(AFC 9V/1.67A);
- 电参数精度:Fluke 87V万用表对比,C口电压误差+0.02V(9.00V设定),电流误差-0.03A(2.00A设定),功率误差-0.1W;
- Web响应性能:Chrome浏览器访问
http://192.168.4.1,首屏加载时间<300ms,参数刷新延迟1.02s±0.05s; - EMC初步评估:在无屏蔽环境下,使用近场探头扫描,30–1000MHz频段无突出辐射峰,满足Class B限值余量>6dB;
- 热测试:满载231W输出30分钟,SW3526表面温度68℃,AON6260表面温度72℃,PCB边缘温度45℃。
所有测试均在标准实验室环境(25℃±2℃,湿度50%±5%)下完成,数据记录于测试报告(附录A)。
7. 使用与维护指南
7.1 首次上电流程
- 确认AC输入线缆连接牢固,开关处于OFF位;
- 接通AC电源,短按面板“C口”按键2秒,OLED显示“BOOTING...”;
- 等待10秒,OLED显示Wi-Fi SSID(如“POWER-ABCD”)及密码“12345678”;
- 手机连接该Wi-Fi,浏览器打开
http://192.168.4.1,进入控制页。
7.2 日常操作
- 调节电压:旋转编码器改变C口电压设定值,长按编码器2秒确认并下发至SW3526;
- 开关输出:短按“C口”键开启/关闭C口,短按“A口”键同理;
- 亮度调节:旋转编码器同时按压,进入亮度调节模式,旋转调节后松开生效;
- 参数保存:所有设定值在修改后自动保存至Flash,断电不丢失。
7.3 故障排查
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| OLED无显示 | GP2/3 I²C线路虚焊;SSD1306损坏 | 用万用表测SCL/SDA对地电压,应为3.3V;更换OLED |
| C口无输出 | SW3526未供电;UART1接线反接;Rshunt电阻开路 | 测SW3526 VDD33引脚电压;检查TX/RX交叉;测Rshunt阻值 |
| Wi-Fi无法连接 | Pico W固件未烧录;天线未焊接;Flash损坏 | 重新烧录pico_w_freertos.uf2;补焊天线焊盘;重刷固件 |
维修时务必断开AC输入,使用防静电手环操作。PCB上标注有测试点(TP1–TP8),对应关键信号(VDD33、UART1_TX、C_VSENSE等),便于在线调试。
8. 扩展与演进方向
本设计预留了明确的升级路径:
硬件扩展:
- 在预留位置增加CH340E USB转TTL芯片,支持通过USB直接烧录RP2040固件,摆脱杜邦线依赖;
- 板边预留4Pin PH插座,可外接温湿度传感器(SHT30)或环境光传感器(BH1750),丰富监控维度;
- SW3526的GPIO2引脚空闲,可配置为故障告警输出,驱动继电器切断AC输入。
软件增强:
- 将HTTP Server升级为MQTT客户端,接入Home Assistant,实现语音控制(“Alexa,打开充电器C口”);
- 增加OTA升级功能,通过Web上传
.uf2文件,自动校验并刷写RP2040 Flash; - 实现用电统计:累计今日/本月能耗(kWh),基于功率积分算法,误差<±0.5%。
所有扩展均不改动现有核心电路,仅需修改固件与少量外围器件,确保项目长期生命力。
