单片机读写U盘的一点经验心得

经过一段时间的辛勤努力终于将U盘CF卡等掌握了,将笨(比较笨)人在开发过程中的心得告知大建,希望大家多交流:个人信息保护,已隐藏如何让单片机识别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;就可以了UploadImages/jftjft20051011113043.rar

不错


好好学习


值得借鉴学习!


引用回复:经过一段时间的辛勤努力终于将U盘CF卡等掌握了,将笨(比较笨)人在开发过程中的心得告知大建,希望大家多交流:个人信息保护,已隐藏如何让单片机识别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;就可以了UploadImages/jftjft20051011113043.rar


再支持一下,我就是受此启发用单片机完成存储卡和U盘文件管理的。


请问:jft 说的"找到目标扇区,转换成单片机的地址"是什么意思?


这句话是有问题的。 单片机对U盘的管理和存储是以扇区为单位进行的。 你只要写出初始化、扇区读、扇区写3个子程序就可以 按文件系统要求操作了。


谢谢!


请教楼主,单片机写U盘的话,不是要擦除一个BLOCK,也就是32KB,这个32K该怎么解决呢。你所提的是一个扇区只是512B。


这事由U盘内部完成,用户不用考虑. 不同的U盘,其选用的存储介质并不完全相同,如何管理是他内部事物, 但U盘控制器本身与外部接口交互是按扇区处理的.


只有登录才能回复,可以选择微信账号登录