单片机
返回首页

单片机软件SPI和硬件SPI读写SD卡,TF卡测试程序

2020-10-14 来源:51hei

软件SPI和硬件SPI读写SD卡,TF卡测试程序
SD卡模块和SD卡



软件SPI读写SD卡程序
测试平台:STC89C516和STC12C5A60S2
内存卡大小:128MB和2GB
晶振:均为12MHz

硬件SPI读写SD卡程序
测试平台:STC12C5A60S2
内存卡大小:128MB和2GB
晶振:12MHz
(89C52没有硬件SPI)


为了尽可能的不给后来者留坑,这些代码我在发出来之前反复测试过,确保无误,
还有就是关于SD卡程序的读写我在程序中写的很清楚,这里不再赘述

单片机源程序如下:

  1. #include 'public.h'

  2. #include 'SD.h'


  3. //测试平台:STC89C516和STC12C5A60S2

  4. //内存卡大小:128MB和2GB

  5. //晶振:均为12MHz


  6. void main()

  7. {

  8.         unsigned int i;


  9.         SD_init();//SD卡初始化

  10.        

  11.         for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;

  12.         MCU_write_SD_512Byte(960,512);//MCU向SD卡写入数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))

  13.        

  14.         MCU_read_SD_512Byte(960,512);//MCU向SD卡读取数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))

  15.         P0=BUFFER_DATA[0];

  16.        

  17.         while(1);

  18. }


  19. /*

  20.         unsigned int i;

  21.        

  22.         SD_init();//SD卡初始化

  23.        

  24.         {

  25.                 在使用SD卡模块前,先初始化SD卡

  26.         }

  27.        

  28.         for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;

  29.         MCU_write_SD_512Byte(960,512);//MCU向SD卡写入数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))

  30.        

  31.         {

  32.                 将数据写入到SD卡:

  33.                 先将数据写入到数据缓冲数组BUFFER_DATA中(这里的数据我全部都写0x7F),

  34.                 然后运行MCU_write_SD_512Byte(960,512);

  35.                 960为SD卡的扇区,表示将数据写入到SD卡的960扇区,512为一次性写入的数据大小,为512字节,建议填512字节,

  36.                 因为1个扇区的大小为512字节

  37.         }

  38.        

  39.         MCU_read_SD_512Byte(960,512);//MCU向SD卡读取数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))

  40.         P0=BUFFER_DATA[0];

  41.        

  42.         {

  43.                 从SD卡读取数据:

  44.                 先运行MCU_read_SD_512Byte(960,512);

  45.                 这里的960为你要读的SD扇区,512位一次性读取的数据大小,为512字节,建议填512字节,因为1个扇区的大小为512字节

  46.                 完成后数据存放在数据缓冲数组BUFFER_DATA中

  47.                

  48.                 因为没有现象的话不好判断SD卡读写是否成功,所以把P0BUFFER_DATA[0]赋给P0,P0接LED灯,就可以看见现象了

  49.         }


  50.         {

  51.                 注意:将程序下载到开发板后可能会出现P0口显示的数据和SD卡写入数据不一致的情况

  52.                 这时,

  53.                         要将开发板和SD卡模块断电

  54.                         要将开发板和SD卡模块断电

  55.                         要将开发板和SD卡模块断电

  56.                         不是复位

  57.                         不是复位

  58.                         不是复位

  59.                 将开发板断电后再上电,就可以看见现象了

  60.                 如果还不成功,

  61.                         检查连线是否正确

  62.                         检查连线是否正确

  63.                         检查连线是否正确

  64.                 或尝试插拔SD卡

  65.                

  66.                 SD卡读写成功后,可以修改扇区和SD的写入数据多实验几次,确保万无一失

  67.         }

  68. */

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章