傳送指令時可能會有狀態轉換,尤其是初始化時。
指令分為兩類:一類為通用指令,另一類為針對某種卡的特定指令,但特定指令的實際數可以通用指令相同,所以cmd55+特定指令來傳送特定指令,
1、傳送cmd0指令(go_idle_state) 卡進入idle狀態
2、傳送指令cmd8(send_if_cond),如果卡裝置有response,說明此卡為sd2.0以上
4、傳送指令cmd55+acmd41,該指令是用來探測卡裝置的工作電壓是否符合host端的要求
第四步具體**如下:
while ((!validvoltage) && (count < sd_max_volt_trial))
sdio_cmdinitstructure.sdio_argument = sd_voltage_window_sd | sdtype;
sdio_cmdinitstructure.sdio_response = sdio_response_short;
sdio_cmdinitstructure.sdio_wait = sdio_wait_no;
sdio_cmdinitstructure.sdio_cpsm = sdio_cpsm_enable;
sdio_sendcommand(&sdio_cmdinitstructure);
errorstatus = cmdresp3error();
if (errorstatus != sd_ok)
response = sdio_getresponse(sdio_resp1);
validvoltage = (bool) (((response >> 31) == 1) ? 1 : 0);
count++;
}
至此完成電壓適配階段,以上就是俗稱的上電部分。
1、傳送cmd2(all_send_cid),獲取cid,狀態從ready狀態到identification 狀態
2、傳送cmd3(set_rel_addr),卡自動重置相對位址,並將相對位址傳送過來;狀態從identification狀態到 stand-by狀態,對以後的cmd2和cmd3不回應
完成第二部分。
SD卡初始化步驟詳解
硬體平台 飛思卡爾s12xep100 開發環境 codewarrior 5.2 結果 批量儲存穩定 最近在做檔案系統的公升級,先前用的是21ic論壇上面down的znfat,相信做微控制器軟體的兄弟們應該都知道。後來用的過程中發現此檔案系統超時機制做的不是很好,而且不精簡,會占用比較大的ram和fl...
SD卡初始化以及識別過程
sd卡上電後進入sd模式,如果sd卡在接收cmd0命令時cs為低,則sd卡進入spi模式,並且應答為r1應答,sd卡處於idle狀態,回到sd模式的唯一方法就是重新上電。spi模式初始化 1.上電後主機應傳送至少74個時鐘,在這期間應保持cs為 高電平,然後sd卡進入idle模式。2.傳送cmd0命...
STM32初始化SD卡流程
1,初始化sdio外設,關閉sdio時鐘。2,上電,開啟時鐘,注意此時時鐘應不能超過400khz,且此時是只有一位資料線,要到初始化完成後再調時鐘與資料線寬度。3,延時最低74個時鐘週期。使時鐘與sd卡穩定,否則會出錯。4,傳送cmd0,需要返回0x01,進入idle狀態 5,為了區別sd卡是2.0...