EZ-USB FX系列单片机USB外围设备设计与应用:

PART 1 USB的基本概念

第1章 USB的基本特性

1.1 USB简介2

1.2 USB的发展历程3

1.2.1 USB 1.13

1.2.2 USB 2.04

1.2.3 USB与IEEE 1394的比较4

1.3 USB基本架构与总线架构6

1.4 USB的总线结构8

1.5 USB数据流的模式与管线的概念9

1.6 USB硬件规范10

1.6.1 USB的硬件特性11

1.6.2 USB接口的电气特性12

1.6.3USB的电源管理14

1.7 USB的编码方式14

1.8 结论16

1.9 问题与讨论16

第2章 USB通信协议

2.1 USB通信协议17

2.2 USB封包中的数据域类型18

2.2.1 数据域位的格式18

2.3 封包格式19

2.4 USB传输的类型23

2.4.1 控制传输24

2.4.2 中断传输29

2.4.3 批量传输29

2.4.4 等时传输29

2.5 USB数据交换格式30

2.6 USB描述符34

2.7 USB设备请求42

2.8 USB设备群组44

2.9 结论46

2.10 问题与讨论46

第3章 设备列举

3.1注册表编辑器47

3.2设备列举的步骤49

3.3设备列举步骤的实现--使用CATC分析工具51

3.4结论61

3.5问题与讨论61

第4章 USB芯片与EZUSB

4.1USB芯片的简介62

4.2USB接口芯片64

4.2.1Philips接口芯片64

4.2.2National Semiconductor接口芯片66

4.3内含USB单元的微处理器68

4.3.1Motorola69

4.3.2Microchip69

4.3.3SIEMENS70

4.3.4Cypress71

4.4USB芯片总揽介绍73

4.5USB芯片的选择与评估74

4.6问题与讨论80

第5章 设备与驱动程序

5.1阶层式的驱动程序81

5.2主机的驱动程序83

5.3驱动程序的选择86

5.4结论86

5.5问题与讨论87

第6章 HID群组

6.1HID简介88

6.2HID群组的传输速率88

6.3HID描述符90

6.3.1报告描述符93

6.3.2主要 main 项目类型96

6.3.3整体 global 项目卷标97

6.3.4区域 local 项目卷标98

6.3.5简易的报告描述符99

6.3.6Descriptor Tool 描述符工具 100

6.3.7兼容测试程序101

6.4HID设备的基本请求102

6.5Windows通信程序103

6.6问题与讨论106

PART 2 硬件技术篇

第7章 EZUSB FX简介

7.1简介109

7.2EZUSB FX硬件框图109

7.3封包与PID码111

7.4主机是个主控者113

7.4.1从主机接收数据113

7.4.2传送数据至主机113

7.5USB方向113

7.6帧114

7.7EZUSB FX传输类型114

7.7.1批量传输114

7.7.2中断传输114

7.7.3等时传输115

7.7.4控制传输115

7.8设备列举116

7.9USB核心116

7.10EZUSB FX单片机117

7.11重新设备列举117

7.12EZUSB FX端点118

7.12.1EZUSB FX批量端点118

7.12.2EZUSB FX控制端点0118

7.12.3EZUSB FX中断端点119

7.12.4EZUSB FX等时端点119

7.13快速传送模式119

7.14中断120

7.15重置与电源管理120

7.16EZUSB 2100系列120

7.17FX系列--从FIFO122

7.18FX系列--GPIF 通用型可程序化的接口 122

7.19AN2122/26各种特性的摘要122

7.20修订ID123

7.21引脚描述123

第8章 EZUSB FX CPU

8.1简介130

8.28051增强模式130

8.3EZUSB FX所增强的部分131

8.4EZUSB FX寄存器接口131

8.5EZUSB FX内部RAM131

8.6I/O端口132

8.7中断132

8.8电源控制133

8.9特殊功能寄存器 SFR 134

8.10内部总线135

8.11重置136

第9章 EZUSB FX内存

9.1简介137

9.28051内存138

9.3扩充的EZUSB FX内存139

9.4CS#与OE#信号140

9.5EZUSB FX ROM版本141

第10章 EZUSB FX输入/输出端口

10.1简介143

10.2I/O端口143

