![字体变小](http://blog.hexun.com/img/xiao.gif)
![字体变大](http://blog.hexun.com/img/da.gif)
第1372篇:如何让单片机轻松读写U盘 | ||||||
发布时间:2006年3月27日 点击次数:436
注意硬盘接口的问题.当我们往U盘里面写数据的时候,需要找到文件的扇区地址, 其实在硬盘里面,文件的存放格式是以簇的形式存放的.那么,受限根据FAT表里面 的内容找到首簇,根据根目录下的FDT表里面的内容找到文件的第一簇存放位置就 可以往需要的位置存些数据,注意硬盘是以扇区为读写单位的,所以,如果我们需要 往硬盘里面写少于512字节的时候,就需要将U盘里面的一个扇区(目标)的内容读出 来.讲需要存写的数据写到缓冲区,这就需要你的单片机系统有512字节的RAM,这对 于一个单片机来说是比较困难,那么我们可以扩展一片6116,62256,等RAM,在此一 片6116就可以了.对于读扇区的话,那就和写扇区相似了,一次必须读够512个字节. 单片机的地址,这样我们读写U盘就像读写外部的RAM直接用一条指令:MOVX @DPTR,#DATA,或者 DATAPORT=DAT;就可以了.但是如何将U盘的扇区找到就是我们 面临的最大问题,刚才我已经简要的说明,就是先找到FAT表,读出有用的数据,根据 这些数据计算出文件所在地簇,根据簇和扇区的数学关系,就可以找到文件的扇区, 这样对于一个扇区(512B)你就可以随心所欲的读写了.还有一个关键问题就是需要 在计算机上了解我们到底通过单片机把数据存放到U盘的什么位置了,我们找到的 扇区到底对不对.还有一种情况就是我们明明通过单片机把数据写到U盘里面了,但 是还是通过WINDOWS,无法识别出来,这就需要一个硬盘扇区分析软 件,WWW.jnyldz.COM上有详细的说明.通过这个软件,我们可以清清楚楚地看到U盘 的数据格式,包括FAT表的内容,FDT表的内容FAT的BPB表的内容 等相关的扇区地址 ,和数据区的地址都可以看出来.只要大家掌握了这些就可以用单片机随意的读写 你的U盘了.并且通过这种方式读写,不用厂家提供的封装好了的子程序或者函数. 我们不用担着那些子程序,和函数的DEBUG和面临升级的麻烦,应为程序都是你写的 你想怎么升级就怎么升级.以上是鄙人的一点心得,希望大家批评指教 |