此试验在自己规划的LPC1114/LPC1343/LPC11U14开发板是验证成功:下面先秀秀图吧,下面是三种芯片三种开发板。SD卡在反面。。。
要完成SD卡U盘功用只要试验LPC1343或许LPC11U14才行,由于它们都有USB功用。下面先讲讲大约的思路。经过USB和PC进行通讯,并枚举一个U盘,详细的操作是经过SPI总线操作SD卡。
下面就先看NXP源代码模仿的U盘,和咱们修正后完成的SD卡U盘:
NXP模仿U盘
SD卡U盘
1.NXP原厂代码免费赠送:USBMem.rar(294.52 KB)
2.自己修正的SD卡U盘,收费哦:SD卡U盘.rar(1.45 MB)
下面看看U盘是读写速度:
从U盘读数据到PC的速度
从PC写数据到U盘速度
从上面能够看出,SD卡U盘的读写速度都十分慢,所以本试验只要试验价值,不能真实作为U盘来运用,当然如用来完成IAP等仍是很不错的,至于提高速度,应该仍是有必定的空间,大不会很大。。。
下面咱们详细阐明从模仿U盘到SD卡U盘都修正了些什么内容,这儿运用Beyond Compare软件进行比照。
左面是模仿U盘代码,右边是修正后的代码
1.增加两个变量:
2. 修正Read函数:
3. 修正Write函数:
4.修正MSC_GetCBW函数:
5.修正宏界说,获取SD卡实践容量等信息
大体的修正就这些,还有部分细节这儿就不再阐明,网友能够下载程序比照。看看是不是十分简略啊!下载到硬件中试试吧。。。。。。。。。。。。。。
关于U盘,自己在刚开始时以为是,经过文件体系来操作文件的读写、格局等。所以一想到对中文长文件名的支撑,就有点害怕,由于光是对长文件名的支撑代码都要170K,而LPC11U14是没有这么大的空间的。经过学习,感觉自己完全是误会了,其实U盘的代码变不杂乱,当然要产品化仍是很难的。下面简略讲讲U盘的完成。
1.怎样完成文件读写?
U盘的指令许多,而咱们运用的就几个,其间最重要的是Read(10/12)和Write(10/12)两个指令,PC机便是经过这两个指令来读写U盘的,而这两个指令中咱们只需要知道该读写哪一个扇区,然后经过SD卡的扇区读写函数就能够完成文件的读写操作了。
2.那么PC怎样知道文件的寄存地址,以及有那些文件的呢?
要知道文件的读写就离不开FAT文件体系了,所以存储介质里面必须有FAT表,而FAT里面便是寄存文件,目录等的信息(详细的FAT表这儿就不介绍了,网友能够到网络上去查找)。所以在NXP的源代码里面有个数组DiskImage,这个数组便是模仿FAT表和发动扇区的,如:0xEB,0x3C,0x90,0x4D,0x53,0x44,0x4F,0x53,0x35,0x2E,0x30,0x00,0x02,0x01,0x01,0x00,从前面几个字节就能够看出是发动扇区的指令吧。。。。。
所以只要咱们的介质里面有发动扇区和FAT表,那么咱们只需要依照PC指令读取相应的扇区,PC机获取发动扇区和FAT表后就能够解码出文件的存储格局,文件巨细等一系列信息了,跟读取硬盘没有多大的差异。。。。