STM32
直播中

幽默

10年用户 887经验值
擅长:362163
私信 关注
[问答]

SD2.0协议为什么最大只支持32GB?

SD2.0协议中CMD命令为32位,32位数据地址以512字节为一个块,所以最大只支持32GB,一直没明白怎么计算的,求助大佬们讲解一下

回帖(1)

张龙祥

2024-4-10 18:17:11
SD2.0协议最大只支持32GB是由于以下原因:

1. CMD命令位是一个32位的字段,用来发送指令给SD卡。其中一些位用来指示指令的类型、参数和响应等。因为CMD字段只有32位,所以它能够表示的命令数是有限的。

2. SD卡的数据地址以512字节为一个块进行存储,也就是说每个块大小为512字节。CMD命令中的参数位可以指示读取或写入哪个块的数据。

3. SD2.0协议规定了一个描述SD卡容量的寄存器(CSD Register),其中有一个字段表示该卡的总扇区数。根据SD2.0协议,总扇区数为CMD命令中的参数位所能表示的最大数值加1。

根据以上三个因素,最大支持32GB的SD卡的计算方式如下:

- CMD命令位是32位:可表示2^32 = 4,294,967,296种命令。
- SD卡每个块大小为512字节:一个扇区为512字节,即一个块。
- 根据SD2.0协议,命令参数位能表示的块数为CMD字段所支持的命令数减1。

因此,最大支持的扇区数为4,294,967,296 - 1 = 4,294,967,295个块。
最大支持的容量为 4,294,967,295 块 × 512 字节/块 = 2,199,023,255,040 字节 ≈ 2TB。

换算成GB:2TB / 1024 ≈ 1,953GB,约等于32GB。

即SD2.0协议最大支持的容量为约32GB。
举报

更多回帖

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