第1章 USB简介 1
1.1 USB出现的动因 1
1.2 适用的对象和目标 2
1.3 设计原则和特性 2
1.4 USB性能 4
1.4.1 不同接口传输速率对比 4
1.4.2 USB的传输方式 4
1.4.3 USB接口设备供电 5
1.4.4 USB接口连接距离 5
1.5 USB 2.0 5
1.6 全速USB总线接口控制器芯片简介 6
第2章 USB 1.1规范概述 8
2.1 USB总线体系结构 8
2.2 电气连接特性 9
2.2.1 USB电缆 9
2.2.2 USB传输信号状态 10
2.2.3 USB电源管理 11
2.3 数据的编码和解码 12
2.4 USB总线传输协议 12
2.4.1 包的格式 13
2.4.2 数据字段的格式 15
2.4.3 数据交换的格式 18
2.5 USB总线通道 19
2.5.1 外设端点 20
2.5.2 管道 21
2.6 USB总线的数据传输类型 22
2.6.1 控制传输 23
2.6.2 中断传输 28
2.6.3 批传输 31
2.6.4 同步传输 34
2.7 USB主机的硬件与软件 37
2.7.1 主机控制器功能 38
2.7.2 软件功能 39
2.7.3 主机控制器驱动器(HCD) 42
2.7.4 USB总线驱动程序(USBD) 42
2.8 USB总线设备 49
2.8.1 USB总线设备状态 50
2.8.2 通用USB总线设备操作 52
2.8.3 USB总线设备请求 54
2.8.4 标准设备请求 56
2.8.5 描述表 61
2.8.6 标准描述表的定义 62
2.8.7 设备类定义 67
3.2 EZ-USB芯片结构 68
第3章 EZ-USB系列接口控制芯片 68
3.1 EZ-USB的特性 68
3.3 EZ-USB传输类型与控制 69
3.3.1 批传输 70
3.3.2 中断传输 73
3.3.3 同步传输 73
3.3.4 控制传输 74
3.3.5 数据切换控制 75
3.3.6 批传输端点中断控制 76
3.3.7 自动指针控制 77
3.4 EZ-USB微处理器 77
3.5.2 EZ-USB的控制端点 78
3.5 EZ-USB端点 78
3.5.1 批传输端点 78
3.5.3 EZ-USB的中断端点 79
3.5.4 EZ-USB的同步端点 79
3.6 EZ-USB的存储空间 79
3.6.1 8051存储器 79
3.6.2 EZ-USB扩展存储器 81
3.6.3 EZ-USB的CS#和OE#信号 82
3.6.4 EZ-USB的ROM 83
3.7.2 I/O端点 84
3.7 EZ-USB的输入和输出 84
3.7.1 介绍 84
3.7.3 I2C总线控制器 86
3.7.4 发送I2C数据 86
3.7.5 接收I2C数据 86
3.7.6 I2C自举启动 87
3.8 EZ-USB的枚举和再次枚举 88
3.8.1 介绍 88
3.8.2 默认的USB总线设备 89
3.8.3 EZ-USB内核对EP0设备请求的响应 89
3.8.4 固件装载 91
3.8.5 枚举模式 92
3.8.6 没有串行EEPROM的情况 93
3.8.7 串行EEPROM存在且首字节为0xB0 93
3.8.8 串行EEPROM存在且首字节为0xB2 94
3.8.9 再次枚举 95
3.8.10 多重再次枚举 95
3.8.11 缺省的描述符 95
3.9 EZ-USB的快速传输模式 104
3.10 EZ-USB中断 104
3.12 EZ-USB寄存器 105
3.12.1 介绍 105
3.11 EZ-USB的复位和电源管理 105
3.12.2 批数据缓冲区 106
3.12.3 同步数据FIFO 107
3.12.4 同步字节数寄存器 108
3.12.5 CPU寄存器 110
3.12.6 端口设置 110
3.12.7 输入/输出端口寄存器 112
3.12.8 230 kbaud UART操作 114
3.12.9 同步控制/状态标志寄存器 114
3.12.10 I2C总线寄存器 115
3.12.11 中断 117
3.12.12 端点0控制和状态寄存器 122
3.12.13 端点1~7的控制和状态寄存器 124
3.12.14 全局USB寄存器 127
3.12.15 快速传输 132
3.12.16 初始化数据 134
3.12.17 同步FIFO大小 134
3.13 EZ-USB产品序列及特点 135
第4章 Windows WDM驱动程序基本结构 136
4.1 设备的驱动程序的层次结构 136
4.1.2 设备对象之间的关联 138
4.1.1 设备的递归枚举 138
4.1.3 WDM驱动程序对象 139
4.1.4 WDM设备对象 141
4.1.5 建立设备堆栈 145
4.2 DriverEntry例程 145
4.2.1 DriverEntry概述 146
4.2.2 DriverUnload例程 147
4.2.3 驱动程序再次初始化例程 148
4.3 AddDevice例程 148
4.3.1 创建设备对象 148
4.3.2 为设备命名 150
4.3.3 设备接口 152
4.3.4 其他全局性的设备初始化操作 155
第5章 USB设备驱动程序设计 160
5.1 Windows USB驱动程序接口 161
5.1.1 USB总线软件体系结构 162
5.1.2 USBD 162
5.1.3 UHCD和OpenHCI 163
5.1.4 根集线器驱动程序 163
5.1.5 USB总线设备客户软件 163
5.1.6 USB总线设备驱动程序装载 164
5.2 USBDI的IOCTL 164
5.3 USBDI结构定义 165
5.4 URB的定义 169
5.5.1 设计工具包DDK的安装 171
5.5 开发设备驱动程序 171
5.5.2 设备驱动程序的设计 174
5.5.3 利用DriverStudio开发USB驱动程序 176
5.6 EZ-USB通用驱动程序说明 184
5.6.1 引言 184
5.6.2 建立EZ-USB GPD 185
5.6.3 装载EZ-USB GPD 185
5.6.4 用户态和GPD的接口 186
5.6.5 I/O控制程序代码参考 187
6.1.1 硬件设备内容 188
第6章 EZ-USB固件程序开发 188
6.1 固件基础 188
6.1.2 固件与报表 189
6.1.3 识别一个设备为HID 189
6.1.4 HID特定请求 190
6.1.5 数据传输 191
6.1.6 固件的执行 191
6.2 EZ-USB固件 192
6.3 EZ-USB固件程序的结构 194
6.3.1 EZ-USB固件程序框架简介 194
6.3.3 EZ-USB固件程序框架函数 196
6.3.2 固件程序框架的建立 196
6.4 EZ-USB固件全局变量 204
6.5 EZ-USB设备描述表 205
6.5.1 描述符 205
6.5.2 设备描述符(Device Descriptor) 206
6.5.3 EZ-USB描述表 206
6.6 EZ-USB固件库 209
6.7 用汇编语言开发固件代码 210
第7章 EZ-USB设备开发实例 215
7.1 开发工具包 215
7.2 批传输实例 215
7.2.1 固件代码 216
7.2.2 固件代码的调试 230
7.2.3 固件代码的下载 234
7.2.4 客户端程序 235
7.3 USB设备的开发 239
7.3.1 简介 239
7.3.2 USB总线音频采集设备 239
7.3.3 软件的实现 241
附录A USB音频设备固件程序源代码 243
附录B EZ-USB寄存器 261
附录C EZ-USB 2131Q接口连接原理图 269
附录D 词汇表 270