10.3EZUSB输入/输出端口寄存器146

10.3.1端口配置寄存器147

10.3.2I/O端口寄存器147

10.4EZUSB FX输入/输出端口寄存器149

10.5EZUSB FX端口配置表151

10.6I2C控制器156

10.78051 I2C控制器156

10.8控制位158

10.8.1START位158

10.8.2STOP位158

10.8.3LASTRD位158

10.9状态位159

10.9.1DONE位159

10.9.2ACK位159

10.9.3BERR位159

10.9.4ID1, ID0159

10.10送出 WRITE I2C数据160

10.11接收 READ I2C数据160

10.12I2C激活加载器160

10.13SFR寻址 FX 162

10.14端口A~E的SFR控制165

第11章 EZUSB FX设备列举与重新设备列举

11.1简介167

11.2预设的USB设备169

11.3USB核心对于EP0设备请求的响应170

11.4固件下载171

11.5设备列举模式172

11.6没有存在EEPROM173

11.7存在着EEPROM, 第一个字节是0xB0 0xB4, FX系列

11.8存在着EEPROM, 第一个字节是0xB2 0xB6, FX系列

11.9配置字节0,FX系列177

11.10重新设备列举 ReNumerationTM 178

11.11多重重新设备列举 ReNumerationTM 179

11.12预设描述符179

第12章 EZUSB FX批量传输

12.1简介188

12.2批量输入传输189

12.3中断传输191

12.4EZUSB FX批量IN的例子191

12.5批量OUT传输192

12.6端点对194

12.7IN端点对的状态194

12.8OUT端点对的状态195

12.9使用批量缓冲区内存195

12.10Data Toggle控制196

12.11轮询的批量传输的范例197

12.12设备列举说明199

12.13批量端点中断199

12.14中断批量传输的范例201

12.15设备列举说明205

12.16自动指针器205

第13章 EZUSB控制端点0

13.1简介209

13.2控制端点EP0210

13.3USB请求212

13.3.1取得状态 Get_Status 214

13.3.2设置特性(Set_Feature)217

13.3.3清除特性(Clear_Feature)218

13.3.4取得描述符(Get_Descriptor)219

13.3.5设置描述符(Set Descriptor)223

13.3.6设置配置(Set_Configuration)225

13.3.7取得配置(Get_Configuration)225

13.3.8设置接口(Set_Interface)225

13.3.9取得接口(Get_Interface)226

13.3.10设置地址(Set_Address)227

13.3.11同步帧227

13.3.12固件加载228

第14章 EZUSB FX等时传输

14.1简介229

14.2等时IN传输230

14.2.1初始化设置230

14.2.2IN数据传输230

14.3等时OUT传输231

14.3.1初始化设置231

14.3.2数据传输232

14.4设置等时FIFO的大小232

14.5等时传输速度234

14.5.1EZUSB 2100系列234

14.5.2EZUSB FX系列235

14.6快速传输 仅存于2100系列 236

14.6.1快速写入236

14.6.2快速读取237

14.7快速传输的时序 仅存于2100系列 237

14.7.1快速写入波形238

14.7.2快速读取波形239

14.8快速传输速度(仅存于2100系列)239

14.9其余的等时寄存器240

14.9.1除能等时寄存器240

14.9.20字节计数位241

14.10以无数据来响应等时IN令牌242

14.11使用等时FIFO242

第15章 EZUSB FX中断

15.1简介243

15.2USB核心中断244

15.3唤醒中断244

15.4USB中断信号源245

15.5SUTOK与SUDAV中断248

15.6SOF中断249

15.7中止 suspend 中断249

15.8USB重置中断249

15.9批量端点中断250

15.10USB自动向量250

15.11USB自动向量译码251

15.12I2C中断252

15.13IN批量NAK中断 仅存于AN2122/26与FX系列 253

15.14I2C STOP反相中断 仅存于AN2122/

26与FX系列 254

15.15从FIFO中断 INT4 255

第16章 EZUSB FX重置

16.1简介257

16.2EZUSB FX打开电源重置 POR 257

16.38051重置的释放259

16.3.1RAM的下载260

16.3.2下载EEPROM260

16.3.3外部ROM260

16.48051重置所产生的影响260

