目录
第一章 绪论. 1
1.1 PC接口简介 1
1.2 USB 接口分析 1
1.3 USB 器件的选择 1
1.4 Mass Storage协议与FAT16文件系统 2
第二章 USB总线结构. 3
2.1 总线拓扑结 3
2.2 USB设备 3
2.2.1 USB HUB 4
2.2.2 即插即用. 5
2.2.3 设备电源. 6
2.2.4 设备的挂起. 6
2.3 USB主机 6
2.4 USB数据流 7
2.5 USB的端点 9
第三章 协议. 12
3.1 Mass Storage 协议 12
3.2 Bulk-Only传输协议 16
3.3 SCSI指令集 18
3.4 FAT16 文件系统 21
3.4.1 FAT 文件系统结构. 21
3.4.2 Flash盘的FAT结构. 26
第四章 程序实现与调试. 29
4.1 固件程序的实现 29
4.1.1 主循环——MAINLOOP.C 29
4.1.2 中断服务程序——D12ISR.C 29
4.1.3 标准设备请求处理——D12SETUP.C 33
4.1.4 NAND FLASH操作程序——NFLASH32.C 38
4.2 固件调试 42
4.2.1 检查USB器件是否正常工作. 42
4.2.2 设备枚举. 43
4.2.3 BULK_ONLY传输协议命令处理. 43
4.2.4 FLASH的读写. 45
结论. 46
致谢. 47
参考文献. 48
附录. 49
附录 A USB接口芯片命令总汇 49
A1.初始化命令. 50
A2.数据流命令. 54
A3.数据流命令. 59
附录 B U盘固件程序源码清单 60
第一章绪论
1.1 PC接口简介
PC中的接口有两类:串行接口和并行接口。计算机内部总线,如CPU与存储器之间匀采用并行接口,这样速度快;但外设却以串行接口比较占优势。传统的打印机接口为并行接口。SCSI标准的全名是小型设备通用接口标准,其传输速率为10M,早期的扫描仪一般使用此接口,硬盘与主机的联接也使用这种接口。串行接口出现最早,使用最广的RS232接口,但其速度太慢,现在已经逐渐被淘汰。USB接口和IEEE1394接口是两种速度比较高的串行接口,还有局域网中的以太网接口,它们具有较广阔的发展前景和应用潜力。USB适用于低档外设与主机之间的高速数据传输,USB1.1可以达到1.5Mbps或12Mbps的传输率,而1394更是可达100/200/400Mbps。USB2.0将速度定位在480Mbps,而IEEE1394也推出了1394b 1.3.1 版草案,速度从800Mbps起步,最高可达3.2Gbps。局局域中用得最多的是以太网接口,速度可达100Mbps,当使用光纤传输时,速度可达1000Mbps。
1.2 USB 接口分析
通用串行总线(Universal Serial Bus USB),是一种快速、灵活的总线接口。与其它通信接口比较,USB接口的最大特点是易于使用,这也是USB的主要设计目标。作为一种高速总线接口,USB适用于多种设备,如数码相机、MP3播放机、高速数据采集设备等。易于使用还表现在USB接口支持热插拔,并且所有的配置过程都由系统自动完成,无需用户干预。USB接口支持1.5Mb/s(低速)、12Mb/s(全速)和高达480Mb/s(USB 2.0规范)的数据传输速率,扣除用于总线状态、控制和错误监测等的数据传输,USB的最大理论传输速率仍达1.2Mb/s或9.6Mb/s,远高于一般的串行总线接口。USB接口芯片价格低廉,一个支持USB 1.1 规范的USB接口芯片价格大多在人民币(2004年)15~30元之间,这也大大促进USB设备的开发与应用。
1.3 USB 器件的选择
在进行一个USB设备开发之前,首先要根据具体使用要求选择合适的USB控制器。目前,市场上供应的USB控制器主要有两种:带USB接口的单片机(MCU)或纯粹的USB接口芯片。带USB接口的单片机从应用上又可以分成两类,一类是从底层设计专用于USB控制的单片机另一类是增加了USB接口的普通单片机,如Cypress公司的EZ-USB(基于8051),选择这类USB控制器的最大好处在于开发者对系统结构和指令集非常熟悉,开发工具简单,但对于简单或低成本系统。但价格因素也是在实际选择过程中需要考虑的因素。纯粹的USB 接口芯片仅处理USB通信,必须有一个外部微处理器来进行协议处理和数据交换。典型产品有Philips公司的PDIUSBD11(I2C接口)、PDIUSBD12(并行接口),NS公司的USBN9603/9604(并行接口),NetChip公司的NET2888 等。USB接口芯片的主要特点是价格便宜、接口方便、可靠性高,尤其适合于产品的改型设计(硬件上仅需对并行总线和中断进行改动,软件则需要增加微处理器的USB中断处理和数据交换程序、PC机的USB接口通信程序,无需对原有产品系统结构作很大的改动)。