当前位置: 代码迷 >> 驱动开发 >> SD 卡 format 有关问题
  详细解决方案

SD 卡 format 有关问题

热度:479   发布时间:2016-04-28 11:10:44.0
SD 卡 format 问题。
在三菱的单片机M16cN4。进行Format   SD卡   FAT16   格式。


在发送CMD9命令取得卡的块数之后。发现返回的块数,与Windows下通过用WinHex查看的块数不一样。少了很多。

目前在Windows下得到的块数为   19w之多。
在单片机里面取得的块数为16w之多。

所以Format的时候少了很多容量

以上是1G   kinston   SD卡。。在Windows下格式化有974M。
在单片机里面格式化只有       780M左右。

请问,有谁知道中间有什么差别吗?

谢谢了。
switch   (ctrl)   {
case   GET_SECTORS   : /*   Get   number   of   sectors   on   the   disk   (unsigned   long)   */
if   ((send_cmd(CMD9,   0)   ==   0)   &&   rcvr_datablock(csd,   16/2))   {
/*   Calculate   disk   size   */
                  csm   =   1   < <   (((csd[10]   &   128)   > >   7)   +   ((csd[9]   &   3)   < <   1)   +   2);
csize   =   ((uint16)(csd[8]   &   3)   > >   6)   +   (uint16)(csd[7]   < <   2)   +   ((uint16)(csd[6]   &   3)   < <   10)   +   1;
*(uint32*)buff   =   (uint32)csize   *   csm;
res   =   RES_OK;
}
break;

case   MMC_GET_CSD   : /*   Receive   CSD   as   a   data   block   (16   bytes)   */
if   ((send_cmd(CMD9,   0)   ==   0) /*   READ_CSD   */
&&   rcvr_datablock(buff,   16/2))
                      res   =   RES_OK;
break;

case   MMC_GET_CID   : /*   Receive   CID   as   a   data   block   (16   bytes)   */
if   ((send_cmd(CMD10,   0)   ==   0) /*   READ_CID   */
&&   rcvr_datablock(buff,   16/2))
res   =   RES_OK;
break;

case   MMC_GET_OCR   : /*   Receive   OCR   as   an   R3   resp   (4   bytes)   */
if   (send_cmd(CMD58,   0)   ==   0)   { /*   READ_OCR   */
for   (n   =   0,   p   =   buff;   n   <   4;   n++)
*p++   =   rcvr_spi();
                  res   =   RES_OK;
}
break;

default:
res   =   RES_PARERR;

------解决方案--------------------
我在Format的时候经常报错,不知道是不是这个原因
  相关解决方案