搜索
bottom↓
回复: 32

在LPC2148上使用SD卡实现U盘功能(源程序)

[复制链接]

出0入0汤圆

发表于 2009-4-8 11:13:42 | 显示全部楼层 |阅读模式
点击此处下载 ourdev_434027.zip(文件大小:304K) (原文件名:LPC2148_SD_U盘.zip)
这是我拿到开发板之后做的第二个实验,适用板子见 http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3280200&bbs_page_no=1&bbs_id=1032 的第8楼
这个程序是从一位高手的博客里面下载的,我进行了修改,主要是修改了SD.C里面的SPI初始化部分:
//SD.C
void spi_init (void)
{

   INT32U i;

   /* SSEL is GPIO, output set to high. */
   IODIR0  |= 1<<20;
   IOSET0   = 1<<20;
   /* SCK1, MISO1, MOSI1 are SSP pins. */
   PINSEL1  = (PINSEL1 & ~0x000003FC) | 0x000000A8;

   /* Enable SPI in Master Mode, CPOL=1, CPHA=1 (Clock low-active). */
   SSPCR0 = 0x00C7;
   SSPCR1 = 0x0002;
   SSPCPSR = 0x04;
// SSPCPSR = 0xFE;   这是原来的,我直接把分频数改为了4,实验了一下,很稳定。如果出现不能识别USB硬件的现象,可以改得稍微大一些。

   /* Send SPI Command with card not selected at 400 KBit. */
   for (i = 0; i < 16; i++) {
      SPI_RW (0xFF);
   }
   /* Enable SSP auto select. */
}

使用keil uVision3打开压缩包里面的设计文件(如果没有安装也可以直接使用obj文件夹里面的HEX文件ISP到LPC2148里面),顺便教初学者一个技巧:

选中建立HEX文件 (原文件名:USB_SD.JPG)
首先要在你的KEIL里面设置输出HEX文件,然后设置ISP软件,修改一下串口端口号以及速率,我实验的最快速度是38400. BUILD程序后,点FLASH-->DOWNLOAD即可。

配置ISP软件,只需要修改串口端口以及速率即可 (原文件名:USB_SD_2.JPG)
将程序ISP到开发板以后,断开跳线,复位单片机,电脑会出现新硬件可移动磁盘:我的SD卡是在数码相机里面用的。

出现可移动磁盘 (原文件名:USB_SD_3.JPG)
这是向SD卡里面写入文件的测试,33MB的文件用了大约8分钟,速度比较慢;读出和删除文件的操作很快,我实验了一下一个200MB的文件读出大约1秒钟完成,
而删除则更快。

写文件测试 (原文件名:USB_SD_4.JPG)
(不知道怎么回事,上传老是出现错误,程序暂时没法传上来。另外想想办法吧)
临时链接到我的纳米盘上吧:LPC2148_SD_U盘.zip

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-4-8 11:17:22 | 显示全部楼层
沙发

出0入0汤圆

发表于 2009-4-8 11:38:15 | 显示全部楼层
这个U盘的读写速度如何?能到600K以上吗?

出0入0汤圆

发表于 2009-4-8 11:44:02 | 显示全部楼层
“我实验了一下一个200MB的文件读出大约1秒钟完成。”
======================================================

这个说得有点悬乎,完全颠覆了理论啊,呵呵

出0入0汤圆

发表于 2009-4-8 11:48:29 | 显示全部楼层
ding

出0入0汤圆

发表于 2009-4-8 12:22:19 | 显示全部楼层
MARK

出0入0汤圆

 楼主| 发表于 2009-4-8 12:23:44 | 显示全部楼层
这是往SD卡里面写入224MB文件的图,实际用了大约30多分钟.

(原文件名:USB_SD_5.JPG)

出0入0汤圆

 楼主| 发表于 2009-4-8 13:23:37 | 显示全部楼层
“我实验了一下一个200MB的文件读出大约1秒钟完成。”
======================================================

这个说得有点悬乎,完全颠覆了理论啊,呵呵
======================================================

还别不信,刚才又实验了一下,把SD卡里面的219MB的文件拷贝到F盘,不到1秒钟,删除更快,进度条基本看不清,一闪就过。

(原文件名:USB_SD_6.JPG)

出0入0汤圆

发表于 2009-4-8 14:14:45 | 显示全部楼层
“我实验了一下一个200MB的文件读出大约1秒钟完成。”  
======================================================  

这个说得有点悬乎,完全颠覆了理论啊,呵呵  
======================================================  

还别不信,刚才又实验了一下,把SD卡里面的219MB的文件拷贝到F盘,不到1秒钟,删除更快,进度条基本看不清,一闪就过。

---------------------------------------------------------


