ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

开源USB-C PD分析仪与可编程Sink:协议解析与诱骗取电实战

开源USB-C PD分析仪与可编程Sink:协议解析与诱骗取电实战 在调试 USB-C 充电器、快充协议兼容性或者嵌入式电源方案时很多开发者会遇到一个尴尬的局面手边有支持 PD 的笔记本电源但不知道它实际输出了多少伏想做一个受电设备又不想直接焊一块 Type-C 母座然后用固定电阻去诱骗。更常见的场景是明明接上了设备充电却没有反应只能用万用表量电压却看不到 CC 线上到底协商了什么。近期有人在 Hacker News 上分享了他们做的一个开源 USB-C Power Delivery analyzer 和 programmable sink 项目把“协议分析”和“可编程受电”两件事合到了一起。这类工具非常适合电源工程师、嵌入式开发者和搞硬件 DIY 的玩家使用。本文会从 USB-C PD 的基础概念讲起再拆解分析仪和可编程 sink 的设计思路然后给出一套从串口控制、电压请求到异常排查的完整实战流程。即使不是硬件专业出身只要有过一点 MCU 开发或电路调试经验也能照着思路把工具用起来。如果打算自己复刻一个开源 PD 分析仪这篇文章同样可以作为需求分析和方案选型参考。1. USB-C 与 Power Delivery 基础1.1 USB-C 接口的“不简单”USB-C 接口在物理上只有一个口但它的能力远不止传输数据。一个 USB-C 口可以承载 USB 2.0、USB 3.x、DisplayPort、Thunderbolt、音频附件模式以及高至 100W、甚至 240W 的电力传输。这么多功能和引脚复用决定了它不能像传统 Micro-USB 那样“插上就供电”。在 USB-C 连接中默认情况下 DFP下行端口可以理解为供电方通过 CC 引脚上的上拉电阻来表明自己能供电UFP上行端口受电方则通过下拉电阻表明自己是受电方。CC 引脚在这里承担了角色检测、线缆方向检测和后续 PD 通信的物理通道。也就是说USB-C 的供电并不是简单的 VBUS 直接输出而是要先经过一个“握手”过程。这也是为什么很多开发者第一次用 USB-C 做电源时以为只要把 VBUS、GND、CC 都连上就能得到 5V。事实上如果 DFP 没有检测到 UFP 的下拉电阻或者根本没有启用 DFP 模式VBUS 可能完全不输出。理解这一层后面再看分析仪和行为逻辑就清晰了很多。1.2 PD 协议是如何协商电压的Power DeliveryPD是在 CC 引脚上通过 BMC 编码方式传输的一种双向通信协议。它让供电方和受电方之间能够协商出一组电压、电流组合。最常见的协商流程是供电方上电后会周期性发送Source Capabilities消息里面列出自己支持的所有 PDOPower Data Object比如 5V/3A、9V/3A、15V/3A、20V/5A 等。受电方收到后从中选择一个 PDO并向供电方发送Request消息。供电方接受后回复Accept然后切换电源输出到新的电压再发送PS_RDY表示输出稳定。受电方收到PS_RDY后就可以在高压下正常运行。这个过程非常快通常只有几十到几百毫秒。如果中间任何一个消息丢失、解析错误或者受电方请求了一个不存在的 PDO供电方就会拒绝切换甚至保持在 5V 默认输出。这正是实际测试中“充不进去电”或者“只有 5V”的常见原因。1.3 分析仪与可编程 Sink 的分工在这样一个通信过程中分析仪Analyzer和可编程 SinkProgrammable Sink是两个定位不同的工具。分析仪通常串联在供电方和受电方之间或者并联在 CC 线上监听双方交互的 PD 报文。它不一定要真正参与协商但可以记录每一帧消息、时间戳和电压电流变化。它解决的是“看不见”的问题。可编程 Sink 则是模拟一个受电方主动向供电方请求电压。它可以替代一个具体的设备灵活选择 5V、9V、15V、20V甚至动态调整 PPS 电压。它解决的是“不可控”的问题。把两者结合到一起就是一个既能监听协议、又能主动发起请求的调试工具。很多开源项目采用这种方式FPGA 偏重、MCU 偏软、逻辑分析仪偏抓取各有取舍。2. 开源分析仪与可编程 Sink 的定位2.1 它能解决什么问题在消费电子电源测试、嵌入式设备供电验证、充电器兼容性测试中最大的痛点往往不是缺少电源而是缺少对电源行为细节的可见性。举个例子某个 Type-C 接口在插入后不稳定有时候能上 20V有时候只有 5V。用万用表只能看到最终电压看不到 CC 线上曾经发生了什么。这时候一个能解析 PD 报文的分析仪就能发挥作用它能告诉你供电方发出了哪些 Source Capabilities受电方请求了什么供电方是 Accept 还是 Reject以及整个协商耗时的状态变化。可编程 Sink 则适合另一类场景你设计了一个需要 12V/3A 的嵌入式设备但没有配套的 DC 电源希望用现成的 USB-C 氮化镓充电器供电。由于标准 PDO 通常只有 5V/9V/15V/20V不一定有 12V这时可以通过支持 PPS 的可编程 Sink 请求 12V。虽然充电器不一定支持但如果支持输出精度通常可以做到 20mV 步进。2.2 典型硬件组成一个典型的开源 USB-C PD 分析仪和可编程 Sink 项目通常由以下几部分构成MCU 主控例如 RP2040、ESP32、STM32负责协议解析、状态机控制和交互逻辑。USB-C PD 控制器例如 FUSB302 或类似 TCPC 芯片负责 CC 引脚上的物理层收发。电流电压采样例如 INA226 或者电阻分压加 ADC用于测量 VBUS 输出。负载或电子负载如果要做输出能力测试可能还需要恒流或恒功率负载。显示屏或上位机接口常见是 OLED 屏幕、串口或 USB HID 接口用于查看协议数据。这些器件在开源社区中非常常见也容易采购。不同项目的差异主要体现在协议栈的完整程度、采样精度、上位机软件丰富度以及是否支持 PPS 等高级功能。2.3 开源项目带来的可扩展性开源的价值不只是“免费”更在于你可以修改协议处理逻辑、增加自动测试脚本、适配自己的自动化测量环境。商业分析仪通常很贵而且固件封闭想让它按照你的测试序列自动切换电压会非常困难。而开源项目通常会把固件、硬件原理图、上位机 SDK 一起公开。你可以根据自己的需求对命令协议进行扩展比如增加“请求 5V 后保持 10 秒”“读取当前电压电流”“打印收到 Source Capabilities”等接口再结合 Python 脚本实现批量测试。当然开源也意味着风险很多项目只经过了作者自己的验证硬件版本、器件参数、固件协议都可能存在差异。因此在二次开发时一定要先确认项目文档、原理图和 BOM 清单最好能自己在面包板或 PCB 上验证。3. 环境准备与硬件搭建3.1 硬件清单在开始之前先明确我们要准备哪些硬件。以下不是某一个具体项目的完整 BOM而是一套通用的最小参考配置。一个支持 USB-C PD 的电源适配器优先选择带 PPS 的 GaN 充电器。一块开源 USB-C PD 分析仪/可编程 Sink 开发板或者你准备自行焊接的模块。USB 转串口模块例如 CH340、CP2102用于连接 MCU 和上位机。一组 USB-C 线缆建议准备支持 E-Marker 的 5A 线缆和普通 3A 线缆各一根。直流电流表或万用表用于交叉验证电压电流测量是否准确。一个简单的电阻负载或电子负载用于测试受电后的持续输出能力。版本方面需要根据你的项目实际情况调整。本文示例以常见环境为例重点演示配置思路不针对某个具体硬件版本。不同 MCU 的编译环境、串口协议、默认波特率都可能不同请以你手中的设备文档为准。3.2 软件环境如果你使用开发板本身的串口命令那么只需要一个支持串口的上位机工具例如 minicom、PuTTY、screen或者直接用 Python 写脚本。对于 MCU 固件开发可能需要以下之一Raspberry Pi Pico / RP2040使用 C SDK 或 MicroPython。ESP32使用 ESP-IDF 或 Arduino。STM32使用 STM32CubeMX HAL 库。如果你计划用逻辑分析仪看 CC 引脚上的 BMC 信号可以准备 Sigrok PulseView 或者对应厂商提供的软件。PD 报文的解析不一定自带必要时需要结合协议手册手动分析。Python 脚本控制示例中我会使用pyserial这个库。安装非常简单pip install pyserial需要强调不同开源设备使用的串口命令可能完全不同。下面代码只是演示“如何与一个假设的设备通信”实际使用时请根据设备的 README 或源码中的命令定义修改。3.3 接线说明分析仪和可编程 Sink 的接线一般有两条路径路径一电源适配器 → 分析仪/可编程 Sink 的 USB-C 输入口 → 负载或被测设备。路径二分析仪监听 CC 信号但 VBUS 不经过分析仪。这种方式对原有供电链路影响更小适合纯协议分析。如果你的开发板同时带有负载输出口通常会在板子上标注 VBUS、GND、CC1、CC2 测试点。调试时要特别小心不要用普通杜邦线去碰没做绝缘处理的 20V 高压部分尤其是电流较大时接触不良会产生火花和热量。4. PD 协议核心机制拆解4.1 CC 引脚与角色定义在 USB-C 中CC1 和 CC2 是两个关键引脚。它们既用于检测连接方向也用于传输 BMC 信号。设备插入时DFP 在某个 CC 引脚上检测到下拉电阻就能判断插入方向同时决定在哪个引脚上发送数据。默认的 5V 供电模式其实可以不经过 PD 报文协商只要 CC 检测到正确的电阻VBUS 就会输出 5V。但如果想获得更高的电压就必须进入 PD 协商流程。也就是说PD 协商是建立在 CC 检测成功基础上的。分析仪在监听时需要同时接触 CC1、CC2 和 GND。对于某些带有插座的开发板它会自动完成信号切换不需要你手动判断方向。这也是独立分析仪相比自己用逻辑分析仪抓引脚的方便之处。4.2 从 Source Capabilities 到 Request 的协商流程PD 协商中最核心的步骤可以拆成四步供电方发送Source Capabilities携带全部可用 PDO 列表。受电方解析列表选择一个 PDO 或 APDO。受电方发送Request指定需要请求的 PDO 编号以及期望电流。供电方回复Accept或Reject如果接受则调整电源输出并发送PS_RDY。在分析工具的日志中我们可以清晰看到这些消息的往返顺序。如果看不到Accept说明供电方拒绝了请求常见原因是请求了不存在的 PDO。如果看到Reject可能是该充电器在特定输入状态下限流也可能是因为请求电压低于最小 PPS 电压。可编程 Sink 的项目价值就在于它可以把这个协商过程完全暴露出来并允许用户指定请求参数。你可以测试不同的请求组合观察充电器如何响应。4.3 PPS 与可编程电源PPSProgrammable Power Supply是 USB PD 3.0 的一个重要特性。与固定 PDO 只能从几个挡位中选择不同PPS APDO 允许受电方在指定范围内以很小的步进调整电压。比如一个支持的 PPS 区间是 3.3V 到 21V步进 20mV那么理论上我们可以请求 5.12V 或 12.34V 这样的中间档位。PPS 对电池直充和需要精确电压的嵌入式系统非常有价值。它相当于把充电器的输出电压变成了一个可编程的线性电源。可编程 Sink 在做 PPS 请求时通常需要发送两个值目标电压和目标电流。由于 PPS 电压是连续可调协商流程也会稍有不同部分充电器可能支持动态调压指令允许在不重新协商的情况下微调电压。要注意的是PPS 不是所有充电器都支持。如果你购买的设备只支持固定 PDO那么请求一个非标准电压会被拒绝。在调试时应该先把充电器支持的 PDO 列表完整读出来再选择合适的目标电压。4.4 抓包与报文解析所谓“抓包”就是捕获 CC 引脚上所有 PD 报文并解析成人类可读的消息。最简单的分析仪实现逻辑是MCU 持续监听 CC 上的数据检测到有效前导码后按 BMC 解码得到数据包再根据字节内容解析消息头、对象数量、CRC 和扩展头等字段。由于 PD 报文时间间隔很短要对捕获到的报文做时间戳记录和排序。开源上位机通常会把消息列表显示为[12.345678] Source Capabilities PDO1: 5V/3A Fixed PDO2: 9V/3A Fixed PDO3: 15V/3A Fixed PDO4: 20V/5A Fixed [12.345690] Request PDO: 3 Operating Current: 3A [12.345712] Accept [12.346008] PS_RDY这种日志就是排查充电问题的最直接依据。如果分析仪上位机提供了图形化界面通常还会显示电压曲线和电流曲线方便观察动态切换过程。5. 实战让可编程 Sink 完成诱骗取电5.1 通过串口控制 Sink很多开源可编程 Sink 会提供一个简单的串口命令行交互方式。连接的端口和波特率通常在项目文档里写明。这里假设设备串口是/dev/ttyUSB0波特率是 115200命令采用文本形式。先写一个最小读取程序获取设备状态import serial import time ser serial.Serial( port/dev/ttyUSB0, baudrate115200, timeout1 ) time.sleep(0.2) ser.write(bGET STATUS\r\n) response ser.read(256) print(response.decode(errorsreplace)) ser.close()如果设备正常返回你可能会看到类似Sink 1: 5.00V/0.00A的文本。这表示设备已经作为受电方接入但目前只请求了默认 5V。如果没有输出先检查串口设备名、波特率以及 USB 转串口模块的驱动是否正确。需要注意有些设备使用二进制协议而不是文本命令这时就不能用简单字符串发送。你需要根据协议文档构造字节流并计算校验和。本文中的示例只是演示串口交互的基本思路不能直接照搬到所有设备上。5.2 解析 Source Capabilities要请求合适的电压首先要让 Sink 把收到的 Source Capabilities 列表返回给上位机。继续沿用文本命令假设import serial import re def read_source_caps(ser): ser.write(bGET SOURCE_CAPS\r\n) data ser.read(1024).decode(errorsreplace) print(data) return data ser serial.Serial(/dev/ttyUSB0, 115200, timeout1) caps read_source_caps(ser) ser.close()如果设备支持 JSON 输出解析会更方便。例如返回{pdo_count:4,pdo_list:[{voltage:5,current:3},{voltage:9,current:3},{voltage:15,current:3},{voltage:20,current:5}]}这时可以用 Python 的json模块直接解析import json caps_json json.loads(caps) for idx, pdo in enumerate(caps_json[pdo_list], start1): print(fPDO{idx}: {pdo[voltage]}V/{pdo[current]}A)解析出列表后你就能知道当前充电器支持的最高电压。很多开源 Sink 会把固定的PPS 区间也显示出来但为了简洁这里不做展开。5.3 请求指定电压假设我们已经从列表中选择了一个可用电压例如 20V/5A。接下来向 Sink 发送请求命令。仍然延用文本命令假设import serial import time def request_pdo(ser, voltage): cmd fSET_PDO {voltage:.2f}\r\n.encode(ascii) ser.write(cmd) time.sleep(0.3) ack ser.read(128).decode(errorsreplace).strip() if OK in ack.upper(): print(f请求 {voltage}V 成功) else: print(f请求失败返回{ack}) ser serial.Serial(/dev/ttyUSB0, 115200, timeout1) request_pdo(ser, 20.0) ser.close()真实设备中的命令格式可能完全不同可能是VOUT20.0也可能是request 3直接按 PDO 编号请求。核心思路是先读列表再按编号或电压请求最后检查设备返回的确认信息。如果你想要 PPS 精确调压例如请求 12.34V命令可能变得不同。有些设备需要先进入 PPS 模式再设置电压和电流上限。不要盲目在固定 PDO 设备上尝试 PPS 请求否则容易触发保护。5.4 自动化测试场景扩展可编程 Sink 最大的价值是可以和其他测试脚本联动。我们可以编写一个简单的自动化流程插入电源。读取全部 PDO。依次请求 5V、9V、15V、20V。每一档读取 VBUS 电压和电流校验输出是否在允许误差内。记录日志并生成测试报告。示例代码如下仍然假设设备命令格式为SET_PDOimport serial import time import csv def read_vbus(ser): ser.write(bGET VBUS\r\n) line ser.readline().decode(errorsreplace).strip() # 假设返回 20.00,1.02 表示电压电流 try: voltage_str, current_str line.split(,) return float(voltage_str), float(current_str) except ValueError: return None, None ser serial.Serial(/dev/ttyUSB0, 115200, timeout1) test_voltages [5.0, 9.0, 15.0, 20.0] with open(pd_test.csv, w, newline) as f: writer csv.writer(f) writer.writerow([target, vbus, current, status]) for v in test_voltages: ser.write(fSET_PDO {v:.2f}\r\n.encode(ascii)) time.sleep(0.5) vol, cur read_vbus(ser) status PASS if vol is not None else FAIL print(f{v}V - {vol}V, {cur}A, {status}) writer.writerow([v, vol, cur, status]) ser.close()这段代码演示了如何把串口控制变成批量测试。实际项目中还可以加入重试、等待时间、告警阈值判断、以及 Web 可视化报告。配合电子负载甚至能测试充电器在不同负载下的带载能力。6. 使用分析仪排查异常通信6.1 观察 CC 信号如果你手边的分析仪支持波形采集可以把 CC1 或 CC2 接到示波器/逻辑分析仪上。PD 报文在物理层上是一串翻转的 BMC 信号普通数字示波器能看到明显的脉冲簇。在正常的协商过程中你会看到多组短促的脉冲对应Source Capabilities、Request、Accept、PS_RDY等消息。如果脉冲只出现一次后面就没有响应很可能是受电方没有回复或者回复被对方漏检。这时可以把分析仪的 raw 数据和物理层波形对照。很多开源设备固件会保存最近的原始报文再通过上位机展示。如果报文能正常解析说明物理层没问题如果解析出来 CRC 错误就要检查 CC 信号质量、线缆长度、接地是否良好。6.2 常见异常波形常见的异常波形包括完全没有波形CC 连接异常或者电源并没有进入 PD 模式。有一段波形但很短可能只收到Source Capabilities但没有继续协商通常是受电方协议栈没跑起来。波形出现毛刺BMC 信号受到干扰常见于地线回路过大、供电不稳、杜邦线太长。波形幅度偏低CC 下拉电阻阻值不对或者分析仪的输入阻抗影响了信号。对于这些情况分析仪本身能给出很多线索。如果固件支持记录每个报文的 RSSI 或电平信息排查会更快。6.3 结合示波器或逻辑分析仪分析分析仪的价值在于自动解析但如果遇到非常底层的兼容性问题还是需要示波器看原始时序。比如 PD 协议要求发送方和接收方之间的位时序满足容差如果芯片在这个边缘情况下失效可能需要比较波形中点。一些开源逻辑分析仪软件允许自定义协议解析。如果当前版本没有内置 USB PD 解码器可以先采集一段原始信号然后手动测量脉冲宽度与 BMC 编码规则对照。这个过程比较慢但能帮助你理解协议细节。7. 常见问题与排查思路7.1 问题现象与排查表下面将最常见的故障整理成一张表方便快速定位。问题现象常见原因解决思路没有 5V 输出CC 连接异常DFP 未检测到设备检查 CC1/CC2 和 GND 是否全部连接一直停留在 5V无法协商更高电压请求了不支持的 PDO先读取 Source Capabilities再选择支持的挡位请求 20V 后直接回到 5V线缆没有 5A 能力或设备触发保护更换支持 5A 的 E-Marker 线缆可以看到报文但缺少 Accept电源侧拒绝了请求检查请求参数是否超出允许范围电压输出不稳定线缆电阻过大接触不良更换短线粗线检查插头座子上位机无法打开串口驱动或权限问题安装驱动加入dialout组或配置 udev 规则电流读数和万用表差异大采样电阻精度不足校准偏移使用开尔文连接表格里的解决思路只是起点。实际项目中还需要根据具体设备的数据手册进一步排查。7.2 权限与设备名问题在 Linux 下使用 USB 转串口模块经常遇到/dev/ttyUSB0访问权限不足的问题。最简单的临时做法是将当前用户加入dialout组sudo usermod -a -G dialout $USER更规范的做法是添加 udev 规则为设备创建稳定的软链接。仍然以通用规则为例# 文件路径/etc/udev/rules.d/99-pd-analyzer.rules SUBSYSTEMtty, ATTRS{idVendor}xxxx, ATTRS{idProduct}xxxx, SYMLINKpd-analyzer, MODE0660, GROUPdialout把idVendor和idProduct替换成实际设备的 USB VID/PID。添加规则后执行sudo udevadm control --reload-rules sudo udevadm trigger之后重新插拔设备通常会生成/dev/pd-analyzer这比每次猜测 ttyUSB 编号更稳定。7.3 协议解析结果不准如果你看到分析仪上报文乱码或者 CRC 校验经常失败排除物理连接问题后可以尝试降低采样时序的干扰。CC 信号是单线双向传输分析仪不能简单地把 TX 和 RX 分开处理必须以总线方式监听。有些开源项目支持在固件中配置滤波参数例如调整去毛刺时间。适当增大去毛刺时间可以滤掉高频毛刺但也要注意不要误滤正常信号。这种情况需要结合示波器实测波形来决定。8. 最佳实践与工程建议8.1 安全边界高电压与高电流下的防护USB-C PD 最高可达 20V、5A也就是 100W部分新标准甚至更高。在这么高的功率下做测试如果不遵守基本安全规范很容易烧毁设备、融化线缆甚至伤到人。建议至少做到以下几点使用带保险丝的电源线或放在电路中的保险丝。测试时佩戴绝缘手套使用绝缘垫。不要带电手动插拔连接器尽量断电操作。在 VBUS 和 GND 之间增加 TVS 或压敏电阻防止过冲。给测试环境加装过流保护比如固定在 1A、2A 等安全范围确认无误后再提高。同时如果你是测试别人的充电器一定要确保在合理、合法的测试范围内进行不要尝试破坏性测试。对没有把握的高压操作尽量使用隔离探头或隔离变压器。8.2 测试环境搭建一个稳定的测试环境比功能强大的分析工具更重要。建议准备一个固定的测试台电源、分析仪、可编程 Sink、电子负载都固定在绝缘板上并标注清楚接线端口。自动化脚本也应该具备日志记录功能。PD 协商是一个动态过程偶发问题很难复现。建议每次测试都输出原始报文、带时间戳的日志以及当时的环境温度等附加信息。这样即使第二天才发现问题也能回溯到当时的协商过程。在请求电压时不要突然从 5V 跳到 20V除非你明确知道线缆和负载能够承受。很多充电器虽然支持 20V但如果负载端没有预充电到目标电压容易产生浪涌。更稳妥的做法是分两步先请求 5V再请求高电压。8.3 开源项目二次开发时的工程建议如果你拿到一个开源硬件项目后想修改固件首先不要急着写代码而是先阅读并理解现有协议状态机。PD 协议状态机对时序要求很高乱改很容易引入竞态条件。建议使用版本控制管理固件改动。每次修改都记录对应的问题现象和测试结果。开源硬件往往缺少成熟的测试用例最好能建立自己的冒烟测试清单比如插入后能否稳定获得 5V能否读取到完整的 Source Capabilities能否成功请求每一档固定 PDO能否在 PPS 区间内任意调压高负载下电压跌落是否在可接受范围这样回退问题时会方便很多。8.4 将分析工具集成到自动化测试可编程 Sink 本身不只是一块测试板它完全可以作为自动化测试系统的核心部件。你可以将串口命令封装成一个 Python 类或 REST API供上层测试框架调用。例如在产线测试或实验室测试中可以这样组织测试流程上位机向 Sink 发送指令请求 9V。等待 1 秒读取 Sink 回传的电压电流。把电压值上传到测试系统判断是否在 ±5% 以内。继续下一个测试点。这种集成方式可以减少人工操作提高测试一致性。当然前提是 Sink 设备的固件足够稳定串口通信协议也足够明确。在集成之前最好先做一次 24 小时老化测试确认长时间运行不会挂死或漏报文。9. 总结与下一步学习路线通过这篇文章我们从 USB-C 的基础握手、PD 协商流程、PPS 可编程电源一直讲到了开源分析仪和可编程 Sink 的硬件组成、串口控制、自动化和排错思路。如果你手边有这样的开源工具现在应该可以开始尝试读取 Source Capabilities并向电源请求不同的电压如果你准备自己做一个核心工作主要集中在 PD 协议栈、CC 信号处理和上位机交互三部分。接下来可以按以下方向继续深入阅读 USB PD 规范中的物理层和协议层章节真正理解消息头和 CRC 的含义。研究主流 TCPC 芯片的数据手册例如 FUSB302 的使用方法。用逻辑分析仪抓取原始 CC 波形手动解码几条消息加深对 BMC 编码的印象。给可编程 Sink 增加电子负载验证充电器的带载能力。把串口脚本扩展成一个小型测试框架整理成自动测试报告。如果遇到具体问题建议先查看项目仓库的 issue 列表和 wiki很多坑开发者都已经记录过。动手实践时记得先用 5V 低电流验证再逐步提高电压和电流安全始终要放在第一位。
返回列表