DEEP 78 · 第八辑 · 通用换舵机方法论 · LEARN NOTES

收进学习手册 · 2026-09-11 · duck.whatled.com

解读 78 · 协议适配:飞特系与厂商私有协议

解读对象:microduck-replica/rl-series/scripts/hl2915_bench.py(寄存器表与帧层)+ docs/新手学习文档.md §12
需要的前置:解读 64(寄存器逐段)· 解读 69(Feetech2915Io 代码地图)

换到飞特系,协议适配从"改常量"升级为"写一个新帧层";换到厂商私有协议(如宇树),
则连现成库都没有。本篇以 hl2915_bench.py 为样本讲飞特怎么接,再讲私有协议的边界在哪里。

1. 飞特磁编码协议:三件套

《新手学习文档》(docs/新手学习文档.md) §12.2 给出的帧格式只有一行:

FF FF | ID | Length | Instruction | Parameters... | Checksum(~sum)

指令码五个:PING=0x01、READ=0x02、WRITE=0x03、SYNC_READ=0x82、SYNC_WRITE=0x83。
台架脚本用三个函数把它实现完:packet()(拼帧 + 取反和)、parse()(容忍残留 0xFF,
校验不过就滑动一字节)、Bus.transact()(发一收一,0.1 s 超时计数)。一个协议栈就这么大
——744 行脚本里真正属于协议的不到 80 行。

复刻最先用的寄存器(地址均为十进制):

地址 含义 地址 含义
5 ID 56 当前位置(遥测块起点)
6 波特率(0=1M) 58 / 60 当前速度 / 负载
40 扭矩开关(128=当前位置归 2048) 62 / 63 电压(0.1V)/ 温度(°C)
42 / 46 / 48 目标位置 / 速度 / 扭矩 65 / 69 状态位段 / 电流(×6.5 mA)

56 起连读 8 字节覆盖位置/速度/负载/电压/温度,电流与状态要读满 14 字节——正好顶替 XL330 的 124 起读块,但地址和单位不能照搬。

2. 飞特系内换型号:以"那只舵机的内存表"为准

《HL-2915 路线全流程教程》(docs/HL-2915路线全流程教程.md) §9.1 给的边际成本清单里,
第二条最容易被轻视:换一只飞特舵机,寄存器差异要以它自己的内存表为准——
比如经典 STS 系列的目标位置地址就与磁编码系列不同。逐项核对清单:

核对项 为什么
寄存器地址(目标位置/遥测块) 系列不同地址会漂移,抄错就是静默写错地方
电压窗与保护寄存器(14/15/28 号) 一条写指令的事,但不写可能上电即过压保护
插头系列 HL 用 PH1.25-3P,与 5264/JST-EH 不通用
脚序 文档之间都有打架的先例(见解读 76),逐只实测

改完常量后重跑课 1–5(体检→遥测→闭环→拷机→SYNC),通过才算适配完成。

3. 厂商私有协议:边界在哪

你带走的收获

延伸

什么鸭 WHATDUCK · 复刻学习笔记 ← 全部手册 · 首页