关于单片机读写U盘F16与F32文件系统.doc

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
摘要 本文以51单片机为例介绍如何扩展USB接口进行对U盘的读写,并详细介绍FAT16、FAT32文件系统的细节以及如何编码实现单片机对文件系统的常用操作,顺带提到一点关于U盘兼容性问题的解决经验。在这里单片机是host,U盘是slave。 在嵌入式系统中实现host很有意义,可以直接扩展出大容量的外存储器。 只要对单片机有一点点了解的人应该可以很顺利地阅读下去,如有简单的C语言编程基础更佳。本文是科普性质,并不面面俱到,有一点应用笔记的味道。章节间关联性较强,最好按顺序来阅读。 本文资料完全来自网络,再加入了笔者自己的理解和实践结果。本文末尾列出了所有的参考资料。如果觉得有知识产权问题请在21ic社区发信给fjh。 仓促成文,错误绝对存在,但希望不影响阅读。 关键词 USB枚举过程;读写U盘;SL811;FAT16;FAT32 Abstract Keywords  符号说明 (略) 不要删除行尾的分节符,此行不会被打印 目录 摘要 I Abstract II 符号说明 III 第1章 硬件设计 1 1.1 硬件概述 1 第2章 U盘的逻辑结构 2 2.1 U盘的逻辑结构 2 第3章 USB通信协议 3 3.1 USB设备开工的机理 3 3.2 USB描述符 3 3.3 USB设备的枚举过程(开工过程) 4 3.4 USB1.1协议 6 3.4.1 重新认识枚举过程 7 3.4.2 基于SL811的USB底层传输函数实现要点 9 3.4.3 usbXfer()函数 10 3.4.4 ep0Xfer()函数 20 3.5 块传输(Bulk) 22 3.6 SCSI命令 24 3.6.1 跟U盘初始化有关的SCSI命令 24 3.6.2 Read和Write U盘的命令 27 3.7 U盘兼容性问题的探讨 29 第4章 微软的文件系统 34 4.1 FAT16文件系统简介 34 4.1.1 保留区 34 4.1.2 FAT区 37 4.1.3 根文件夹 40 4.1.4 数据区 40 4.2 FAT32文件系统简介 40 4.3 FAT文件系统的局限性 41 第5章 编码实例分析 42 5.1 需求简述 42 5.2 文件结构 42 5.3 Main.c 42 5.4 USB.c 43 5.5 timer.c 44 5.6 filesys.c 44 5.6.1 变量说明 44 5.6.2 扇区读写函数 44 5.6.3 询问下一簇号函数 45 5.6.4 FAT初始化函数(BPB信息分析) 45 5.6.5 Open Files 47 5.6.6 创建文件 50 5.6.7 写入文件 51 第6章 使用CH375的解决方案 52 6.1 只作简单介绍 52 结论 53 参考文献 54 致谢 55 千万不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个目录”。打印前,不要忘记把上面“Abstract”这一行后加一空行 硬件设计 硬件概述 先详细介绍基于Cypress公司的SL811芯片的扩展方案,基于国内南京沁恒电子的CH375芯片的方案最后介绍。本文尽量介绍关于USB、U盘和文件系统等平台无关的内容,SL811硬件平台方面的内容不可避免要涉及到一点,但尽量控制到最少。 硬件很简单,详见protel文件(省略了无关的部分,比较粗糙,凑合看…)。主要是扩展一片32K的外部RAM 62256作为数据缓冲,同时分配好SL811的地址。通过51单片机的A15地址线分别连接到外部RAM 62256和SL811的片选CS端,来区分两者的地址,可见RAM占据低32K地址空间,而SL811依“写地址”和“读写数据地址”分别占据8000H和8001H两个字节的地址空间。 U盘的逻辑结构 U盘的逻辑结构 U盘可以看成是以扇区(1扇区=512Bytes)为单位线性排列的实体,即0号扇区,1号扇区,2号扇区,……这样按顺序地排列下去。U盘是flash,对flash的操作总是以块为单位的,因此单片机对U盘的操作是以扇区为单位,整个扇区地读取,或整个扇区地写入。 USB通信协议 USB设备开工的机理 USB是即插即用的,涵盖海量存储器(如U盘、移动硬盘)、人机交互设备(如鼠标键盘游戏杆)、扫描仪、打印机等等各种各样功能的设备,那么USB主机是如何判断目前接入的设备到底是怎么样的呢?答案是USB描述符,以及USB的枚举。 USB描述符 这个概念很简单,就是对各种纷繁芜杂的USB外设按功能划分大类(class),大类下又再细分小类(subclass),每个类别给予一串特定的符号(Descriptor)供主机辨识。 每个USB设备只能有一个DEVICE描述符,它指明了该设备属于哪一大类,是海量存储器类,还是人机交互设备类,还是打印机或者扫

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档