SD卡基础原理及读写程序(4)

2019-06-05 14:42

{ //SD卡初始化,并读取返回值 putstr(comm2); }

temp=\查找DATASTART数据开始标志,返回下一扇区地址

SD_read_sector(1001,data); //读取temp地址的512字节数据,512字节数据存入data数组 putstr(data);

SD_write_sector(temp,data2); //将data2数组512字节数据写入temp扇区 }

测试程序很简单,仅仅是做了一下读写SD卡的测试。 关于SD卡的几点注意事项。

1、无论我们愿意不愿意,SD卡每次读写数据的最小单位是1个扇区,即512个字节。

2、SD卡与单片机连接的 SPI总线不能太长,要尽量短。这样的好处是速度可以更快,也不容易出错。

3、虽然我们并不关心FAT文件表,但是我们仍然要关心SD卡的存储结构,如果我们不想使用PC机来读取保存在SD卡上的数据那我们就不用关心SD存储结构了。但,作为一个大容量的可移动存储设备,不能用PC机来读取是个很大的遗憾,我解决这个遗憾的方法如下:

3-1、因为我不了解FAT复杂的结构,所以我做的程序没法去按照FAT表的各项功能来进行创建文件、删除文件、创建目录等等操作。

3-2、虽然我们的单片机不能创建文件,但是PC机是可以创建文件的啊!所以我使用PC机将SD卡格式化,之后在SD卡上创建一个大文件,比如我的128M的SD卡上我建立了一个100M的文件。这里需要注意一下,一般使用windows创建文件的功能时是没有办法指定创建文件的大小的,空文件就是0个字节的长度,而我们是需要一个固定长度的文件的,所以我用VC编写了一个小软件,这个软件可以为我创建一个100M长度的空文件,记住,这点很重要:一个固定长度的空文件

3-3、虽然我们建立了个文件在SD卡上,可是我们因为不去了解FAT表,所以我们一样不知道这个文件到底位于SD卡的什么地方,不要以为它会在0字节的地方开

始,为了找到这个文件的开始位置,我们可以在建立的那个空文件的开头写上几个字符,比如我程序里面写的“DATASTART”,接下来我们要做的就是一个扇区一个扇区的去找这个几个特殊的字符,这是个笨方法,但却是最简单直观的方法。这个方法有两个缺点:a、如果文件建立在整个SD卡的后面,那找到这个文件需要漫长的等待。b、如果碰巧某个文件里面也有我们定义的那个特殊字符串的话,那就乱套了!不过好在我们使用的SD卡一般都是专用的,并不能拿去做其他应用,比如从公司copy点文件回家之类的,那就能保证这个SD卡上文件的简单性,即只有我们需要的那个文件,其他文件并不存在,而且这个文件肯定会从SD卡开始的那些扇区中的某一个开始。这样说来的话找到这个字符串也不是那么慢嘛!^_^。不过这里要建议一下,在使用SD卡之前最好用windows将它完全格式话一下。

3-4、一旦我们找到了我们要写入文件的起始位置(它一般表示为一个扇区号),那我们就可以在这个起始扇区的下一个扇区写入数据了。

4、OK,看起来很简单!有了这种存储方式我们还需要IIC接口的 EEPROM干吗呢?

来自http://blog.csdn.net/itismine/article/details/6069620


SD卡基础原理及读写程序(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:家用轿车上牌注意事项

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: