当前位置: 首页 > news >正文

USB硬件模块必要的寄存器有哪些?

USB硬件模块必要的寄存器有哪些?

作者将狼才鲸
日期2025-11-28
  • CSDN阅读地址

  • 前言

    • 许多想学习USB驱动的人,一看到芯片里USB模块的寄存器(IP文档)有一百多个或者好几百个,看得头大,顿时就退缩了;而当看到USB协议栈里密密麻麻的源文件,还有什么UTMI、EHCI等接口后也觉得复杂;
    • 但其实USB驱动只需要把控制器+PHY与协议栈的接口匹配好就行,因此实际核心的内容不多;
    • 也就是位、域、包、事务、传输这五层中实现到事务,或者到包这一层的处理;
    • 物理层由控制器和PHY组成,USB1.0低速/USB1.1全速时PHY可以由GPIO模拟出来,USB2.0高速及以后必须要用专门的PHY芯片;
    • 下面介绍了控制器+PHY中必要的寄存器;
    • 寄存器信息参考自开源IP核cores:
      • ultraembedded/cores 包含USB HOST/DEVICE/FS,Various HDL (Verilog) IP Cores
      • mirrors_ultraembedded/cores
      • 里面除了Verilog的IP核外,还有USB协议栈中HCD层的C代码,至于完整的USB协议栈并没有给出。

Device端寄存器:
地址偏移寄存器名称(32bit)描述
0x00USB_FUNC_CTRL[RW] Control Register 控制寄存器(设备挂载等)
0x04USB_FUNC_STAT[RW] Status Register 状态寄存器
0x08USB_FUNC_ADDR[RW] Address Register 地址寄存器
0x0cUSB_EP0_CFG[RW] Endpoint 0 Configuration 端点配置(有多少个端点就有多少组寄存器)
0x10USB_EP0_TX_CTRL[RW] Endpoint 0 Tx Control 端点发送控制
0x14USB_EP0_RX_CTRL[W] Endpoint 0 Rx Control 端点接收控制
0x18USB_EP0_STS[R] Endpoint 0 status 端点状态寄存器
0x1cUSB_EP0_DATA[RW] Endpoint Data FIFO 端点数据
0x20USB_EPn_CFG[RW] Endpoint n Configuration
0x24USB_EPn_TX_CTRL[RW] Endpoint n Tx Control
0x28USB_EPn_RX_CTRL[W] Endpoint n Rx Control
0x2cUSB_EPn_STS[R] Endpoint n status
0x30USB_EPn_DATA[RW] Endpoint n Data FIFO
Register: USB_FUNC_CTRL 控制寄存器
比特名称描述
8HS_CHIRP_ENHigh-speed Chirp Enable 高速啁啾(需外接PHY,留作扩展用,SE0帧后发送)
7PHY_DMPULLDOWNUTMI PHY D- Pulldown Enable D-主动下拉,默认是上拉的
6PHY_DPPULLDOWNUTMI PHY D+ Pulldown Enable D+主动下拉,默认是上拉的
5PHY_TERMSELECTUTMI PHY Termination Select 启动端接电阻(区分低速全速,设备D+或D-上拉,主机则是下拉)
4:3PHY_XCVRSELECTUTMI PHY Transceiver Select 收发器使能
2:1PHY_OPMODEUTMI PHY Output Mode 输出模式(0低速、1全速、2高速、3无)
0INT_EN_SOFInterrupt enable - SOF reception 中断使能
Register: USB_FUNC_STAT 状态寄存器
比特名称描述
13RSTUSB Reset Detected (cleared on write) 获取主机的复位状态,处理后写清零
12:11LINESTATEUSB line state (bit 1 = D+, bit 0 = D-) D+D-值,用于判断高速啁啾正常(留作扩展用)
10:0FRAMEFrame number 帧号
Register: USB_FUNC_ADDR 地址寄存器
比特名称描述
6:0DEV_ADDRDevice address 设备地址
Register: USB_EPx_CFG 端点配置
比特名称描述
3INT_RXInterrupt on Rx ready 接收完成
2INT_TXInterrupt on Tx complete 发送完成
1STALL_EPStall endpoint 设备进入中止状态
0ISOIsochronous endpoint 同步端点(例如多媒体数据流)
Register: USB_EPx_TX_CTRL 端点发送控制
比特名称描述
17TX_FLUSHInvalidate Tx buffer 使发送缓存无效(清缓存)
16TX_STARTTransmit start - enable transmit of endpoint data 传输开始
10:0TX_LENTransmit length 传输长度
Register: USB_EPx_RX_CTRL 端点接收控制
比特名称描述
1RX_FLUSHInvalidate Rx buffer 使接收缓存无效(清缓存)
0RX_ACCEPTReceive data accepted (read) 接收到数据
Register: USB_EPx_STS 端点状态
比特名称描述
20TX_ERRTransmit error (buffer underrun) 发送错误(如underflow)
19TX_BUSYTransmit busy (active) 发送忙
18RX_ERRReceive error - CRC mismatch or buffer overflow 接收错误(如CRC错误)
17RX_SETUPSETUP request received 接收到SETUP令牌包
16RX_READYReceive ready (data available) 接收成功
10:0RX_COUNTEndpoint received length (RD) 端点接收到的长度
Register: USB_EPx_DATA 端点数据
比特名称描述
7:0DATARead or write from Rx or Tx endpoint FIFO 读写的数据
  • Ddevice端流程:
    寄存器初始化(清收发缓存、进入低速/全速、D+或D-上拉);
    循环读状态寄存器:识别复位,有复位则清空缓存,重新开启关闭收发器,并将D-或D+的上拉电阻脱离一端时间;
    循环读指定端点状态寄存器:
    1. 识别发送、接收错误;
    2. 识别令牌包的到达并进行处理;
    3. 识别OUT包并开始发数据。

