STM32
直播中

小芳

14年用户 1022经验值
私信 关注
[问答]

关于SDIO HAL库函数的疑问求解

1、函数SD_FindSCR为什么要配置块大小为8byte?
/* Set Block Size To 8 Bytes */
  errorstate = SDMMC_CmdBlockLength(hsd->Instance, 8U);

2、函数SD_SendSDStatus为什么要配置块大小为64byte?
  /* Set block size for card if it is not equal to current block size for card */
  errorstate = SDMMC_CmdBlockLength(hsd->Instance, 64U);

3、在读写块操作时,标准卡的地址为什么要乘以512?
例如函数HAL_SD_WriteBlocks里
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
    {
      add *= 512U;
    }


看不明白,求解答!!!有大神知道的吗?


回帖(1)

李春梅

2024-3-26 18:12:05
1、函数SD_FindSCR为什么要配置块大小为8byte?

SD_FindSCR函数用于寻找SD卡的SCR寄存器内容,SCR寄存器用于描述卡的特性,如支持的总线宽度和速度类别等。配置块大小为8byte是因为在SD卡中,SCR寄存器的大小为8byte,所以需要设置块大小为8byte以正确读取SCR寄存器的内容。

2、函数SD_SendSDStatus为什么要配置块大小为64byte?

SD_SendSDStatus函数用于向SD卡发送SD状态。配置块大小为64byte是因为SD卡中的SD状态数据结构的大小为64byte,所以需要设置块大小为64byte以正确传输SD状态数据。

3、在读写块操作时,标准卡的地址为什么要乘以512?

标准SD卡使用的是字节寻址方式,每个扇区(块)的大小为512字节。读写操作时,需要将块数转换为字节偏移量,所以需要将块地址乘以512。这样可以计算出对应的字节偏移量,以正确读写数据。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分