STM32 OTG模块作为USB设备详解
需积分: 16 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通信。
2019-09-15 上传
2019-09-12 上传
2019-06-19 上传
2021-09-03 上传
2023-02-22 上传
2014-01-08 上传
weixin_38743481
- 粉丝: 696
- 资源: 4万+
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析