[开发工具] 英蓓特开发板,16M的MMC和SD卡正常,512M的SD卡无法初始化

[复制链接]
3803|7
 楼主| 海阔天空001 发表于 2009-2-5 18:25 | 显示全部楼层 |阅读模式
英蓓特的开发板和例程,512M的SD卡。初始化结果是“MSD_Init result: 52”。请高人指正。另外,有兄弟指出“在<msd.c>的void MSD_WriteByte(u8 Data)函数的结尾处加上一句:// wait for send complete

while (SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == RESET);等发送结束才返回。

”,我也试过了,还是不行。
 楼主| 海阔天空001 发表于 2009-2-5 20:19 | 显示全部楼层

TOSHIBA的512M卡无法初始化,但KINGSTON的1G卡可以用

 楼主| 海阔天空001 发表于 2009-2-6 10:44 | 显示全部楼层

没人回答,我就在这里写调试记录吧,欢迎拍砖

     do 
    {
        //SPI_CS_Deassert();                                /* 3. 置CS为高 dessert CS */
        //SPI_SendByte(0xFF);
        //SPI_CS_Assert();                                /* 1. 置CS为低 assert CS */ 
    
        
                                                        /* 发出CMD1, 查询卡的状态, send CMD1 to poll card status */
        ret = SD_SendCmd(CMD1, param, CMD1_R, resp);
        if (ret != SD_NO_ERR)
               return ret;
   
        i ++;
   
                                                 //(i <= SD_IDLE_WAIT_MAX)

    }while (((resp[0] & MSK_IDLE) == MSK_IDLE) && 1);

调试发现,程序死在了这里。另外,万利的程序为什么要“msd片选拉高--〉发送一次dummy--〉马上把msd片选拉低--〉发送后续真正的sd卡的命令。”注:dummy=0XFF,我把while的循环条件改了,原来的(i <= SD_IDLE_WAIT_MAX)换成了“1”
xiahuilpd 发表于 2009-4-25 19:01 | 显示全部楼层

我也遇到同样挑卡的问题

我也遇到同样挑卡的问题,不知道是卡的原因还是驱动的原因。
McuIsp 发表于 2009-4-25 19:10 | 显示全部楼层

目前各种开发板的SD卡驱动都不太稳定。

我费了很多工夫,对照SD卡标准,才为我的手持机整了套稳定、兼容性好的SD卡驱动。
特别是加上了CRC,保证了手持机工作时数据的可靠性。

英贝特这些板子的代码都没有CRC的,用作商用恐怕不行。
xiahuilpd 发表于 2009-4-25 19:28 | 显示全部楼层

McuIsp

请给我,你的联系方式,我想通过有偿方式得到你的支持。急急急!!!
McuIsp 发表于 2009-4-25 20:03 | 显示全部楼层

呵呵,请访问我的网站获得联系方式。

headwolf 发表于 2009-4-27 09:53 | 显示全部楼层

看来有空我也得去测试一下MICROCHIP的驱动可靠与否

目前也是拿KINGSTONG的2G卡,没什么问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部