首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

SD 卡 format 有关问题

2012-04-18 
SD 卡 format 问题。在三菱的单片机M16cN4。进行FormatSD卡FAT16格式。在发送CMD9命令取得卡的块数之后。发现

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的时候经常报错,不知道是不是这个原因

热点排行