解读 46 · 半双工总线电平与转接板
解读对象:
microduck-replica/hardware/imu_to_dxl/imu_to_dxl-接线表.md(信号电平/数据线保护节)+microduck-replica/docs/电控采购清单.md§六(转接板)
需要的前置:解读 43(自绘板挂在总线上);[第 08 课../course/08-看懂电路图.md的信号概念。
半双工:一根线上的对讲机
XL330 用的 Dynamixel TTL 总线只有三根线:V+、GND、一根数据线。所有 16 台设备共用这根数据线,同一时刻只能一方说话——这就是半双工。麻烦在于:UART 的发送(TX)和接收(RX)天生是两根线,得有电路把"两个嘴"轮流接到"一个话筒"上,这就是方向切换。
本仓证据(逆向文档 §五之二):全仓库搜 direction pin 零命中——代码里没有方向控制 GPIO,官方 HAT 上靠硬件完成:
HAT:U6 SN74LVC1G125(收)+ U7 SN74LVC1G126(发),Q1 从 TX 自动派生方向
自绘板:U3 SN74LVC2G241 双缓冲,通道1=发(受 DE 控制,默认断开),通道2=收(常开)
HAT 从 TX 电平派生方向的通病是"释放早了会截断最后一个停止位";自绘板改用 STM32 的硬件 DE(Driver Enable),CR3.DEP = 1 一个位,收发切换由 UART 外设按比特精度自动做——1 Mbps 下一个比特只有 1 µs,软件翻 GPIO 根本赶不上(hardware/README 选型理由)。
电平:两个方向都要核对
飞特《HL-2915-C002 串型规格书》第 8 页:信号高电平 2–5 V,低电平 0–0.45 V。于是双向检查(接线表原文):
- 本板发:74LVC 在 3.3 V 供电下输出约 3.3 V,落在舵机 2–5 V 窗口内 ✅
- 本板收:舵机可能输出 5 V;74LVC 在 3.3 V 供电时输入耐 5.5 V ✅——选 LVC 系列而不是 LV/HC,卡的就是这条。
数据线上还有三件小东西(与 HAT 的 R32/R33+TH1/D4 同构):R5 10kΩ 上拉定总线空闲电平(CMOS 输入浮空会有穿透电流,UART 可能把噪声当起始位);R6 150Ω 源端串阻限短路电流、软化边沿降 EMI(1 Mbps 下延迟只占比特时间约 3%);D2 5.1V 稳压管钳位防尖峰。
转接板与针序:不画板也要懂电平
不打算用 HAT 的话,¥22–26 的现成 ST/SC 系列总线舵机转接板就能顶掉"半双工方向电路"(电控采购清单 §六)。但无论买还是画,针序必须核对:自绘板上 J1/J2(JST EH 2.5mm,配 Dynamixel 线)是 GND/V+/DATA,J4/J5(2.0mm,配飞特 HD-1910 线)是 DATA/V+/GND——完全相反(HD-1910 规格书 A/0 第 3/7 页)。好在 2.0 与 2.5 mm 物理上插不进对方,只剩"画错"一种可能。
你带走的收获
- 半双工为什么要方向切换:收发共用一根线,必须有人决定"现在谁驱动总线"——硬件自动派生、UART 硬件 DE、软件 GPIO 三种做法,速度越快越要靠硬件。
- 使能脚的默认态就是安全态:发送缓冲的 OE 上电默认断开,保证 MCU 没准备好时绝不抢总线。
- 电平兼容是双向的:我输出的高电平要在对方窗口内,对方输出的最高电压也不能超过我的耐压——查一处不够。
- 串阻是便宜的保险:一个小电阻同时买到限流和边沿软化,代价只是纳秒级延迟。