画板子选型时看到芯片写着支持USB Host,采购问这跟普通USB口有什么区别。差别在角色:Host是主机,负责供电和发号施令;Device是从机,等着被枚举。一个口能不能插U盘,就看它工作在哪个模式。

Host 与 Device 的角色区别

USB是主从结构,一次通信必须有一个Host。Host提供5V电源、发令牌包、分配地址,Device只能应答。电脑上的USB口都是Host。单片机上的USB口多数默认是Device,插到电脑上变成一个串口或U盘。芯片标注支持OTG,才能通过ID脚或软件切换两种角色。

能插U盘、键盘、打印机

工作在Host模式,就可以接U盘读FAT32文件、接USB转串口模块、接HID键盘扫码枪、接打印机。嵌入式设备上常见用法是设备本身当主机,把采集的数据写到U盘里,现场人员拔走U盘拷数据,不用联网也不用配服务器。

供电是第一个坎

Host口要对外供5V,标准要求至少500mA,启动瞬间的浪涌更大。很多开发板直接从芯片的5V取电,插上移动硬盘就掉电重启。带大功率外设要加限流开关芯片,并在VBUS上加够电容。U盘一般100mA以内,键盘更小,机械硬盘能到900mA,必须外供电。

软件栈比想象中重

Host不是接上线就能读。要移植USB主机协议栈,处理枚举、描述符解析、类驱动。读U盘还得再叠一层文件系统,FatFs是常见选择。STM32有官方的USB Host库,ESP32有Host例程但只支持特定型号。选型时先确认手册写的是全速还是高速,前者12Mbps,读大文件会明显慢。

  • 要接U盘:确认有Host或OTG,且VBUS能供够电。
  • 只做调试:用Device模式的虚拟串口就够,别上Host。
  • 要接多个设备:得加Hub芯片,软件栈也要支持Hub枚举。