边充电边当主机:基于USB2534的ACA Dock技术深度解析
在智能手机普及的今天,我们早已习惯了通过Type-C扩展坞“边充电边插U盘”。但在Micro-USB时代,手机作为USB Host(主机)向外设供电时,自身电量会快速消耗,这种“放电式”扩展体验极差。ACA(配件充电适配器) 技术的出现,正是为了解决这一痛点:它能让移动设备(如手机)在作为USB主机与外设通讯的同时,从外部电源汲取电量。
Microchip的 TB3166技术简报 提供了一个极其精妙的软硬件协同方案,利用 USB2534 Hub 和 PIC16F18313单片机,完美复现了ACA Dock(坞站)的工作机制。
https://ww1.microchip.com/downloads/en/DeviceDoc/90003166A.pdf
一、 核心原理:一场物理层的“身份欺骗”
ACA Dock的本质,是向手机宣告:“我是坞站,你可以把数据角色设为主机,同时电源由我提供。”手机通过检测以下四个引脚状态来确认身份:
- VBUS:由外部5V电源直接灌入,高于4.75V。
- ID引脚:通过特定阻值(R_ID)接地(标准为124kΩ,但演示中兼容了三星S4的73kΩ),宣告自己是一个支持数据扩展的附件。
- D+引脚:被拉高至3.0V - 3.6V。
- D-引脚:维持在0.5V - 0.7V的低电平。
这里的关键在于D+/D-的电平控制。在传统OTG中,D+被拉高代表设备为主机,但ACA要求D-也必须处于特定的弱电压范围内,以区别于普通OTG线缆。
二、 软硬件拆解:三大角色的协作
演示系统由三个关键部分构成:
- USB2534 Hub:数据与信号的枢纽。它的上行口接手机,下行口接鼠标/U盘。它内部有可编程的模拟前端,能产生上面提到的D+/D-直流偏置。
- PIC16F18313 单片机(SOC):通过I²C接口对Hub进行实时控制。它是整个状态机的“大脑”。
- 硬件Demo板:负责提供外部5V充电电源,并通过跳线帽提供不同阻值的R_ID,模拟不同厂商的手机。
三、 动态握手:从“骗”到“放”的时序之美
如果一直给D-施加0.5V的电压,后续的高速USB通讯就会被严重干扰。因此,如何优雅地“撤掉”这些直流偏置,是整个演示的精髓。
整个流程分为三个状态,单片机通过I²C不断轮询Hub的寄存器 0xE4,并精准地执行写入操作:
- 阶段1:WAIT(蓄势待发)
系统上电,单片机向Hub写寄存器0xE3 = 0x8C,开启VDAT_SRC,把D-拉到0.5V-0.7V。此时VBUS有电,ID电阻就位,手机一插上,立刻识别出ACA Dock,手机弹窗提示“已连接坞站”,并开始从VBUS大口充电。 - 阶段2:ATTACH(卸磨杀驴)
手机插上后,手机开始尝试作为Host枚举设备。单片机检测到连接成功(0xE4=0x00),立刻执行写入0xE3 = 0x80,关闭VDAT_SRC。这一瞬间,D-上的0.5V偏置消失,USB总线彻底净化,高速信号(HS Chirp)成功握手,手机开始与U盘和鼠标正常通讯。 - 阶段3:DETACH(拔插检测)
当手机休眠(Suspend)或拔出时,单片机写0xE3 = 0x8A,注入接触检测电流,再次轮询0xE4。如果是休眠,回到阶段2;如果是拔出,回到阶段1。
四、 工程启示:电源与数据的彻底解耦
这个Demo之所以优雅,在于它将充电与数据在物理上完全解耦:
- 电流走明路:5V充电电流走VBUS,由板载的MIC29302稳压器提供,与Hub逻辑完全隔离,保证大电流不烧毁Hub。
- 数据走后门:D+/D-由Hub控制,在“诱骗”完成后,立刻交给标准USB收发器。
结语
在Type-C PD(Power Delivery)协议大行其道的今天,ACA规范已逐渐淡出历史舞台,被更先进的替代模式(Alternate Mode)和多路复用技术取代。但Microchip TB3166所展示的“通过模拟前端进行物理层握手,利用状态机精准切换模式”的设计思想,依然是嵌入式USB开发中教科书级的经典案例。它不仅展现了硬件工程师如何用几行I²C代码解决复杂的电源与角色冲突,更体现了USB协议中“向下兼容”与“动态协商”的智慧。
https://www.infineon.com/assets/row/public/documents/30/49/infineon-ez-usb-tmhx3-automotive-usb-3-datasheet-en.pdf
USB百科





