近日為了要DIY一樣東西,需要用到大容量記憶體,自然就選中了SD卡,在閱讀了51HEI論壇所有有關SD卡的文章后,就決定開工了,先是用大卡的套焊接了SPI線,連接STC12的開發板,選了http://www.zg4o1577.cn/bbs/dpj-186038-1.html“單片機軟件SPI和硬件SPI讀寫SD卡,TF卡測試程序”這篇文章,把里面的C代碼編譯后下載到開發板,LED真的亮了,表示接線沒問題。
接下來就是5天5夜的SD卡之旅,由于我只懂匯編,只能逐一把C改寫成A,過程并不順利,尤其是那個CMD1,總是搞不成,后來讀到有人說,網上很多關于SD卡的文章已經過時,因為文章發表時新的SD卡還未誕生,建議去看廠商的說明書,但那些說明書內容太多,不容易看,最后搜尋到這個教程(自行替換.):www點rjhcoding點com/avrc-sd-interface-1.php,乖乖學習,把命令逐一寫了實驗,也終于寫好了,重點如下:
1. 開機稍等一下
2. 給80個空時鐘(CS拉高,做讀取動作)讓SD卡同步。
3. 給CMD0命令,(重置,回應:1字節,“#01H",表示在睡覺)
4. 給CMD8命令,(測試,回應:5字節)
5. 給CMD58命令,(獲得參數,回應:5字節)
6. 給CMD55命令,(告訴SD卡,接下來會給一個屬于ACMD的命令,回應:1字節)
7. 給ACMD41命令,(告訴SD開工,回應:1個字節,因為剛剛叫SD開工,回應肯定是“#01H”, 表示還在睡)
8. 稍等(SD卡正在忙)。
9. 再給CMD55
10.再給ACMD41
11.檢查回應,如果是“#00H",表示成功開工了,如果還是”#01H",就繼續8-11的過程,直到把SD卡喚醒。
到了這一步,就算成功了.
祝各位:新年進步!
|