使用平台:nedu nuc240
sdcard有sdhc及spi 2種介面,本例子以 PD0, PD1, PD2 and PD3 for SPI2 連接sdcard.,並且作sdcard初始化及讀寫驅動
NUC230_240BSP_CMSIS_V3.00.001 - SDCARD DRIVER.zip
(577.29 KB)
Sample code path:
\NUC230_240BSP_CMSIS_V3.00.001 - SDCARD DRIVER\SampleCode\NuEdu\Smpl_Basic01_SPI_SDCARD\KEIL
SD 卡的典型初始化過程如下:
1、初始化與SD 卡連接的硬體條件(MCU 的SPI 配置,IO 配置);
2、上電延遲(>74 個CLK);
3、回復卡原始狀態(CMD0);
4、 啟動卡,內部初始化並取得卡類型(CMD1(用於MMC 卡)、CMD55、CMD41);
5.、查詢OCR,取得供電狀況(CMD58);
6、是否使用CRC(CMD59);
7、設置讀寫區塊數據長度(CMD16);
8、讀取CSD,取得卡的其他資訊(CMD9);
9、發送8CLK 後,CS拉High;
這樣我們就完成了對 SD 卡的初始化,一般設置讀寫區塊資料長度為512 個Byte,並禁止使用CRC。在完成了初始化之後,就可以開始讀寫資料了。
SD 卡讀取資料,透過CMD17 來實現,流程如下:
1、發送CMD17;
2、接收卡回應R1;
3、接收資料起始旗標0XFE;
4、接收資料;
5、接收2 個位元組的CRC,如果沒有開啟CRC,這兩個位元組在讀取後可以丟掉。
6、8CLK 之後,CS拉High;
以上就是一個典型的讀取SD 卡資料過程。
SD 卡的寫於讀數據差不多,寫資料透過CMD24 來實現,具體流程如下:
1、發送CMD24;
2、接收卡回應R1;
3、發送寫資料起始旗標0XFE;
4、發送資料;
5、發送2 位元組的偽CRC;
6、8CLK 之後,CS拉High;
以上就是一個典型的寫 SD 卡過程。 |