Sec 3.1 Card Identification Operation
大略翻譯一下:
進行 SD/MMC Card的一般傳輸動動之前,先要對bus上所有的card作identify 和 configure。
先下 ALL_SEND_CID broadcast command。請bus 上的card回應。
controller收到回應後,再讀取card的 uniqure card identification address (CID)。
之後再assign 一個 relative adress (RCA)。
RCA 的長度比 CID短,
之後,controller和 card 之間的傳輸,都用這個RCA作為定址的方法。
SD Card的 identify procedure
- 送 GO_IDLE_STATE (CMD0) 給SD card。
這個command讓所有的card進入idle mode。 - 送 APP_CMD (CMD5) 給SD card。card會回應 R1。
這個command告訴card 接著會是application command。 - 送 SD_SEND_OP_COND (ACMD41) 並且包含一個argument告訴card support voltage ranage。card會回應 R3。
這個command可以用來辨識card是否支援controller 提供的voltage range。 - 送 SD_SEND_CID (CMD2)給SD card。 card收到會回應 R2。
這個command請所有的card送出他們的CID。由於SD card 的設計,會只有一個SD Card能夠成功的送出CID。送出CID的Card會進入identification state,不會再回應這個command,好將回應的機會留給其他還沒回的Card。 - 送出SEND_RELATIVE_ADDR (CMD3)給SD Card,請Card將Relative Address送回來。
只有剛剛成功回覆 CID的SD Card會接受這個command。並且回應 R1和他的Relative Address (in R6)。之後,會進入 Data Transfer Mode。 - 反覆4, 5,當沒有SD Card回應 SD_SEND_CID command,代表所有的SD Card都進入 Data Transfer Mode。Identification 完畢。
MMC Card和 SD Card 不一樣的地方是 MMC Card需要 controller 指定 RCA,所以在procedure 5 後,要再下一個SET_RELATIVE_ADDR (CMD3) 設定MMC Card Address。
5 則留言:
你好
小弟最近在找尋SD卡的資料
您的解說讓我受益良多,是不是可以請您在多講一下怎麼在SD卡裡面建立檔案(如TXT檔)
謝謝您了
可以對SD 的sector作read/write動作後,接下來就是OS的範圍了,所以要考慮的地方很多,例如..要不要用filesystem?
您的意思是指說...
要用ads下撰寫ㄧ個txt檔是ㄧ件很困難的事嗎? 小弟想用ads1.2對sd卡進行資料的儲存
寫入txt後,如果SD card拿到pc上的card reader後還要看得到。就要使用 fat 格式(filesystem)。
如果只是要把SD當作是embedded controller的一個storage,自己存,自己讀就好,那就不用這麼麻煩還要用filesystem。就一個sector,一個sector存取資料就好。
你好
想請問一下如何得知sd卡上的資訊
例如製造廠商,容量等訊息??
謝謝~~
張貼留言