STM32 OTG模块作为USB设备详解

需积分: 16 14 下载量 113 浏览量 更新于2024-07-17 收藏 704KB PDF 举报
"STM32 OTG IP介绍(下)OTG模块作为USB设备" STM32 OTG(On-The-Go)模块是一个高度集成的USB控制器,能够实现设备在USB主机和设备模式之间的切换。在本文档中,主要讨论了OTG模块作为USB设备时的各种情况和工作状态。 首先,OTGB设备是OTG模块的默认状态,当连接B-side(下游)电缆时,它作为USB设备。B-side电缆的连接使得OTGB器件的角色固定,不会进行主机与设备的角色切换。 OTGA设备则是在执行Host Negotiation Protocol (HNP)之后,从原本的主机角色切换到设备角色。这种情况下,OTGA器件连接的是A-side(上游)电缆,但通过HNP协议,它可以成为USB设备。 B器件是指连接B-side电缆且HNPCAP位被清零的设备,这意味着它的角色不会改变,始终作为USB设备。 "仅作为USB设备"的情况发生在FDMOD被置位时,强制OTG模块保持在设备角色,此时ID引脚的信号被忽略,不参与角色判断。 当OTG_FS模块作为"device only"连接时,PA9引脚用于监测Vbus电源,检测设备是否与主机断开。如果禁用NOVBUSSENS,PA9可以作为普通I/O口,此时假设VBUS始终有效。D+/D-数据线不需要串联电阻,而内部的专用PLL为USB设备模块提供48MHz时钟。 在USB设备的不同状态下,有以下几种情况: 1. 供电状态:当Vbus检测到有效电压时,设备进入供电状态,自动启用D+的上拉电阻,向主机发送"设备连接"信号,并产生"会话请求"中断。如果Vbus电压下降,设备会关闭D+的上拉,触发"会话结束"中断。 2. 默认状态:设备期望接收SET_ADDRESS命令,新地址将写入设备配置寄存器DAD@OTG_FS_DCFG。之后,设备将以新地址响应主机的后续通信。 3. 软断开状态:通过设置SDIS@OTG_FS_DCTL可移除D+的上拉,即使电缆仍连接,主机也会触发"设备断开连接"中断。 4. 挂起状态:当检测到3ms的空闲状态,产生早期挂起中断(ESUSP@OTG_FS_GINTSTS),3ms后确认挂起状态(USBSUSP@OTG_FS_GINTSTS)。挂起状态由SUSPSTS@OTG_FS_DSTS标志位表示。退出挂起状态需要设备应用置位WKUPINT@OTG_FS,触发唤醒中断。 这些状态和功能的详细理解对于开发基于STM32 OTG IP的USB设备应用至关重要,它们确保了设备能够正确响应主机操作并管理电源状态,从而实现稳定可靠的USB通信。