BAT32G157 USB 2.0 Full-Speed模块技术参考
支持Host/Device/OTG三种模式 · 10个管道 · 12Mbps全速传输 · BC 1.2电池充电
BAT32G157内置USB 2.0 Full-Speed模块(USBFS),符合USB 2.0全速规范,支持高达12Mbps的数据传输速率。该模块集成主机控制器、设备控制器和OTG功能,可灵活配置10个管道支持控制、批量、中断和同步四种传输类型,适用于多种USB应用场景。
一、工作模式概述
USBFS模块支持三种工作模式,可通过软件灵活切换,适应不同的应用需求:
1.1 主机控制器模式
在主机控制器模式下,USBFS支持USB 2.0全速和低速传输,具有以下特性:
- SOF自动调度:自动生成并发送Start of Frame数据包
- 数据包自动传输:智能调度控制、批量、中断和同步传输
- 可编程间隔:同步和中断传输的间隔时间可灵活设置
- 总线管理:支持USB总线复位、恢复和速度检测
1.2 设备控制器模式
在设备控制器模式下,USBFS支持USB 2.0全速传输,提供丰富的设备端功能:
- 控制传输阶段控制:自动管理SETUP、DATA和STATUS阶段
- SET_ADDRESS自动响应:硬件自动处理地址设置请求,无需软件干预
- SOF插值功能:支持SOF包接收和插值
- 远程唤醒:支持USB总线远程唤醒功能
1.3 OTG模式
USBFS支持OTG(On-The-Go)功能,通过HNP(Host Negotiation Protocol)实现主机与设备角色的动态切换:
- HNP协议支持:通过HNPBTOA位控制从设备B切换到设备A
- MicroAB连接器:通过USB_ID引脚检测连接器类型
- 软件切换:通过SYSCFG.DCFM位在主机和设备控制器之间切换
⚠️ 模式切换注意事项
切换DCFM位前,必须先将DMRPU、DPRPU和DRPD位设为0。模式切换后需重新配置相关寄存器。
二、传输类型
BAT32G157 USBFS支持USB 2.0规范定义的全部四种传输类型:
| 传输类型 | 特性 | 典型应用 |
|---|---|---|
| 控制传输 (Control) | 可靠、无实时性要求、小数据量 | 设备枚举、配置命令 |
| 批量传输 (Bulk) | 可靠、带宽不确定、有较大数据量 | 打印机、存储设备、数据采集 |
| 中断传输 (Interrupt) | 可靠、小数据量、固定周期 | 键盘、鼠标、HID设备 |
| 同步传输 (Isochronous) | 带宽保证、实时性、无错误重传 | 音频、视频、实时数据流 |
三、管道端点配置
USBFS最多支持10个管道(包括默认控制管道),可灵活配置端点号和缓冲区类型:
| 管道 | 缓冲区类型 | 传输类型 | 缓冲区大小 | 端点分配 |
|---|---|---|---|---|
| PIPE0 | 单缓冲区 | 控制传输 | 64字节 | 固定(端点0) |
| PIPE1 | 双缓冲区 | 批量/同步传输 | 64/256字节 | 任意端点号 |
| PIPE2 | 双缓冲区 | 批量/同步传输 | 64/256字节 | 任意端点号 |
| PIPE3-5 | 双缓冲区 | 批量传输 | 64字节 | 任意端点号 |
| PIPE6-9 | 单缓冲区 | 中断传输 | 64字节 | 任意端点号 |
设计提示
同步传输管道(PIPE1、PIPE2)支持256字节双缓冲区,适合音频/视频数据传输;中断传输管道(PIPE6-9)采用单缓冲区设计,适合键盘、鼠标等低带宽设备。
四、速度等级与通信
USBFS支持USB 2.0全速和低速两种速度等级:
| 速度等级 | 传输速率 | 支持模式 | RHST[2:0]编码 |
|---|---|---|---|
| 全速 (Full Speed) | 12 Mbps | 主机/设备 | 010b |
| 低速 (Low Speed) | 1.5 Mbps | 主机/设备 | 001b |
| 高速 (High Speed) | 不支持 | - | - |
USB数据线状态可通过LNST[1:0]位监测:
| LNST[1:0] | 全速运行期间 | 低速运行期间 |
|---|---|---|
| 00b | SE0 | SE0 |
| 01b | J状态 | K状态 |
| 10b | K状态 | J状态 |
| 11b | SE1 | SE1 |
五、FIFO缓冲区
USBFS提供多个FIFO端口用于数据传输:
CFIFO/CFIFOL
- 公共FIFO端口
- 可访问所有管道
- 适用于任何传输类型
D0FIFO/D0FIFOL
- 双缓冲区D0端口
- 专用于PIPE1
- 支持批量/同步传输
D1FIFO/D1FIFOL
- 双缓冲区D1端口
- 专用于PIPE2
- 支持批量/同步传输
特殊功能
- DCLRM功能:读取DnFIFO端口后自动清除FIFO缓冲区
- BFRE功能:可更改BRDY中断事件通知时机
- SHTNAK功能:在传输端生成NAK响应PID
六、中断与唤醒
USBFS提供丰富的中断和唤醒功能:
| 功能 | 说明 | 相关寄存器位 |
|---|---|---|
| BRDY中断 | 缓冲区就绪中断,可配置触发时机 | BFRE位 |
| 远程唤醒 | 从挂起状态唤醒主机 | WKUP位 |
| 唤醒检测 | 检测下游端口唤醒信号 | RWUPE位 |
| 事务计数 | 使用事务计数的接收结束功能 | - |
七、功耗管理
USBFS支持多种功耗优化功能:
7.1 USB LDO稳压器
内置USB LDO稳压器用于为内部USB收发器供电,UVDD端口必须连接外部电容以确保稳定工作。
7.2 电池充电规范
USBFS支持BC 1.2规范修订版1.2,可实现便携设备的充电功能:
- DCP(专用充电端口)
- CDP(充电下行端口)
- SDP(标准下行端口)
八、寄存器配置
USBFS主要寄存器配置要点:
8.1 系统配置控制寄存器 (SYSCFG)
地址:4008 0000h
| 位 | 符号 | 功能 | 配置建议 |
|---|---|---|---|
| b0 | USBE | USBFS动作许可 | 必须置1启用USB |
| b3 | DMRPU | D-线电阻控制 | 设备模式:1=上拉有效 |
| b4 | DPRPU | D+线电阻控制 | 设备模式:1=上拉有效 |
| b5 | DRPD | D+/D-线电阻控制 | 主机模式:1 |
| b6 | DCFM | 控制器功能选择 | 0=Device,1=Host |
| b10 | SCKE | USB时钟使能 | 设置后需读取确认 |
8.2 设备状态控制寄存器 (DVSTCTR0)
地址:4008 0008h
| 位 | 符号 | 功能 |
|---|---|---|
| b2-b0 | RHST[2:0] | 总线速度状态 |
| b4 | UACT | 下游端口使能 |
| b6 | USBRST | USB总线复位输出 |
| b7 | RWUPE | 唤醒检测使能 |
| b8 | WKUP | 远程唤醒信号 |
| b9 | VBUSEN | VBUS使能控制 |
| b11 | HNPBTOA | OTG HNP切换 |
8.3 配置顺序
- 主机模式:先将DRPD=1,消除LNST位抖动,确认总线稳定后再USBE=1
- 模式切换:先清零DMRPU、DPRPU、DRPD,再修改DCFM位
- 时钟使能:设置SCKE=1后必须读取确认
九、I/O端口
USBFS模块引脚配置:
| 引脚名 | I/O | 功能 |
|---|---|---|
| USB_DP | I/O | USB收发器D+端口 |
| USB_DM | I/O | USB收发器D-端口 |
| USB_VBUS | 输入 | USB电缆连接监测 |
| USB_VBUSEN | 输出 | 外部VBUS使能信号 |
| USB_EXICEN | 输出 | OTG电源控制 |
| USB_OVRCURA/B | 输入 | 过流检测 |
| USB_ID | 输入 | OTG ID信号 |
| UVDD | I/O | USB LDO输出 |
注意事项:PA09引脚是5V耐压buffer;UVDD端口必须连接外部电容。
十、注意事项汇总
- 禁止同时设置DMRPU和DPRPU为高
- SCKE=0时,只有SYSCFG可读写,其他USB寄存器不可访问
- 主机模式:将UACT=0或SCKE=0前,需检查HTACT位是否为0
- 设备模式:连接处理(DPRPU=1)后,需读取LNST位确认状态
- USB_VBUS端口必须连接到USB总线VBUS
- USBE从1改为0会初始化特定寄存器
十一、典型应用场景
基于BAT32G157 USBFS的丰富功能,可实现以下应用:
USB HID设备
- 键盘、鼠标
- 游戏控制器
- 条码扫描器
USB存储设备
- U盘读写
- 数据记录仪
- 固件升级
OTG应用
- 移动设备连接
- 设备角色切换
- 便携充电
电池充电
- BC 1.2充电检测
- 充电端口识别
- 移动电源