打印

困扰很久的SD卡问题

[复制链接]
1164|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2014-1-6 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
if((csd[0]&0xC0)==0x40)  //V2.00的卡
{
       csize = csd[9] + ((u16)csd[8] << 8) + 1;
       Capacity = (u32)csize << 10;//     1).      
}
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);//    2).
}


1).  对于V2.0的卡,协议上计算方法为:Capacity=(csise+1)*512,而程序这里为什么左移10位呢,这样不是相当于乘以1024了吗?!
2). 对于V1.X的卡,这里的计算方法更是没有看懂,和协议上的计算方法Capacity = BLOCKNR * BLOCK_LEN  怎么联系起来呢?
       Where:
                     BLOCKNR = (C_SIZE+1) * MULT
                     MULT = 2^C_SIZE_MULT+2      (C_SIZE_MULT < 8)
                     BLOCK_LEN = 2^READ_BL_LEN,       (READ_BL_LEN < 12)


沙发
huangfeng33| | 2014-1-11 22:21 | 只看该作者
返回值单位是字节?
还是512字节?你要看看返回值的意义啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