软件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的写入数据多实验几次,确保万无一失
}
*/
上一篇:51单片机通过串口控制LED
下一篇:PWM频率发生器
推荐阅读最新更新时间:2024-11-04 18:52
设计资源 培训 开发板 精华推荐
- LT3804、36V-72V DC 至 3.3V/15A 和 1.8V/15A 双路输出隔离电源
- LTC3532,一种采用纤巧多层电感器的高效率转换器,非常适合微型 HDD 应用
- 具有 5V 输出的 LT1076CR 正负转换器的典型应用
- LT1033CT 负 5V 线性稳压器的典型应用电路
- 4.5 uA 锂离子电池保护电路参考设计
- WS2812奇光板控制部分
- AM1D-1515SH30-RZ 15V 1W DC-DC 转换器的典型应用
- AT89C2051 微控制器的两线外设扩展
- AM1S-0512SH30Z 1W DC-DC转换器典型应用
- LTC6403-1 的典型应用 - 200MHz、低噪声、低功率全差分输入/输出放大器/驱动器