Transfers for control, bulk, and interrupt all use the same format for their Transfer Descriptor (TD). This General TD is a 16-byte, host memory structure that must be aligned to a 16-byte boundary.
上文:
控制传输、批量传输和中断传输均采用相同格式的传输描述符(TD)。此通用TD是一个16字节的主机内存结构体,必须按16字节边界对齐。
4.3.1.1 General Transfer Descriptor Format
注:在双字0(Dword0)中,存在主机控制器(HC)可读写的字段。该双字中未使用的部分(以”——“标示)必须满足以下要求:主机控制器要么不写入这些位,要么在读取后保持原值写回。当传输描述符(TD)对主机控制器可见时,主机控制器驱动程序(HCD)不应修改TD的任何部分。
4.3.1.2 General Transfer Descriptor Field Definitions
表4-2:通用传输描述符(TD)字段定义
字段名 | HC访问权限 | 说明 |
---|---|---|
R | R | 缓冲区舍入控制 • 该位为0时:从端点传输到TD的最后一个数据包必须完全填满定义的数据缓冲区 • 该位为1时:最后一个数据包可以小于定义的缓冲区,且不会在TD上引发错误条件 |
DP | R | 方向/包标识符 该2位字段指示数据流方向和令牌包使用的PID。仅当ED中的D字段设置为00b或11b(PID判定延迟到TD)时,此字段对HC相关。 编码定义: • 00b:SETUP(到端点) • 01b:OUT(到端点) • 10b:IN(从端点) • 11b:保留 |
DI | R | 延迟中断 该字段包含本TD的中断延迟计数值。TD完成时,HC可等待DelayInterrupt帧数后再产生中断。如果DelayInterrupt为111b,则此TD完成不产生中断 |
T | R/W | 数据翻转 该2位字段用于生成/比较数据PID值(DATA0或DATA1)。每个数据包成功发送/接收后更新。当数据翻转值从ED的toggleCarry字段获取时,此字段的最高位为’0’;当从本字段最低位获取时,最高位为’1’ |
EC | R/W | 错误计数 每次传输错误时此值递增。如果ErrorCount为2时又发生错误,错误类型将记录在ConditionCode字段并放入完成队列。事务无错误完成时,ErrorCount重置为0 |
CC | R/W | 条件码 该字段包含最后一次尝试执行的事务状态(参见第0节) |
CBP | R/W | 当前缓冲区指针 包含下一个将要访问的端点传输内存位置的物理地址。值为0表示零长度数据包或所有字节已传输完成 |
NextTD | R/W | 下一个TD指针 该条目指向链接到此端点的TD列表中的下一个TD |
BE | R | 缓冲区结束指针 包含此TD缓冲区中最后一个字节的物理地址 |
访问权限说明:
- R:只读(主机控制器仅读取)
- R/W:读写(主机控制器可读取和写入)
技术特性总结:
- 支持精确的缓冲区长度控制(R位)
- 提供灵活的数据方向/PID配置(DP字段)
- 实现中断延迟优化机制(DI字段)
- 包含完整的数据 toggle 管理(T字段)
- 具备错误计数和状态报告功能(EC/CC字段)
- 采用指针链式结构管理数据缓冲区和TD队列
(翻译说明:采用分层技术说明结构,保留所有二进制编码和硬件操作细节,对专业术语进行准确对应,维持技术文档的严谨性和完整性)