OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10985|回复: 1

SD卡实验的容量计算公式

[复制链接]

12

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2011-8-30
在线时间
7 小时
发表于 2011-9-7 15:57:57 | 显示全部楼层 |阅读模式

我仿真了一下,把csd当中的一些数据读出来,但是我不明白,这些数据代表什么意识,我又看了CSD_register,用里面计算的公式 来验证,还是感觉不正确,不理解这些参数代表什么作用。

 i = csd[6]&0x03;   //csd[6]=0x83,   0x0003
     i<<=8;      //0x0300
     i += csd[7];    //csd[7]=0xcd,   0x03cd i*1个区=32个块
     i<<=2;      //0x0f34
     i += ((csd[8]&0xc0)>>6);//csd[8]=0x30,(csd[8]&0xc0)=0x00
        //C_SIZE_MULT 
     r1 = csd[9]&0x03;    //csd[9]=0xb7, 0x03
     r1<<=1;       //0x06
     r1 += ((csd[10]&0x80)>>7);//csd[10]=0xff 
     r1+=2;//BLOCKNR     //r1=9
     temp = 1;  //
     while(r1)  //
     {
      temp*=2; //
      r1--;  // temp=512(0x0200)块倍数
     }
     Capacity = ((u32)(i+1))*((u32)temp);//0x001e6a00  BLOCKNR = (C_SIZE)* MULT  
        // READ_BL_LEN
     i = csd[5]&0x0f;   //  0x0a(1010)1024  好像这里更像扇区的值
        //BLOCK_LEN
     temp = 1;    //
     while(i)   //
     {
      temp*=2;  //
      i--;   // temp=1024
     }
        //The final result
     Capacity *= (u32)temp;//字节为单位  0x79a80000 

CSD_register里面的公式:
   存储器容量= BLOCKNR * BLOCK_LEN

BLOCKNR = (C_SIZE)* MULT
MULT = (C_SIZE_MULT << 8) * 2^(C_SIZE_MULT + 2)
BLOCK_LEN = (READ_BL_LEN << 12) * 2^(READ_BL_LEN)

好像这里的计算不是按照这个计算公式来的,

我大致看一了下,这里只用到csd[5:10],能不能解释一下这6个寄存器当中的内容是什么用处??

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-9-7 16:18:43 | 显示全部楼层
这个你要看SD卡的资料了,看光盘的sd卡资料,然后找找csd的描述.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表