Image
Image

gaonaiweng

+ 关注

粉丝 3     |     主题 80     |     回帖 812

STM32利用SPI读写SD卡的程序详解
2025-6-23 10:58
  • ST MCU
  • 30
  • 3506
  忙检测: SD卡写入数据并自编程时,数据线上读到0x00表示SD卡正忙,当读到0xff表示写操作完成。 ...  
  写单块和写多块 SD卡用CMD24和CMD25来写单块和多块,参数的定义和读操作是一样的。 ...  
  读多块:  
  读单块:  
  读单块:  
  读单块block和读多块block SD卡读单块和多块的命令分别为CMD17和CMD18,他们的参数即要读的区域的开始地址 ...  
  此函数计算出来的容量是Kbyte,结果除以1024就是Mbyte,再除以1024就是GByte。2G的卡,结果可能是1.8G,8G ...  
  获取SD卡容量信息 SD卡容量的信息主要是通过查询CSD寄存器的一些相关数据,并根据数据手册进行计算 ...  
  取CID寄存器数据 u8 SD_GetCID(u8 *cid_data) { u8 r1; //发CMD10命令,读取CID信息 r1 = SD_Sen ...  
  以上两个函数就是根据SD卡在SPI模式下发送指令的时序编写的  
  ......  
  给SD卡发送命令的程序有2个。区别为一个发送完命令后失能片选,一个为发送完命令不失能片选(后续还有数据 ...  
  给SD卡发送命令 在初始化函数中,我们需要做的最多的就是给SD卡发送各种命令以及接收各种响应,从而判断卡 ...  
  此函数有3个输入参数: u8 * data为保存读回数据的变量,len为需要保存的的数据个数,release 为当程序结束 ...  
  ......  
  从SD卡中读回指定长度的数据 在SD卡读写试验中,我们会遇到很多需要读取SD卡各个寄存器数据的情况 ...  
  这个函数在所有主机与SD卡通信的函数中都会被调用到。  
  u8 SPI_ReadWriteByte(u8 TxData) { while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET); ...  
  SPI读写一字节数据 在这里,先介绍一个相对底层的函数。 SPI操作SD卡时,发送和接收是同步的,所以发送和 ...  
  以上函数是根据SD卡的发送和响应时序进行编写的。 1)程序中配置好SPI模式和引脚后,需要先将SPI的速度设 ...  
2
3