
简介DSView FCP/SCP/AFC解码器是一款基于Python语言编写的快充协议解析工具可配合DSLogic与DSView数字示波器软件使用用于解读FCP快速充电协议、SCP安全充电协议、AFC自适应快速充电等主流快充协议的通信数据面向硬件开发者、电池技术研究者以及充电故障排查工程师能够有效缩短协议分析和调试时间同时也有助于嵌入式爱好者深入理解快充原理。资源包共包含4个文件其中有2个Python源码文件与2个编译后的pyc字节码文件整体大小仅6KB体积非常轻量便于集成或二次开发源码部分可以让使用者了解解码逻辑并针对特定设备或协议进行自定义扩展。目前已有1358人学习下载。借助这款解码器用户能将DSLogic或DSView捕获得到的原始信号还原为可读的指令与参数实时监控充电过程中的电流、电压变化并支持异常检测与日志导出从而辅助优化充电方案、定位充电故障、分析私有协议实现细节。对于需要研究快充协议或调试充电相关硬件的人员来说这是一份小巧实用的工具包。 几个月前修一台只支持FCP/SCP的华为快充充电宝插入手机后功率纹丝不动始终5V/1A。万用表和USB电流表都看不出问题后来把DSView逻辑分析仪接到USB线上抓D/D-波形再配合一套FCP/SCP/AFC解码器才定位到是D-线断芯。下面就把这套解码器的原理、接入方式和实操中的坑整理出来给同样被私有快充协议折磨的人一个参考。1. 为什么要在DSView里专门做一套快充协议解码器1.1 手机快充不起来问题到底出在哪快充故障排查里最让人头疼的就是“一切看着正常但就是不快充”。空载量充电器5V输出完全正常接上手机电压电流却一直停在普通充电档位。这时候问题可能出在三个环节充电器不支持目标协议、线缆里D/D-断芯、手机端没有正确发起握手。想区分这三者光靠万用表完全不够因为快充协商根本不是发生在VBUS上而是发生在USB数据线D和D-上的一串串电平脉冲里。逻辑分析仪是抓这种信号最合适的工具。DSView本身支持多通道长时间采样挂上D和D-再挂一根GND就能把手机插上充电器瞬间的通信过程完整录下来。问题在于DSView内置的协议解码器主要覆盖UART、I2C、SPI、CAN、1-Wire这类通用总线翻遍列表也找不到FCP、SCP、AFC这些私有快充协议。等于说波形可以抓但抓完还得自己盯着0和1硬看。我动手写这套解码器就是想把这个“硬看”的过程自动化。让DSView负责抓波形解码器负责把波形里的协商报文还原成能读懂的文字比如“设备请求SCP模式”“充电器确认支持SCP”。有了这层翻译排查快充问题就从“猜谜”变成了“看聊天记录”。1.2 DSView自带的协议解码清单里为什么偏偏缺这些私有快充有朋友问过DSView为什么不直接内置FCP/SCP/AFC原因其实不复杂这几套协议都是厂商私有协议没有公开的完整协议文档而且版本迭代很频繁。华为早期用FCP后来发展出SCPSCP本身又分了22.5W、40W甚至更高功率档位三星AFC在不同芯片平台上的实现也有差异。对通用工具来说维护这种“半公开、还在持续变化”的协议维护成本远高于通用总线解码器。但正在做充电器测试、嵌入式开发、手机维修的人恰恰最需要这类私有协议解码。充电器到底支持哪些快充协议、线缆有没有断芯、手机有没有正确发起协商这些用常规工具很难直接回答。市面上一些商业协议分析仪能做但价格不低而且通常绑定自家硬件。DSView配合DSLogic这类逻辑分析仪硬件成本已经很低了缺的只是一个能把私有协议翻译出来的解码器。我做的方案不是要替代官方工具定位更像一把专用螺丝刀只处理FCP/SCP/AFC这几个协议解决我日常工作中频率最高的快充排查问题。遇到协议魔改版本解码器可能解不出来但至少能通过盲解模式把原始字节导出来配合人工分析继续查。2. 先把名字掰扯清楚这个SCP不是Linux scp命令2.1 FCP/SCP/AFC各是什么各自管哪一段充电过程先说命名因为这里太容易产生误会。标题里的SCP全称是SuperCharge Protocol华为的超级快充协议跟Linux下用来传文件的那条scp命令没有任何关系。你如果按“scp命令”“scp -r”“ubuntu scp用法”这些关键词搜过来搜到的是另一个完全不相干的世界。AFC全称是Adaptive Fast Charging三星的快充协议FCP全称是Fast Charging Protocol华为早期快充协议。协议来源厂商典型功率常见场景FCP华为最高约18W华为/荣耀老机型部分第三方充电器SCP华为22.5W/40W等华为/荣耀中高端机型配套原装充电器AFC三星约15W三星部分机型三星及授权充电器这三者在充电流程里的角色类似手机检测到充电器接入后通过USB的D/D-两条线尝试与充电器握手握手成功后才把默认的5V提升到约定电压或切换成大电流输出。整个决策发生在协议层所以必须靠解码器把这段通信过程还原出来才能判断是哪一步没有完成。2.2 为什么同名的“SCP命令”和“视频解码器”会把人带偏还有一个高频误解是“解码器”三个字。很多人看到解码器第一反应是HEVC、视频播放、弹窗提示“显示此文件需要解码器”。这里完全不是一回事。我们解码的对象是D/D-上的电压脉冲序列输出的是“请求SCP模式”“充电器确认支持AFC”这类可读报文跟音视频格式没有半点交集。这个歧义在搜索时特别坑。我整理资料时发现跟这组关键词相关的热搜里有大量是scp命令、scp 2022模拟、ubuntu scp command之类的内容还有一条是HEVC视频解码器安装提示。这些搜索词虽然都带SCP或解码器但和快充协议解码没有任何关系。如果你是被这些词带进来的可以关掉那些页面回来看波形了如果你确实在查FCP/SCP/AFC快充协议那下面这些内容才是真正要用的。3. 解码器的工作逻辑如何从一根D线上还原快充协商3.1 快充协商的物理层一条线上的“电报通信”USB线里真正用于数据传输的通常是D和D-两根线。标准USB是差分信号传输但绝大多数私有快充协商并不走标准USB协议而是把D或D-当成一根单线用类似串口的高低电平脉冲直接通信。有些阶段甚至要通过切换上拉/下拉电阻来识别设备类型。可以理解成手机和充电器之间拉了一条临时电报线所有问答都靠这条线上的电平变化完成。这类单线通信的特点决定了它特别适合逻辑分析仪来抓。电平高低分明频率不高不需要示波器那种精细的模拟测量能力。DSView的采样率只要够用就能把完整协商过程录下来。解码器要做的就是从这段0/1序列里找到帧边界再把帧里内容翻译出来。需要注意协商发生的时间窗口非常短。手机插上充电器的瞬间握手往往在几百毫秒内就完成了。这也是后面要专门讲触发设置的原因抓快了抓不到第一个包抓慢了整个协商已经结束只剩一段安静的电平。3.2 解码器内部的三步处理电平、字节、语义理解了物理层再分解解码本文还有配套的精品资源点击获取