第1章 USB基本概念和特性 1
1.1 USB的一般概念 1
目录 1
1.2 USB的发展和应用 2
1.3 USB的特点 4
1.4 USB系统的描述 5
1.5 电缆和连接器 6
1.6 电源 9
1.7 总线协议 10
1.8 稳定性 10
1.10 数据流种类 11
1.9 系统设置 11
1.11 USB设备 13
1.12 USB主机:硬件和软件 14
第2章 EZ-USB FX2简介 16
2.1 主机是主控者 16
2.2 USB方向 16
2.3 令牌和PID码 17
2.4 USB帧 18
2.5 USB传输类型 19
2.6 设备枚举 20
2.7 串行接口引擎 21
2.9 EZ-USB FX2构成 22
2.8 设备重枚举 22
2.10 EZ-USB FX2特性 24
2.11 EZ-USB FX2集成微处理器 24
2.12 EZ-USB FX2硬件框图和封装 25
2.13 EZ-USB FX2端点缓冲区 29
2.14 外部FIFO接口 30
2.15 EZ-USB FX2系列芯片 32
第3章 EZ-USB FX2控制端点 33
3.1 引言 33
3.2 控制端点EP0 33
3.3 USB请求 35
3.3.1 获取状态 37
3.3.2 设置特性 39
3.3.3 清除特性 40
3.3.4 获取描述符 41
3.3.5 设置描述符 45
3.3.6 设置配置 47
3.3.7 获取配置 47
3.3.8 设置接口 48
3.3.9 获取接口 48
3.3.10 设置地址 49
3.3.11 同步帧 49
3.3.12 固件装载 50
4.2 EZ-USB FX2启动模式 52
4.1 引言 52
第4章 EZ-USB FX2枚举和重枚举 52
4.3 缺省USB设备 53
4.4 EEPROM引导加载数据的形式 54
4.4.1 无EEPROM或EEPROM无效 54
4.4.2 “C0”EEPROM引导加载 55
4.4.3 “C2”EEPROM引导加载 55
4.5 EEPROM配置字节 56
4.6 RENUM位 57
4.7 EZ-USB FX2响应设备请求 58
4.8 固件加载的Vendor请求 59
4.10 多重-重枚举 60
4.9 固件程序重枚举过程 60
第5章 EZ-USB FX2中断 61
5.1 引言 61
5.2 特殊功能寄存器 61
5.3 中断过程 64
5.3.1 中断屏蔽 65
5.3.2 中断检测 66
5.3.3 中断响应时间 66
5.4 USB特殊中断 67
5.4.1 RESUME中断 67
5.4.2 USB中断 67
5.5 USB中断自动向量 72
5.7 FIFO/GPIF中断(INT4) 74
5.6 I2C总线中断 74
5.8 FIFO/GPIF中断自动向量 75
第6章 EZ-USB FX2存储器 77
6.1 引言 77
6.2 内部数据RAM 77
6.3 外部程序存储器和外部数据存储器 78
6.3.1 56和100引脚FX2 79
6.3.2 128引脚FX2 79
6.4 FX2存储器分配 80
6.5 冯·诺伊曼片外程序存储器和数据存储器 82
6.6 片内数据存储器(0xE000~0xFFFF) 82
7.2 上电复位(POR) 84
第7章 EZ-USB FX2复位和电源管理 84
7.1 EZ-USB FX2复位 84
7.3 释放CPU复位 85
7.4 CPU复位的影响 86
7.5 USB总线复位 87
7.6 EZ-USB FX2的“断开” 87
7.7 EZ-USB FX2电源管理 88
7.8 USB挂起 89
7.9 唤醒/恢复 90
7.10 USB恢复(远程唤醒) 92
8.2 8051的改进 94
8.1 引言 94
第8章 EZ-USB FX2 CPU介绍 94
8.3 性能综述 95
8.4 软件兼容性 96
8.5 FX2与803x/805x的特性比较 96
8.6 FX2与DS80C320的不同 96
8.7 EZ-USB FX2寄存器接口 97
8.8 EZ-USB FX2内部RAM 98
8.9 I/O端口 98
8.10 中断 98
8.11 电源控制 99
8.12 特殊功能寄存器 99
8.14 复位 100
8.13 外部地址/数据总线 100
第9章 EZ-USB FX2输入和输出 101
9.1 引言 101
9.2 I/O端口 101
9.3 I/O端口交替功能 103
9.3.1 端口A的交替功能 105
9.3.2 端口B和端口D的交替功能 105
9.3.3 端口C的交替功能 106
9.3.4 端口E的交替功能 107
9.4 I2C总线控制器 108
9.4.1 连接I2C外围设备 108
9.4.2 寄存器 109
9.4.4 接收数据 111
9.4.3 发送数据 111
9.5 EEPROM引导加载器 112
第10章 EZ-USB FX2定时/计数器和串行接口 114
10.1 定时/计数器 114
10.1.1 与803x/805x的兼容性 114
10.1.2 定时器0和1 115
10.1.3 定时器速率控制 118
10.1.4 定时器2 118
10.1.6 定时器2带自动重装的16位定时/计数器方式 120
10.1.7 定时器2波特率发生器方式 120
10.1.5 定时器2带俘获的16位定时/计数器方式 120
10.2 串行接口 122
10.2.1 与803x/805x的兼容性 124
10.2.2 高速波特率发生器 124
10.2.3 方式0 125
10.2.4 方式1 127
10.2.5 方式2 130
10.2.6 方式3 131
第11章 EZ-USB FX2端点缓冲区存取 133
11.1 引言 133
11.2 FX2的大端点和小端点 133
11.3 高速和全速的区别 133
11.4 CPU如何配置端点 134
11.5 CPU访问FX2端点数据 135
11.6 CPU对FX2端点的控制 136
11.6.1 控制小端点的EP0、EP1IN和EP1OUT的寄存器 136
11.6.2 控制EP2、EP4、EP6和EP8的寄存器 139
11.6.3 控制所有端点的寄存器 142
11.7 设置数据指针 145
11.7.1 传输长度 145
11.7.2 可访问的内存空间 146
11.8 自动指针 146
12.2 硬件 148
12.1 引言 148
第12章 EZ-USB FX2从属FIFO 148
12.2.1 从属FIFO引脚 149
12.2.2 FIFO数据总线(FD) 150
12.2.3 接口时钟(IFCLK) 151
12.2.4 FIFO标志引脚(FLAGA、FLAGB、FLAGC和FLAGD) 151
12.2.5 控制引脚(SLOE、SLRD、SLWR、PKTEND和FIFOADR[1∶0]) 152
12.2.6 从属FIFO片选(SLCS) 154
12.2.7 实现同步从属FIFO的写 154
12.2.8 实现同步从属FIFO的读 156
12.2.9 实现异步从属FIFO的写 157
12.2.10 实现异步从属FIFO的读 158
12.3.1 固件程序FIFO存取 159
12.3 固件程序 159
12.3.2 EPx存储器 160
12.3.3 从属FIFO可编程级标志(PF) 161
12.3.4 自动输入/输出方式 161
12.3.5 CPU存取OUT包(AUTOOUT=1) 163
12.3.6 CPU存取OUT包(AUTOOUT=0) 163
12.3.7 CPU存取IN包(AUTOOUT=1) 165
12.3.8 CPU存取IN包(AUTOUT=0) 167
12.3.9 自动输入/输出初始化 168
12.3.10 自动方式举例:同步FIFO IN数据传输 169
12.4 手动输出与自动输出之间的切换 170
12.3.11 自动方式举例:异步FIFO IN数据传输 170
第13章 EZ-USB FX2通用可编程接口(GPIF) 171
13.1 引言 171
13.2 硬件 173
13.3 GPIF波形 177
13.3.1 GPIF寄存器 178
13.3.2 设计GPIF波形 178
13.3.3 在判决点状态内再执行一个任务 182
13.3.4 状态指令 184
13.4 固件 188
13.4.1 单向读事务处理 195
13.4.2 单向写事务处理 198
13.4.3 FIFO读和FIFO写事务处理 201
13.4.5 GPIF标志停止 202
13.4.4 GPIF标志的选择 202
13.4.6 固件存取IN包(AUTOIN=1) 206
13.4.7 固件存取IN包(AUTOIN=0) 207
13.4.8 固件存取OUT包(AUTOOUT=1) 213
13.4.9 固件存取OUT包(AUTOOUT=0) 214
13.4.10 突发FIFO事务处理 216
13.5 UDMA接口 219
第14章 硬件开发工具介绍 220
14.1 SY2200 EZ-USB FX2开发系统简介 220
14.1.1 概述 220
14.1.2 EZ-USB开发系统框图 220
14.1.3 初始下载过程 221
14.2 开发系统配套内容 222
14.2.1 开发系统硬件 222
14.2.2 软件工具与文档 222
14.2.3 其他推荐使用工具(系统未提供) 223
14.3 SY2200 EZ-USB FX2开发系统安装 223
14.3.1 软件安装 223
14.3.2 硬件安装 224
14.4 SY2200 EZ-USB FX2开发板 225
14.4.1 总体介绍 225
14.4.2 I2C总线扩展连接器 226
14.4.3 EEPROM选择和使能跳线连接器 226
14.4.5 扩展连接器 227
14.4.4 USB和串口连接器 227
14.4.7 地址分配 229
14.5 SY2200 EZ-USB FX2开发板整体操作流程 229
14.4.6 PCF8574扩展I/O 229
第15章 软件开发工具及其使用 236
15.1 EZ-USB控制面板 236
15.1.1 控制面板的启动 236
15.1.2 控制面板程序的基本操作内容 237
15.1.3 主操作菜单 238
15.1.4 应用程序工具栏 240
15.1.5 主屏工具栏 240
15.1.6 操作工具栏 240
15.1.8 同步传输工具栏 243
15.1.7 制造商请求工具栏 243
15.1.9 批量传输工具栏 244
15.1.10 管道操作和设置接口工具栏 244
15.1.11 GPIF Tool的具体作用及其操作方法简介 245
15.2 利用Keil C调试程序 245
第16章 固件框架和函数库 250
16.1 固件框架 250
16.1.1 概述 250
16.1.2 构建框架 251
16.1.3 框架函数挂钩 252
16.1.5 描述符表 257
16.1.4 框架全局变量 257
16.1.6 固件框架应用举例 261
16.1.7 设计专用设备固件程序 278
16.2 固件函数库 278
16.2.1 固件函数库相关文件 279
16.2.2 固件函数库 279
16.2.3 固件函数库应用举例 281
第17章 设备驱动及应用程序设计 283
17.1 固件下载USB设备驱动程序 283
17.1.1 简介 283
17.1.2 开发EZ-Loader设备驱动程序的步骤 284
17.1.3 设计举例 285
17.2 EZ-USB通用设备驱动程序(GPD)规范 288
17.2.1 引言 288
17.2.2 生成EZ-USB通用设备驱动程序 289
17.2.3 装载EZ-USB通用设备驱动程序 289
17.2.4 GPD与应用程序的接口 290
17.2.5 I/O控制码(IOCTL)参考 291
17.3 应用程序设计举例 300
第18章 EZ-USB FX2编程及应用实例 308
18.1 上传和下载EZ-USB内部RAM和扩展RAM(a3load.hex) 308
18.2 批量端点环路测试(bulkext.hex) 309
18.3 批量环路测试(bulkloop.hex) 309
18.4 批量端点无限发送接收测试(bulksrc.hex) 310
18.5 按钮和灯(dev_io.hex) 311
18.6 批量传输测试(ezbulk.hex) 311
18.7 利用批量端点对进行环路测试(ibn.hex) 313
18.8 内部存储器测试(imemtest.hex) 313
18.9 采用PING NAK中断的批量端点环路测试(pingnak.hex) 317
18.10 Vendor专用命令程序(Vend_Ax.hex) 318
18.11 HID人机接口设备的开发实例 318
18.11.1 HID描述符 318
18.11.2 HID设备的基本请求 319
18.11.3 HID设备固件程序 320
18.11.4 VB应用程序设计 329
18.11.5 程序运行结果 340
附录A EZ-USB FX2封装、引脚分配及功能 357
附录B 寄存器 357
B.1 引言 357
B.2 特殊功能寄存器 358
B.3 GPIF波形存储器 364
B.4 通用配置寄存器 365
B.4.1 CPU控制和状态 365
B.4.2 接口配置(端口、GPIF、Slave FIFO) 366
B.4.3 从属FIFO FLAGA~FLAGD引脚配置 368
B.4.4 FIFO复位 370
B.4.5 断点、断点高位地址和断点低位地址 370
B.4.7 Slave FIFO接口引脚极性 371
B.4.6 设置230 Kb/s(T0、T1、T2) 371
B.4.8 芯片修改ID 372
B.4.9 芯片版本控制 372
B.4.10 GPIF保持时间 373
B.5 端点配置寄存器 374
B.5.1 端点1-OUT/端点1-IN配置 374
B.5.2 端点2、4、6和8配置 374
B.5.3 端点2、4、6和8的Slave FIFO配置 376
B.5.4 端点2、4、6、8 AUTOIN包长度(高/低位) 377
B.5.5 端点2、4、6、8/Slave FIFO可编程级标志(高/低位) 378
B.5.6 端点2、4、6、8 ISO每帧IN包 383
B.5.7 强制IN包结束 384
B.5.8 强制OUT包结束 384
B.6 中断寄存器 385
B.6.1 端点2、4、6、8 Slave FIFO标志中断使能/请求 385
B.6.2 IN-BULK-NAK中断使能/请求 386
B.6.3 端点PING-NAK/IBN中断使能/请求 387
B.6.4 USB中断使能/请求 388
B.6.5 端点中断使能/请求 389
B.6.6 GPIF中断使能/请求 389
B.6.7 USB错误中断使能/请求 390
B.6.9 清除错误计数 391
B.6.10 INT2(USB)自动向量 391
B.6.8 USB错误计数器限定 391
B.6.11 INT4(Slave FIFO和GPIF)自动向量 392
B.6.12 INT2和INT4设置 392
B.7 输入/输出寄存器 393
B.7.1 I/O PORTA交替配置 393
B.7.2 I/O PORTC交替配置 393
B.7.3 I/O PORTE交替配置 394
B.7.4 I2C总线控制和状态 394
B.7.5 I2C总线数据 396
B.7.6 I2C总线控制 396
B.7.7 自动指针1和2的MOVX访问 396
B.8 UDMA CRC寄存器 397
B.9.1 USB控制和状态 398
B.9 USB控制寄存器 398
B.9.2 进入挂起状态 399
B.9.3 唤醒控制和状态 399
B.9.4 数据触发控制 400
B.9.5 USB帧计数的高位 401
B.9.6 USB帧计数的低位 401
B.9.7 USB微帧计数 401
B.9.8 USB功能地址 402
B.10 端点寄存器 402
B.10.1 端点0(字节计数高位) 402
B.10.2 端点0控制和状态(字节计数低位) 402
B.10.5 端点4和端点8字节计数高位 403
B.10.4 端点2和端点6字节计数高位 403
B.10.3 端点1 OUT/IN字节计数 403
B.10.6 端点2、4、6、8字节计数低位 404
B.10.7 端点0控制和状态 404
B.10.8 端点1 OUT/IN控制和状态 405
B.10.9 端点2控制和状态 406
B.10.10 端点4控制和状态 406
B.10.11 端点6控制和状态 407
B.10.12 端点8控制和状态 407
B.10.13 端点2和端点4的Slave FIFO标志 408
B.10.14 端点6和端点8的Slave FIFO标志 408
B.10.17 端点4和端点8的Slave FIFO字节计数高位 409
B.10.16 端点6的Slave FIFO总字节计数高位 409
B.10.15 端点2的Slave FIFO总字节计数高位 409
B.10.18 端点2、4、6、8的Slave FIFO字节计数低位 410
B.10.19 设置数据指针高位和低位地址 410
B.10.20 设置自动数据指针 411
B.10.21 设置数据的8字节 411
B.11 通用可编程接口(GPIF)寄存器 412
B.11.1 GPIF波形选择器 412
B.11.2 GPIF工作和闲置驱动方式 412
B.11.3 CTL输出 413
B.11.4 GPIF高位地址 414
B.11.5 GPIF地址的低位 414
B.11.6 GPIF流状态寄存器 415
B.11.7 GPIF事务处理计数字节 421
B.11.8 端点2、4、6、8 GPIF标志选择 422
B.11.9 端点2、4、6、8 GPIF停止传输 422
B.11.10 端点2、4、6、8的Slave FIFO GPIF触发 423
B.11.11 GPIF数据高位(16位方式) 423
B.11.12 读/写GPIF数据低位和触发传输 423
B.11.13 读GPIF数据低位,无事务处理触发 423
B.11.14 GPIF RDY引脚配置 424
B.11.15 GPIF RDY引脚状态 424
B.12.3 端点1 IN缓冲区 425
B.12.2 端点1 OUT缓冲区 425
B.1 2.1 端点0 IN/OUT缓冲区 425
B.12 端点缓冲区寄存器 425
B.12.4 端点2/Slave FIFO缓冲区 426
B.12.5 512字节端点4/Slave FIFO缓冲区 426
B.12.6 512/1 024字节端点6/Slave FIFO缓冲区 426
B.12.7 512字节端点8/Slave FIFO缓冲区 427
B.13 同步延时寄存器 427
附录C EZ-USB FX2指令集 429
C.1 引言 429
C.2 指令时序 433
C.3 延展存储器周期(等待状态) 433
C.4 双数据指针 434
C.5 特殊功能寄存器 435