Host寄存器:
地址偏移寄存器名称(32bit)描述
0x00USB_CTRL[RW] Control of USB reset, SOF and Tx FIFO flush 控制寄存器
0x04USB_STATUS[R] Line state, Rx error status and frame time 状态寄存器
0x08USB_IRQ_ACK[W] Acknowledge IRQ by setting relevant bit 中断响应寄存器
0x0cUSB_IRQ_STS[R] Interrupt status 中断状态寄存器
0x10USB_IRQ_MASK[RW] Interrupt mask 中断屏蔽
0x14USB_XFER_DATA[RW] Tx payload transfer length 发送数据长度
0x18USB_XFER_TOKEN[RW] Transfer control info (direction, type) 传输控制信息
0x1cUSB_RX_STAT[R] Transfer status (Rx length, error, idle) 接收状态
0x20USB_WR_DATA[W] Tx FIFO address for write data 写的数据
0x20USB_RD_DATA[R] Tx FIFO address for read data 收的数据
Register: USB_CTRL 控制寄存器
比特名称描述
8TX_FLUSHFlush Tx FIFO 清发送缓存
7PHY_DMPULLDOWNUTMI PHY D- Pulldown Enable 下拉D-
6PHY_DPPULLDOWNUTMI PHY D+ Pulldown Enable 下拉D+
5PHY_TERMSELECTUTMI PHY Termination Select 启动端接电阻
4:3PHY_XCVRSELECTUTMI PHY Transceiver Select 启动收发器
2:1PHY_OPMODEUTMI PHY Output Mode 模式:0低速、1全速、2高速、3无
0ENABLE_SOFEnable SOF (start of frame) packet generation 使能SOF起始帧生成
Register: USB_STATUS 状态寄存器
比特名称描述
31:16SOF_TIMECurrent frame time (0 - 48000) 当前帧时间
2RX_ERRORRx error detected (UTMI). Clear on new xfer. 接收错误
1:0LINESTATE_BITSLine state (1 = D-, 0 = D+) 当前D+D-电平
Register: USB_IRQ_ACK 中断响应寄存器
比特名称描述
3DEVICE_DETECTInterrupt on device detect (linestate != SE0). 设备检测
2ERRInterrupt on error conditions. 错误
1DONEInterrupt on transfer completion. 传输完成
0SOFInterrupt on start of frame. 帧开始
Register: USB_IRQ_STS 中断状态寄存器
比特名称描述
3DEVICE_DETECTInterrupt on device detect (linestate != SE0). 设备检测
2ERRInterrupt on error conditions. 错误
1DONEInterrupt on transfer completion. 传输完成
0SOFInterrupt on start of frame. 帧开始
Register: USB_IRQ_MASK 中断屏蔽寄存器
比特名称描述
3DEVICE_DETECTInterrupt on device detect (linestate != SE0). 设备检测
2ERRInterrupt on error conditions. 错误
1DONEInterrupt on transfer completion. 传输完成
0SOFInterrupt on start of frame. 帧开始
Register: USB_XFER_DATA 发送数据长度
比特名称描述
15:0TX_LENTx transfer data length 发送数据长度
Register: USB_XFER_TOKEN 令牌包传输
比特名称描述
31STARTTransfer start request 传输开始
30ININ transfer (1) or OUT transfer (0) 数据输入
29ACKSend ACK in response to IN data 令牌包响应
28PID_DATAXDATA1 (1) or DATA0 (0) PID数据类型
23:16PID_BITSToken PID (SETUP=0x2d, OUT=0xE1 or IN=0x69) 令牌包命令值
15:9DEV_ADDRDevice address 设备地址
8:5EP_ADDREndpoint address 端点地址
Register: USB_RX_STAT 接收状态寄存器
比特名称描述
31START_PENDTransfer start pending 一个USB传输请求已经被主机控制器驱动接受,并且已经排入调度队列,但尚未被物理硬件(主机控制器)真正开始执行
30CRC_ERRCRC error detected 校验错误
29RESP_TIMEOUTResponse timeout detected (no response) 超时
28IDLESIE idle 空闲
23:16RESP_BITSReceived response PID PID响应
15:0COUNT_BITSReceived data count 接收长度
Register: USB_WR_DATA 写数据
比特名称描述
7:0DATADate byte 写的数据
Register: USB_RD_DATA 读数据
比特名称描述
7:0DATADate byte 读的数据
  • Host端流程:
    • 这里只能提供出HCD (Host Controller Driver),USB协议栈的最底层接口;其它包含文件系统、U盘识别与读写的部分还需移植完整的USB协议栈。
    • 可以使用标准接口(UHCI, OHCI, EHCI, xHCI),也可以自定义接口,此处建议用自定义接口。
