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仿真器 221简介375 222所需的工具376 223EZUSB FX框图377 22.4EZUSB最终版本的系统框图378 225第一次下载程序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 22123USBFX与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 2714PMM8713介绍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 B2EZUSB FX系列引脚图表561
附录C EZUSB FX寄存器总览
附录D EEPROM烧录方式
参考文献
|