tiger84的笔记 https://passport2.21ic.com/?476150 [收藏] [复制] [RSS]

日志

SPI SD卡

已有 1904 次阅读2010-1-25 16:04 |系统分类:嵌入式系统

把SPI模式的SD卡协议简单的看了下,知道SD卡的初始化过程,读写数据是怎么回事了。

然后跟踪SD卡的初始化,发现SD卡复位,进入IDLE模式都没问题,而问题是出在获取CID上,程序如下:
static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
        struct mmc_card *oldcard)
{
                省略
        ----------------

        err = mmc_send_if_cond(host, ocr);
        if (!err)
                ocr |= 1 << 30;

        err = mmc_send_app_op_cond(host, ocr, NULL);
        if (err)
                goto err;

        /*
         * For SPI, enable CRC as appropriate.
         */
        if (mmc_host_is_spi(host)) {
                //err = mmc_spi_set_crc(host, use_spi_crc);
                err = mmc_spi_set_crc(host, 0);  //zhh

                if (err)
                        goto err;
        }

        /*
         * Fetch CID from card.
         */
        if (mmc_host_is_spi(host))
    {      
        err = mmc_send_cid(host, cid);      
    }               
        else
                err = mmc_all_send_cid(host, cid);
        if (err)
                goto err;
-----------------------------
省略               
}
于是猜想会不会是spi加了ECC的原因,网上有位高手说SPI模式的SD卡加ECC是自讨苦吃,于是我把ECC去掉了,程序上面红色部分。

然后就成功了。

查看dev是179 0
然后mknod
试了下,OK。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)