16.5USB总线重置261

16.6EZUSB脱离262

16.7各种重置状态的总结263

第17章 EZUSB FX电源管理

17.1简介265

17.2中止 suspend 266

17.3回复 resume 267

17.4远程唤醒 remote wakeup 269

第18章 EZUSB FX系统

18.1简介271

18.2DMA寄存器描述272

18.2.1来源. 目的. 传输长度地址寄存器272

18.2.2DMA起始与状态寄存器275

18.2.3DMA同步突发使能寄存器275

18.2.4虚拟寄存器278

18.3RD/FRD与WR/FWR DMA闪控的选择278

18.4DMA闪控波形与延伸位的交互影响279

18.4.1DMA外部写入279

18.4.2DMA外部读取280

第19章 EZUSB FX寄存器

19.1简介282

19.2批量数据缓冲区寄存器283

19.3等时数据FIFO寄存器284

19.4等时字节计数寄存器285

19.5CPU寄存器287

19.6I/O端口配置寄存器288

19.7I/O端口A~C输入/输出寄存器289

19.8230 Kbaud UART操作--AN2122/26寄存器291

19.9等时控制/状态寄存器291

19.10I2C寄存器292

19.11中断294

19.12端点0控制与状态寄存器299

19.13端点1~7的控制与状态寄存器300

19.14整体USB寄存器305

19.15快速传输309

19.16SETUP数据311

19.17等时FIFO的容量大小311

19.18通用I/F中断使能312

19.19通用中断请求312

19.20输入/输出端口寄存器D与E313

19.20.1端口D输出313

19.20.2输入端口D脚位313

19.20.3端口D输出使能313

19.20.4端口E输出313

19.20.5输入端口E脚位314

19.20.6端口E输出使能314

19.21端口设置314

19.22接口配置314

19.23端口A与端口C切换配置316

19.23.1端口A切换配置#2316

19.23.2端口C切换配置#2317

19.24DMA寄存器319

19.24.1来源. 目的. 传输长度地址寄存器319

19.24.2DMA起始与状态寄存器320

19.24.3DMA同步突发使能寄存器320

19.24.4选择8051 A/D总线作为外部FIFO321

PART 3 固件技术篇

第20章 EZUSB FX固件架构与函数库

20.1固件架构总览323

20.2固件架构的建立325

20.3固件架构的副函数钩子325

20.3.1工作分配器326

20.3.2设备请求 device request 326

20.3.3USB中断服务例程329

20.4固件架构整体变量332

20.5描述符表333

20.5.1设备描述符333

20.5.2配置描述符334

20.5.3接口描述符334

20.5.4端点描述符335

20.5.5字符串描述符335

20.5.6群组描述符335

20.6EZUSB FX固件的函数库336

20.6.1包含文件 *.H 336

20.6.2子程序336

20.6.3整体变量338

20.7固件架构的原始程序代码338

第21章 EZUSB FX固件范例程序

21.1范例程序的简介346

21.2外围I/O测试程序347

21.3端点对, EP_PAIR范例352

21.4批量测试, BulkTest范例362

21.5等时传输, ISOstrm范例368

21.6问题与讨论373

PART 4 实验篇

第22章 EZUSB FX仿真器

22?1简介375

22?2所需的工具376

22?3EZUSB FX框图377

22.4EZUSB最终版本的系统框图378

22?5第一次下载程序378

22.6EZUSB FX开发系统框图379

22.7设置开发环境380

22.8EZUSB FX开发工具组的内容381

22.9EZUSB FX开发工具组软件382

22.9.1初步安装程序382

22.9.2确认主机 个人计算机 是否支持USB382

22.10安装EZUSB控制平台. 驱动程序以及文件383

22.11EZUSB FX开发电路板385

22.11.1简介385

22.11.2开发电路板的浏览385

22.11.3所使用的8051资源386

22.11.4详细电路386

22.11.5LED的显示387

22.11.6Jumper387

22.11.7连接器391

22.11.8内存映象图392

22.11.9PLD信号394

22.11.10PLD源文件文件395

22.11.11雏形板的扩充连接器P1~P6397

22.11.12Philips PCF8574 I/O扩充IC400

22.12DMA USB FX I/O LAB开发工具介绍401

