Image
Image

aizaixiyuanqian

+ 关注

粉丝 6     |     主题 62     |     回帖 1353

STM32 基础篇——SD 卡实验
2023-9-21 22:31
  • ST MCU
  • 83
  • 5307
  本次的SD实验是基于SPI通讯,下次再分享下关于SDIO的,  
  由于 SD 卡读写测试会破坏 SD 卡的 FAT 数据,所以这里就不测试读写了, 大家可以自己添加,不过对 SD 卡读 ...  
  /* 显示 SD 卡容量 */ num[0] = (sdCapacity /10000 % 10) + '0'; num[1] = (sdCapacity /1000 % 10) + '0' ...  
  /* 显示 SD 卡类型 */ if(SD_TYPE == 0x06) { GUI_Show12Char(96, 105, "SDV2HC OK!", RED, BLACK); } else ...  
  主程序 int main(void) { uint8_t ledState, num[6] = {0, 0, 0, 0, 0, 0}; uint32_t i, sdCapacity; /* 彩 ...  
  /* 读取数据 */ for(i=0; i 6) + ((uint16_t)csdValue[7]  
  int8_t SD_ReadCapacity(uint32_t *capacity) { uint8_t csdValue[16]; uint16_t n, i = 0; /* 发送命令 */ ...  
  读取了 CSD 寄存器,我们怎么计算 SD 卡的容量呢,首先我们来看 V2.0 协议的内存容量计算方式(在《SD 卡 2 ...  
  我们在上面学习过如何读取 SD 卡数据之后,我们在学习读取 CSD 寄存 器就很简单了,它们的操作其实差不多的 ...  
  在主函数中,我们还调用了一个函数,用来读取 SD 的卡的内存容量。 而 SD 卡的内存容量的相关数据都保存在 ...  
  写 512 个数据数据 static int8_t SD_WriteData(uint8_t *buf, uint8_t cmd) { uint16_t i; /* 发送若干个 ...  
  /* 开始写数据 */ while(num--) { if(SD_WriteData(buf, 0xFC) != 0) { return 0xFF; } buf += 512; } /* ...  
  /* 写多个扇区 */ else { if(SD_TYPE == SD_TYPE_MMC) //如果是 MMC 卡 { SD_WriteCmd(SD_CMD55, 0, 0X01) ...  
  写多个扇区 int8_t SD_WriteDisk(uint8_t *buf, uint32_t sector, uint8_t num) { uint8_t i; if(SD_TYPE ! ...  
  然后发送若干个时钟,同时读取返回值,知道返回值不是 0xFF 发送结束令牌 0xFD。 ...  
  检测返回值,查看 CMD25 是否发送成功。 然后一个扇区一个扇区的写入数据,这个部分的步骤为: a) 然后发送 ...  
  发送 CMD25(命令参数是写入扇区地址)。如果是 MMC 卡,就先 发送 CMD55 和 CMD23 擦除扇区。 ...  
  写入一个扇区的操作步骤为: 1) 发送 CMD24(命令参数是写入扇区地址) 2) 检测返回值,查看 CMD24 是否发 ...  
  SD 卡写入数据也有两个命令,一个命令是 CMD24:写入一个扇区(一 般为 512 字节);另一个是 CMD25:写入 ...  
  这个没有,可以去相关产品那里去找下  
2
3
近期访客