LPC11U14实现SD卡U盘

发布者:快乐旅途最新更新时间:2016-07-14 来源: eefocus关键字:LPC11U14  SD卡U盘 手机看文章 扫描二维码
随时随地手机看文章
此实验在本人设计的LPC1114/LPC1343/LPC11U14开发板是验证成功:下面先秀秀图吧,下面是三种芯片三种开发板。SD卡在背面。。。

LPC11U14实现SD卡U盘(原创) - 我心永恒 - ARM-实践者

要实现SD卡U盘功能只有实验LPC1343或者LPC11U14才行,因为它们都有USB功能。下面先讲讲大概的思路。 通过USB和PC进行通信,并枚举一个U盘,具体的操作是通过SPI总线操作SD卡。

 

下面就先看NXP源代码模拟的U盘,和我们修改后实现的SD卡U盘:

LPC11U14实现SD卡U盘(原创) - 我心永恒 - ARM-实践者

 

NXP模拟U盘

 

LPC11U14实现SD卡U盘(原创) - 我心永恒 - ARM-实践者

 

 

SD卡U盘

 

1.NXP原厂代码免费赠送:  USBMem.rar (294.52 KB)

2.本人修改的SD卡U盘,收费哦:  SD卡U盘.rar (1.45 MB)

 

下面看看U盘是读写速度:

 

 

 

 

 

 

 

 

 

 

从U盘读数据到PC的速度

 

LPC11U14实现SD卡U盘(原创) - 我心永恒 - ARM-实践者

 

 

 

 

 

 

 

从PC写数据到U盘速度

 

从上面可以看出,SD卡U盘的读写速度都非常慢,所以本实验只有实验价值,不能真正作为U盘来使用,当然如用来实现IAP等还是很不错的,至于提升速度,应该还是有一定的空间,大不会很大。。。

 

下面我们详细说明从模拟U盘到SD卡U盘都修改了些什么内容,这里使用Beyond Compare软件进行对比。

 

左边是模拟U盘代码,右边是修改后的代码

 

1.添加两个变量:

 

LPC11U14实现SD卡U盘(原创) - 我心永恒 - ARM-实践者

 

 

2. 修改Read函数:

 

LPC11U14实现SD卡U盘(原创) - 我心永恒 - ARM-实践者

 

 

3. 修改Write函数:

LPC11U14实现SD卡U盘(原创) - 我心永恒 - ARM-实践者

 

4.修改MSC_GetCBW函数:

LPC11U14实现SD卡U盘(原创) - 我心永恒 - ARM-实践者

 

 

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表后就可以解码出文件的存储格式,文件大小等一系列信息了,跟读取硬盘没有多大的区别。。。。

关键字:LPC11U14  SD卡U盘 引用地址:LPC11U14实现SD卡U盘

上一篇:LPC1100处理器SD卡升级应用程序
下一篇:关于STM32的SPI端口设置问题

推荐阅读最新更新时间:2024-03-16 15:00

STM32 USB SD卡读卡器和NAND FLASH模拟U盘
本次工程是要同时实现SD卡读卡器和NAND Flash模拟U盘的功能。结合之前的两个工程,稍稍修改下就可以了。 既然要实现两个盘,当然在usb_prop.c中的Max_Lun变量赋值为1,在USB_User组中同时添加fsmc_nand.c和sdio_sdcard.c这两个文件,在外设库中挺尸添加stm32f10x_sdio.c和stm32f10x_fsmc.c两个文件。 添加完之后,可能会有些许的错误,解决完后,我们就要修改下mass_mal.c文件了,这个文件本次要同时实现SD卡和NAND Flash的相关驱动代码的挂接,代码如下: uint32_t Mass_Memory_Size ; uint32_t Mass_Block
[单片机]
STM32 USB <font color='red'>SD卡</font>读卡器和NAND FLASH模拟<font color='red'>U盘</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved