关于单片机读写U盘F16和F32文件系统细节以及如何编码实现单片机对文件系统的常用操作.pdf
技术小结
目录
摘要I
AbstractII
符号说明III
第1章硬件设计1
1.1硬件概述1
第2章U盘的逻辑结构2
2.1U盘的逻辑结构2
第3章USB通信协议3
3.1USB设备开工的机理3
3.2USB描述符3
3.3USB设备的枚举过程(开工过程)4
3.4USB1.1协议6
3.4.1重新认识枚举过程7
3.4.2基于SL811的USB底层传输函数实现要点9
3.4.3usbXfer()函数10
3.4.4epOXfer()函数20
3.5块传输(Bulk)22
3.6SCSI命令24
3.6.1跟U盘初始化有关的SCSI命令24
3.6.2Read和WriteU盘的命令27
3.7U盘兼容性问题的探讨29
第4章微软的文件系34
4.1FAT16文件系统简介34
4.1.1保留区34
4.1.2FAT区37
4.1.3根文件夹40
4.1.4数据区40
4.2FAT32文件系统简介40
4.3FAT文件系统的局限性41
第5章编码实例分析42
5.1需求简述42
5.2文件结构42
5.3Main.c42
5.4USB.c43
5.5timer.c44
5.6filesys.c44
-IV-
5.6.1变量说明44
5.6.2扇区读写函数44
5.6.3询问下一簇号函数45
5.6.4FAT初始化函数(BPB信息分析)45
5.6.5OpenFiles47
5.6.6创建文件50
5.6.7写入文件51
第6章使用CH375的解决方案52
6.1只作简单介绍52
结论53
参考文献54
致谢55
-V-
第1章硬件设计
1.1硬件概述
先详细介绍基于Cypress公司的SL811芯片的扩展方案,基于国内南京沁恒电子的
CH375芯片的方案最后介绍。本文尽量介绍关于USB,U盘和文件系统等平台无关的内
容,SL8n硬件平台方面的内容不可避免要涉及到一点,但尽量控制到最少。
硬件很简单,详见protel文件(省略了无关的部分,比较粗糙,凑合看...)。主要是扩展
一片32K的外部RAM62256作为数据缓冲,同时分配好SL8n的地址。通过51单片机的
A15地址线分别连接到外部RAM62256和SL8n的片选CS端,来区分两者的地址,可见
RAM占据低32K地址空间,而SL811依“写地址”和“读写数据地址”分别占据8000H
和8001H两个字节的地址空间。
-1-
技术小结
第2章U盘的逻辑结构
2.1U盘的逻辑结构
U盘可以看成是以扇区(1扇区=512Bytes)为单位线性排列的实体,即0号扇区,1
号扇区,2号扇区,……这样按顺序地排列下去。U盘是flash,对flash的操作总是以块为
单位的,因此单片机对U盘的操作是以扇区为单位,整个扇区地读取,或整个扇区地写
入。
-2-
第3章USB通信协议
第3章USB通信协议
3.1USB设备开工的机理
USB是即插即用的,涵盖海量存储器(如U盘、移动硬盘)、人机交互设备(如鼠标
键盘游戏杆)、扫描仪、打印机等等各种各样功能的设