22.12.1USBFX简介401

22.12.2USBFX及外围整体环境介绍403

22?12?3USBFX与PC连接软件介绍404

22.12.4USBFX硬件功能介绍404

第23章 LED显示器输出实验

23.1硬件设计与基本概念409

23.2固件设计410

23.3.1固件架构文件FW.C411

23.3.2描述符文件DESCR.A51412

23.3.3外围接口文件PERIPH.C417

23.4固件程序代码的编译与链接421

23.5Windows程序, VB设计423

23.6INF文件的编写设计424

23.7结论426

23.8问题与讨论427

第24章 七段显示器与键盘的输入/输出

实验24.1硬件设计与基本概念428

24.2固件设计431

24.2.1七段显示器431

24.2.24×4键盘扫描433

24.3固件程序代码的编译与链接434

24.4Windows程序, VB设计436

24.5问题与讨论437

第25章 LCD文字型液晶显示器输出实验

25.1硬件设计与基本概念438

25.1.1液晶显示器LCD438

25.2固件设计452

25.3固件程序代码的编译与链接456

25.4Windows程序, VB设计457

25.5问题与讨论458

第26章 LED点阵输出实验

26.1硬件设计与基本概念459

26.2固件设计463

26.3固件程序代码的编译与链接463

26.4Windows程序, VB设计465

26.5问题与讨论465

第27章 步进电机输出实验

27.1硬件设计与基本概念466

27.1.11相激磁467

27.1.22相激磁467

27.1.31-2相激磁468

27?1?4PMM8713介绍469

27.2固件设计473

27.3固件程序代码的编译与链接474

27.4Windows程序, VB设计476

27.5问题与讨论477

第28章 I2C接口输入/输出实验

28.1硬件设计与基本概念478

28.2固件设计481

28.3固件程序代码的编译与链接483

28.4Windows程序, VB设计484

28.5问题与讨论485

第29章 A/D转换器与D/A转换器的输入/输出实验

29.1硬件设计与基本概念486

29.1.1A/D转换器486

29.1.2D/A转换器490

29.2固件设计493

29.2.1A/D转换器的固件设计493

29.2.2D/A转换器的固件设计496

29.3固件程序代码的编译与链接497

29.4Windows程序, VB设计498

29.5问题与讨论499

第30章 LCG绘图型液晶显示器输出实验

30.1硬件设计与基本概念500

30.1.1绘图型LCD500

30.1.2绘图型LCD控制指令集503

30.1.3绘图型LCD读取与写入时序图505

30.2固件设计506

30.2.1LCG驱动程序506

30.2.2USB固件码513

30.3固件程序代码的编译与链接516

30.4Windows程序, VB设计517

30.5问题与讨论518

附录A Cypress控制平台的操作

A.1EZUSB控制平台总览519

A.2主画面520

A.3热插拔新的USB设备521

A.4各种工具栏的使用524

A.5故障排除526

A.6控制平台的进阶操作527

A.7测试Unary Op工具栏上的按钮功能528

A.8测试制造商请求的工具栏 2100 系列的开发电路板 529

A.9测试等时传输工具栏532

A.10测试批量传输工具栏533

A.11测试重置管线工具栏535

A.12测试设置接口工具栏537

A.13测试制造商请求工具栏 FX系列开发电路板

A.14执行Get Device Descriptor 操作来验证开发板的功能是否正确539

A.15从EZUSB控制平台中, 加载dev_io的范例并且加以执行540

A.16从Keil侦错应用程序中, 加载dev_io范例程序代码, 然后再加以执行542

A.17将dev_io 目标文件移开, 且使用Keil IDE 集成开发环境 来重建545

A.18在侦错器下执行dev_io目标文件, 并且使用具有侦错能力的IDE547

A.19在EZUSB控制平台下, 执行ep_pair目标文件

A.20如何修改fw范例, 并在开发电路板上产生等时传输550

附录BEZUSB 2100系列及EZUSB FX系列引脚表

B.1EZUSB 2100系列引脚表555

B?2EZUSB FX系列引脚图表561

附录C EZUSB FX寄存器总览

附录D EEPROM烧录方式

EZ-USB FX系列单片机USB外围设备设计与应用