littlebot
Published on 2025-04-11 / 3 Visits
0

【源码】基于ChibiOS框架的USB PD智能电源接收系统

项目简介

本项目是基于ChibiOS框架开发的USB PD Sink(电源接收者)固件项目,应用于智能电源插座。该固件依托STM32F072微控制器运行,采用FUSB302B作为硬件层一部分,实现了USB PD协议,用户能通过命令行界面配置与监视设备。

项目的主要特性和功能

  1. 具备Setup和Sink双启动模式,可通过Setup按钮在启动时选择。
  2. 在Sink模式下实现简单的USB Power Delivery sink,遵循相关版本规范,能请求配置的电压和电流,必要时进行安全低功率请求,仅在合同达成时为输出连接器供电。
  3. 支持可选的GiveBack功能,允许电源临时切断PD Buddy Sink的电源。
  4. 可从可编程电源灵活请求电压,以20 mV增量在3 - 21 V宽范围请求,配置电压范围可作备用。
  5. 设备请求的电流量可设置为功率、电阻或电流,在配置电压范围内值恒定。
  6. Setup模式有兼容多系统的USB CDC - ACM命令行界面,可从闪存加载和存储配置,支持实时重新协商电压和电流,能控制输出启用或禁用。
  7. Setup模式下可借助PD Buddy Wye读取电源的广告功能。
  8. 结合微控制器内置的DfuSe引导加载程序,可在Setup模式下轻松进行固件升级。
  9. 通过LED状态指示设备的不同工作模式和状态。

安装使用步骤

编译环境准备

  1. 安装GNU ARM Embedded Toolchain
  2. 复制项目仓库: bash git clone --recursive http://git.clayhobbs.com/pd-buddy/pd-buddy-firmware.git

编译固件

bash cd pd-buddy-firmware make 编译后的固件位于build/pd-buddy-firmware.{bin,elf}

烧录固件

使用dfu-util

若从1.2.0之前版本升级或未安装固件,将PD Buddy Sink上的Boot开关(SW1)设到丝印未标记位置;无Boot开关可焊接SW1焊盘。从1.2.0或更高版本升级,在配置shell中运行PDBS) boot进入DFU模式。设备处于DFU模式时,状态LED微弱发光,执行以下命令烧录固件: bash dfu-util -a 0 -s 0x08000000:leave -D build/pd-buddy-firmware.bin 若有权限问题,尝试以root权限运行。烧录完成后,将开关设回正常模式或移除焊锡。

bash st-flash write build/pd-buddy-firmware.bin 0x8000000

使用OpenOCD

bash make flash-openocd-stlink

使用Black Magic Probe

bash make flash-bmp

设备配置与使用

  1. 配置设备:首次烧录后,按住“Setup”按钮插入计算机,LED每秒闪烁一次表示进入配置模式,可通过以下方式配置:
    • 串口终端:用GNU ScreenMinicomPuTTY等串口控制台程序连接设备,输入help查看可用命令。如配置设备请求20 V电压、2.25 A电流的命令: bash PDBS) set_v 20000 PDBS) set_i 2250 PDBS) write
    • GUI配置:使用PD Buddy Configuration GUI进行配置。
  2. 使用设备:配置完成后,将设备插入USB PD电源供应器。若电源能提供配置的电压和电流,设备协商成功后LED闪烁三次并开启输出;若电源功率不足,LED常亮且输出关闭。

注意:使用前确保安装必要工具链和驱动程序,熟悉USB PD协议。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】