《EZ-USB FX2单片机原理、编程及开发应用》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:钱峰编著(上海交通大学电气工程学院)
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2006
  • ISBN:7810777408
  • 页数:439 页
图书介绍:本书全面系统地介绍了新一代智能USB接口芯片EZ-USB FX2,涵盖了其编程、原理、驱动和应用程序等内容。

第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