新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SD卡的SPI模式的初始化順序

        SD卡的SPI模式的初始化順序

        作者: 時(shí)間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
        為了使SD卡初始化進(jìn)入SPI模式,我們需要使用的命令有3個(gè):CMD0,ACMD41,CMD55(使用ACMD類的指令前應(yīng)先發(fā)CMD55,CMD55起到一個(gè)切換到ACMD類命令的作用)。
        為什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,雖然本文并不想討論MMC卡的問題,但是我還是要說:為了實(shí)現(xiàn)兼容性,上電或者發(fā)送CMD0后,應(yīng)該首先發(fā)送CMD55+ACMD41確認(rèn)是否有回應(yīng),如果有回應(yīng)則為SD卡,如果等回應(yīng)超時(shí),則可能是MMC卡,再發(fā)CMD1確認(rèn)。
        正確的回應(yīng)內(nèi)容應(yīng)該是:
        CMD0——0x01(SD卡處于in-idle-state)
        CMD55——0x01(SD卡處于in-idle-state)
        ACMD41——0x00(SD卡跳出in-idle-state,完成初始化準(zhǔn)備接受下一條指令)
        這里要說的是如果最后的回應(yīng)內(nèi)容還是0x01的話,可以循環(huán)發(fā)送CMD55+ACMD41,直到回應(yīng)的內(nèi)容0x00。
        在所有的指令中,唯獨(dú)CMD0特殊,在向SD卡發(fā)送以前需要向SD卡發(fā)送74+個(gè)時(shí)鐘。那么為什么要74個(gè)CLK呢?因?yàn)樵谏想姵跗冢妷旱纳仙^程據(jù)SD卡組織的計(jì)算約合64個(gè)CLK周期才能到達(dá)SD卡的正常工作電壓他們管這個(gè)叫做Supply ramp up time,其后的10個(gè)CLK是為了與SD卡同步,之后開始CMD0的操作,嚴(yán)格按照此項(xiàng)操作,一定沒有問題。
        關(guān)于SD卡的SPI總線,在讀入數(shù)據(jù)時(shí)SD卡的SPI是CLK的上升沿輸入鎖存,輸出數(shù)據(jù)也是在上升沿。
        向SD卡寫入一個(gè)CMD或者ACMD指令的過程是這樣的:
        首先使CS為低電平,SD卡使能;其次在SD卡的Din寫入指令;寫入指令后還要附加8個(gè)填充時(shí)鐘,是SD卡完成內(nèi)部操作;之后在SD卡的Dout上接受回應(yīng);回應(yīng)接受完畢使CS為低電平,再附加8個(gè)填充時(shí)鐘。
        在SD卡的Din沒有數(shù)據(jù)寫入時(shí),應(yīng)使Din保持高電平。


        關(guān)鍵詞: SD卡SPI模式初始化順

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 枝江市| 汝南县| 新乡县| 沂水县| 闽侯县| 罗江县| 铜山县| 阳信县| 洛川县| 剑川县| 达孜县| 华亭县| 剑河县| 云梦县| 响水县| 台州市| 蛟河市| 恭城| 剑阁县| 长垣县| 盘山县| 留坝县| 梁平县| 土默特右旗| 神池县| 周至县| 青浦区| 兴仁县| 陵川县| 滕州市| 台南市| 江山市| 鲁山县| 迁西县| 邹城市| 龙山县| 中江县| 荔波县| 万州区| 花垣县| 项城市|