如何让单片机轻松读写U盘

[复制链接]
查看1082 | 回复0 | 2011-9-7 22:46:08 | 显示全部楼层 |阅读模式
<





单片机系统大容量数据存储已经是大家非常迫切的需求.
其中U盘的发展非常迅速,随着FLASH存储技术的发展,单片机海量存储选用U盘已经
成为大家首选.如何让单片机识别U盘,并且象在WINDOWS下识别FAT32 FAT16 NTFS
等格式的随意读写困扰不少同行.其实单片机读写U盘主要的是找到接口芯片,象
NSL912,CH375等都是非常好用的芯片.但是找到接口芯片还不行.除非你用厂家提
供的程序,那需要你来调整单片机适应他们的设置,这个过程也是麻烦的,并且无法
从底层的接口来掌握.刚才说,找到单片机读写U盘的接口芯片后,还需要了解硬盘
的分区格式和数据接口,在此我向大家推荐一本书<<硬盘扇区读写技术>>
机械工业出版社宋群生主编的.这本书很详细的向大家讲解了硬盘的分区格式和数
据格式包括,FAT FDT等,但是还是需要大家注意,就是在计算机上如何了解U盘的数
据存放格式,网站www.jnyldz.com有资料可以参考.就是在读写扇区的时候,一定要
注意硬盘接口的问题.当我们往U盘里面写数据的时候,需要找到文件的扇区地址,
其实在硬盘里面,文件的存放格式是以簇的形式存放的.那么,受限根据FAT表里面
的内容找到首簇,根据根目录下的FDT表里面的内容找到文件的第一簇存放位置就
可以往需要的位置存些数据,注意硬盘是以扇区为读写单位的,所以,如果我们需要
往硬盘里面写少于512字节的时候,就需要将U盘里面的一个扇区(目标)的内容读出
来.讲需要存写的数据写到缓冲区,这就需要你的单片机系统有512字节的RAM,这对
于一个单片机来说是比较困难,那么我们可以扩展一片6116,62256,等RAM,在此一
片6116就可以了.对于读扇区的话,那就和写扇区相似了,一次必须读够512个字节.
对于单片机读写U盘,关键的问题就是找到我们的目标扇区,找到目标扇区,转换成
单片机的地址,这样我们读写U盘就像读写外部的RAM直接用一条指令:MOVX
@DPTR,#DATA,或者 DATAPORT=DAT;就可以了.但是如何将U盘的扇区找到就是我们
面临的最大问题,刚才我已经简要的说明,就是先找到FAT表,读出有用的数据,根据
这些数据计算出文件所在地簇,根据簇和扇区的数学关系,就可以找到文件的扇区,
这样对于一个扇区(512B)你就可以随心所欲的读写了.还有一个关键问题就是需要
在计算机上了解我们到底通过单片机把数据存放到U盘的什么位置了,我们找到的
扇区到底对不对.还有一种情况就是我们明明通过单片机把数据写到U盘里面了,但
是还是通过WINDOWS,无法识别出来,这就需要一个硬盘扇区分析软
件,WWW.jnyldz.COM上有详细的说明.通过这个软件,我们可以清清楚楚地看到U盘
的数据格式,包括FAT表的内容,FDT表的内容FAT的BPB表的内容 等相关的扇区地址
,和数据区的地址都可以看出来.只要大家掌握了这些就可以用单片机随意的读写
你的U盘了.并且通过这种方式读写,不用厂家提供的封装好了的子程序或者函数.
我们不用担着那些子程序,和函数的DEBUG和面临升级的麻烦,应为程序都是你写的
你想怎么升级就怎么升级.以上是鄙人的一点心得,希望大家批评指教

热帖推荐
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则