原创 在21IC DIY U盘开发板上实现的SD转USB读卡器(硬件SPI方式)

2009-5-14 16:06 5008 11 16 分类: MCU/ 嵌入式

修正程序中的一处小错误:
Usbcore.c中,
pSendData=(uint8)DeviceDescriptor;  //需要发送的数据
强制转换漏掉一个“*”号,应该修改为
pSendData=(uint8 *)DeviceDescriptor;  //需要发送的数据


单击此处下载本实验包:http://bbs.21ic.com/upfiles/img/20094/2009411142312398.rar


下载地址2:https://static.assets-stash.eet-china.com/album/old-resources/2009/4/11/72b0ee8f-2ca9-4696-b272-7cd342608caa.rar
本程序使用AT91SAM7S64自带的SPI接口读写SD卡,SPI时钟设置为24MHz。
写入速度大约为313KB/s,读出速度大约为272KB/s。
程序中没有开启DMA传输,如果开启DMA传输,并使用两个缓冲区轮流操作的话,速度应该会有所提高。

另外圈圈想发一下牢骚的是,那个官方的SD卡协议真是TMD又长又臭啊,长一点倒算了,又没逻辑性,
写得比较混乱,该清楚的地方交代得不够清楚,不该说的地方又是一堆罗嗦,小日本的文档就是这样的?
还好,网上有一些稍微简洁的介绍,让人有一个全局的概念。另外它的命令命名也真是奇怪,居然
直接用编号来命名的,我晕,这样鬼记得这个命令是干啥用的……为了简单起见,这个程序并没有
启用CRC校验,也没有对写入出错的处理,希望有空的朋友继续完善它吧。

图为圈圈使用的32MB SD卡的实验测试结果:


点击看大图

文章评论6条评论)

登录后参与讨论

computer00 2011-5-18 22:02

有困难...

用户327070 2011-5-10 22:28

请问,这里能用小内存的单片机做SPI接口的sd读卡器吗?就是缓冲区没有512字节的情况下,能不能实现对sd卡的读写操作?

computer00 2010-12-28 11:45

可以

用户265975 2010-12-1 19:33

00,usb可以既做u盘又做usb读卡器吗?谢谢了

computer00 2009-4-9 23:49

可能是因为这个芯片的双缓冲的原因。我不知道如何使用这个芯片的输入端点的双缓冲……输出端点的双缓冲容易。

用户163120 2009-4-9 21:47

怎么读的会比写的慢?
相关推荐阅读
computer00 2013-06-05 16:27
[招聘]Android系统开发工程师
任职要求: 1. 扎实的C/C++基础,熟悉嵌入式Linux和Android操作系统的软件开发; 2. 良好的沟通能力和逻辑思维能力; 3. 良好的英文文献阅读能力; 4. 具备...
computer00 2013-06-04 09:26
[招聘]Android应用开发工程师
任职要求: 1. 具备扎实的面向对象编程思想和JAVA编程基础; 2. 熟悉Eclipse+ADT开发环境,熟练掌握Android基本类库; 3. 熟悉网络应用和多媒体应用开发; ...
computer00 2012-09-26 13:15
圈圈的新浪官方围脖
http://weibo.com/computer00  ...
computer00 2012-09-26 13:12
欢迎大家去收听圈圈弹的曲子
http://www.tudou.com/home/_105209016  ...
computer00 2009-06-29 15:07
《圈圈教你玩USB》勘误(更新日期2009 年06月29日)
《圈圈教你玩USB》勘误(更新日期2009 年06月29日)下载地址1:下载地址2: 勘误.pdf...
computer00 2009-06-25 11:23
一块磐正845GE主板PS2接口的修复
圈圈有一部台式机,某天开机时,发现键盘用不了了,停留在输入BIOS密码那里。主机自检通过,但是蜂鸣器却发出很微弱的、连续的声音,同时键盘的三个LED也没有出现象往常一样的闪烁一下。圈圈以为多日未用,积...
我要评论
6
11
关闭 站长推荐上一条 /3 下一条