1,初始化sdio外設,關閉sdio時鐘。
2,上電,開啟時鐘,注意此時時鐘應不能超過400khz,且此時是只有一位資料線,要到初始化完成後再調時鐘與資料線寬度。
3,延時最低74個時鐘週期。使時鐘與sd卡穩定,否則會出錯。
4,傳送cmd0,需要返回0x01,進入idle狀態
5,為了區別sd卡是2.0還是1.0,或是mmc卡,這裡根據協議向上相容的原理,首先傳送只有sd2.0才有的命令cmd8,如果cmd8返回無錯誤,則初步判斷為2.0卡,進一步傳送命令迴圈傳送cmd55+acmd41,直到返回0x00,確定sd2.0卡初始化成功,進入ready狀態,再傳送cmd58命令來判斷是hcsd還是scsd,到此sd2.0卡初始化成功。如果cmd8返回錯誤則進一步判斷為1.0卡還是mmc卡,迴圈傳送cmd55+acmd41,返回無錯誤,則為sd1.0卡,到此sd1.0卡初始成功,如果在一定的迴圈次數下,返回為錯誤,則進一步傳送cmd1進行初始化,如果返回無錯誤,則確定為mmc卡,如果在一定的次數下,返回為錯誤,則不能識別該卡,初始結束。
SD卡初始化
傳送指令時可能會有狀態轉換,尤其是初始化時。指令分為兩類 一類為通用指令,另一類為針對某種卡的特定指令,但特定指令的實際數可以通用指令相同,所以cmd55 特定指令來傳送特定指令,1 傳送cmd0指令 go idle state 卡進入idle狀態 2 傳送指令cmd8 send if cond 如...
stm32埠初始化
今天上課,點亮數碼管,gpio初始化後,數碼管上有一段亂碼。要讓這亂碼消失掉,需要改變gpio初始化的順序。在gpio埠使能後,要加odr 埠暫存器 控制 gpio inittypedef gpio initstructure 定義乙個結構體 rcc apb2periphclockcmd rcc a...
SD初始化流程
sd初始化流程 當host上電後,使所有的卡裝置處於卡識別模式,完成設定有效操作電壓範圍,卡識別和請求卡相對位址等操作。1 傳送指令cmd0使卡裝置處於idle狀態 2 傳送指令cmd8,如果卡裝置有response,說明此卡為sd2.0以上 3 傳送指令cmd55 acmd41,該指令是用來探測卡...