现象归现象,不能以此为结论。 USB1.1  12Mbps的最大带宽 怎么可能在1s钟把200多MB的文件拷完。最快也要3分钟。

可能的问题是:
windows缓存。 刚拷入sd卡的文件windows里还保留有文件的缓存。这样再从sd卡读东西windows就直接从缓存里读了。
sata硬盘可以达到80MB/s的速度,你估算的1s 加上误差也差不多。
你可以试下把u盘弹出来,然后再插上试试。是不是这个问题就知道了。

出0入0汤圆

发表于 2009-4-8 14:17:03 | 显示全部楼层
至于删除,那是正常的。删除只是删除目录和分区表的信息,不删除真正的文件。

你如果删除一个包含n多小文件的目录就看出速度来了。

出0入0汤圆

发表于 2009-4-8 16:01:16 | 显示全部楼层
刚才测试了一下,发现读写都可以,虽然速度慢点。
不过还存在一些问题:
1、WINDOWS下返回的SD卡容量有错误,我用的SD卡是128M的,但是WINDOWS显示490M;
2、格式化好象不成功,但是快速格式化可以。

再问下LZ,你把SPI的速率设置这么高,可以正常操作吗?特别是命令操作阶段。读写可以设置更高点,我设置的是02,大约是20 MBit。
要稳定且读写速度快,可以尝试在写入命令和读写操作两个阶段对SPI的传输率进行切换。

出0入0汤圆

 楼主| 发表于 2009-4-8 17:35:24 | 显示全部楼层
又实验了一下,果然像bozai所说的那样,看来是硬盘缓存的问题。另外,我的SD卡显示容量是正常的,没实验格式化,设置成02我也试过,就是写命令前改得大些,写完命令再改小也不行,电脑直接认为磁盘没格式化。最快就是使用04了。
还没有实验将LPC2148的频率调高试一试,不知道能否再有所提高。

出0入0汤圆

发表于 2009-8-4 15:01:02 | 显示全部楼层
谢谢楼主gmliwei,学习

出0入0汤圆

发表于 2009-8-6 22:46:53 | 显示全部楼层
出现U盘但是,可以看到里面的文件,但是就是不能读写,打开已有文件,提示格式已损坏,写文件则等很长时间后就失败了,写不进任何数据,不知道哪里出问题了?请高手指点一下,非常感谢

出0入0汤圆

发表于 2009-8-7 08:35:50 | 显示全部楼层
记号

出0入0汤圆

发表于 2009-8-7 10:32:22 | 显示全部楼层
好资料,现在正在学习中

出0入0汤圆

发表于 2009-8-18 16:14:42 | 显示全部楼层
正要做这个

出0入0汤圆

发表于 2009-8-21 14:44:51 | 显示全部楼层
学习先

出0入0汤圆

发表于 2009-12-18 15:24:03 | 显示全部楼层
楼主能把你的原理图发下不, 我想看下你的引脚设置?我的LPC2148读不到SD卡

出0入0汤圆

发表于 2009-12-23 14:57:55 | 显示全部楼层
学习学习!

出0入0汤圆

发表于 2009-12-23 15:14:47 | 显示全部楼层
凑个热闹

出0入0汤圆

发表于 2009-12-24 17:31:17 | 显示全部楼层
我的能生成盘符,就是没有容量。貌似找不到SD卡。请问是什么原因。连接是用和楼主一样的SSP接口。
有能帮忙的加我QQ 56418420           注明: LPC2148+ SD

出0入0汤圆

发表于 2010-12-3 16:42:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-4 19:52:03 | 显示全部楼层
我现在也在做这个东西。我用的是LPC2378+MCI+sd现在最麻烦的是速度太慢,我还是用的MCI接口4位线宽。速度跟不上。写速度最大到0.3M/S。和标准的1.5M/S差远了。就算去掉SD卡的写速度限制最大也只能到0.5

出0入0汤圆

发表于 2010-12-22 16:29:03 | 显示全部楼层
好资料,现在正在学习中

出0入0汤圆

发表于 2010-12-27 10:17:41 | 显示全部楼层
mark

出10入12汤圆

发表于 2010-12-27 11:17:21 | 显示全部楼层
这个一定要mark一下

出0入0汤圆

发表于 2011-1-20 11:54:20 | 显示全部楼层
maRK!!!!

出0入0汤圆

发表于 2011-10-2 21:31:31 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-10-14 12:18:03 | 显示全部楼层
mark,论坛里有大量东西需要MARK呀。

出0入4汤圆

发表于 2012-8-15 17:21:47 | 显示全部楼层
楼主好强啊,学习了

出0入0汤圆

发表于 2012-10-2 20:38:06 | 显示全部楼层
用这个能否用来做MP3?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 15:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表