中级会员
 
- 积分
- 343
- 金钱
- 343
- 注册时间
- 2013-10-28
- 在线时间
- 0 小时
|
5金钱
SD卡的扇区是由几个块组成的,V2.0版本中有这样的一句话:The High Capacity SD Memory Card only supports 512-byte block length.这里说大容量的SD的块的大小是512字节。我怎么在V2.0协议中没有找到扇区的大小也是512字节的呢?????原子哥的代码求扇区的数目的时候,就是使用扇区是512字节的?????
//获取SD卡的总扇区数(扇区数)
//返回值:0: 取容量出错
// 其他:SD卡的容量(扇区数/512字节)
//每扇区的字节数必为512,因为如果不是512,则初始化不能通过.
u32 SD_GetSectorCount(void)
{
u8 csd[16];
u32 Capacity;
u8 n;
u16 csize;
//取CSD信息,如果期间出错,返回0
if(SD_GetCSD(csd)!=0) return 0;
//如果为SDHC卡,按照下面方式计算
if((csd[0]&0xC0)==0x40) //V2.00的卡
{
csize = csd[9] + ((u16)csd[8] << 8) + 1;
Capacity = (u32)csize << 10;//得到扇区数
}else//V1.XX的卡
{
n = (csd[5] & 15) + ((csd[10] & 128) >> 7) + ((csd[9] & 3) << 1) + 2;
csize = (csd[8] >> 6) + ((u16)csd[7] << 2) + ((u16)(csd[6] & 3) << 10) + 1;
Capacity= (u32)csize << (n - 9);//得到扇区数
}
return Capacity;
}
红色部分应该是这样得到的:扇区的数目=(C_SIZE+1)*512KByte/512Byte=((C_SIZE+1)*1024*512)Byte/512Byte=(C_SIZE+1)*1024=(C_SIZE+1)<<10
不知道一个扇区的大小为啥是512Byte,在协议中没有找到相关的解析、、、、、
|
|