打印
[开发工具]

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

[复制链接]
2568|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 | 只看该作者

我也遇到同样挑卡的问题

我也遇到同样挑卡的问题,不知道是卡的原因还是驱动的原因。

使用特权

评论回复
5
McuIsp| | 2009-4-25 19:10 | 只看该作者

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

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

英贝特这些板子的代码都没有CRC的,用作商用恐怕不行。

使用特权

评论回复
6
xiahuilpd| | 2009-4-25 19:28 | 只看该作者

McuIsp

请给我,你的联系方式,我想通过有偿方式得到你的支持。急急急!!!

使用特权

评论回复
7
McuIsp| | 2009-4-25 20:03 | 只看该作者

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

使用特权

评论回复
8
headwolf| | 2009-4-27 09:53 | 只看该作者

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

目前也是拿KINGSTONG的2G卡,没什么问题。

使用特权

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

本版积分规则

5

主题

13

帖子

0

粉丝