软件SPI和硬件SPI读写SD卡,TF卡测试程序
SD卡模块和SD卡
软件SPI读写SD卡程序
测试平台:STC89C516和STC12C5A60S2
内存卡大小:128MB和2GB
晶振:均为12MHz
硬件SPI读写SD卡程序
测试平台:STC12C5A60S2
内存卡大小:128MB和2GB
晶振:12MHz
(89C52没有硬件SPI)
为了尽可能的不给后来者留坑,这些代码我在发出来之前反复测试过,确保无误,
还有就是关于SD卡程序的读写我在程序中写的很清楚,这里不再赘述
单片机源程序如下:
- #include "public.h"
- #include "SD.h"
- //测试平台:STC89C516和STC12C5A60S2
- //内存卡大小:128MB和2GB
- //晶振:均为12MHz
- void main()
- {
- unsigned int i;
- SD_init();//SD卡初始化
-
- for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;
- MCU_write_SD_512Byte(960,512);//MCU向SD卡写入数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))
-
- MCU_read_SD_512Byte(960,512);//MCU向SD卡读取数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))
- P0=BUFFER_DATA[0];
-
- while(1);
- }
- /*
- unsigned int i;
-
- SD_init();//SD卡初始化
-
- {
- 在使用SD卡模块前,先初始化SD卡
- }
-
- for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;
- MCU_write_SD_512Byte(960,512);//MCU向SD卡写入数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))
-
- {
- 将数据写入到SD卡:
- 先将数据写入到数据缓冲数组BUFFER_DATA中(这里的数据我全部都写0x7F),
- 然后运行MCU_write_SD_512Byte(960,512);
- 960为SD卡的扇区,表示将数据写入到SD卡的960扇区,512为一次性写入的数据大小,为512字节,建议填512字节,
- 因为1个扇区的大小为512字节
- }
-
- MCU_read_SD_512Byte(960,512);//MCU向SD卡读取数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))
- P0=BUFFER_DATA[0];
-
- {
- 从SD卡读取数据:
- 先运行MCU_read_SD_512Byte(960,512);
- 这里的960为你要读的SD扇区,512位一次性读取的数据大小,为512字节,建议填512字节,因为1个扇区的大小为512字节
- 完成后数据存放在数据缓冲数组BUFFER_DATA中
-
- 因为没有现象的话不好判断SD卡读写是否成功,所以把P0BUFFER_DATA[0]赋给P0,P0接LED灯,就可以看见现象了
- }
- {
- 注意:将程序下载到开发板后可能会出现P0口显示的数据和SD卡写入数据不一致的情况
- 这时,
- 要将开发板和SD卡模块断电
- 要将开发板和SD卡模块断电
- 要将开发板和SD卡模块断电
- 不是复位
- 不是复位
- 不是复位
- 将开发板断电后再上电,就可以看见现象了
- 如果还不成功,
- 检查连线是否正确
- 检查连线是否正确
- 检查连线是否正确
- 或尝试插拔SD卡
-
- SD卡读写成功后,可以修改扇区和SD的写入数据多实验几次,确保万无一失
- }
- */
复制代码
所有资料51hei提供下载:
单片机读写SD卡.rar
(78.27 KB, 下载次数: 463)
|