http://www.jsqmd.com/news/889357/

相关文章:

  • 2026年柔性门供应商实力排名:专业的柔性大门源头厂家力荐 - 速递信息
  • Windows Cleaner:彻底解决C盘空间不足的三大创新方案
  • 从‘白细胞计数’到数据分析:用Python复现算法,理解离群值检测的底层逻辑
  • 深度解析:SingleFile网页完整保存技术方案与高效部署实战指南
  • STM32F4实战解析——三重ADC同步采样+DMA乒乓缓冲区高效数据流
  • 从零搭建Gazebo双目视觉仿真环境:模型配置与ROS数据采集实战
  • Nintendo Switch大气层系统:从零开始的完整实战指南与功能解锁
  • 遗传算法车间排产实战:从理论失效到交付准时率提升16.3%
  • 基于智能体与RAG的校园节日AI助手:从架构设计到工程实践
  • The Real Statistics Resource Pack: Unlocking Advanced Data Analysis in Excel
  • 嘉兴黄金回收怎么选?福正美人气与口碑双冠 - 上门黄金回收
  • 构建高效进程控制框架:OpenSpeedy API深度集成方案
  • 从行为数据到智能决策:构建基于真实数据的AI客户智能系统
  • 进阶篇-LangChain篇-29--后LangChain时代:AI工程师的演进之路
  • 【移动端自动化】零代码基础:用 AI 辅助生成基于图像识别的 Airtest 脚本
  • 从UDP端口绑定限制看运营商QoS策略的底层逻辑
  • SpringBoot+Vue汽车美容与保养网站源码+论文
  • 【组合数学】多项式系数:从多重集排列到恒等式证明的直观桥梁
  • 2026 成都钻石回收黑马店,口碑好到不用宣传 - 奢侈品回收测评
  • 成都闲置名包变现哪家可信?七家门店探店实测 - 奢侈品回收测评
  • GEO 不会完全取代 SEO 二者互补共生 - 小艾信息发布
  • 掌握AI写专著技巧,利用工具快速完成20万字专著创作!
  • 实测揭秘:AMS1117 LDO稳压芯片的压差与负载特性
  • AI专著撰写必备:优质AI写专著工具,轻松产出20万字高质量专著!
  • Visual Studio .NET 项目系统完全指南:现代项目管理的终极解决方案
  • 2026最新五家钟祥市黄金回收白银回收铂金回收彩金回收店铺靠谱回收门店推荐TOP5排行榜及联系方式推荐 - 前途无量YY
  • NMRPFlash完整指南:如何轻松修复变砖的Netgear路由器
  • DeepL翻译插件:打破语言壁垒的浏览器智能翻译解决方案
  • 终极指南:如何快速修复Kindle电子书封面损坏问题
  • 82人遇难之痛:矿山透明化空间管理缺失,UWB难防“无卡、无图、无追踪”致命漏洞