SD卡操作2
擦除三步驟
- ERASE_GROUP_START定義連續(xù)范圍的開始地址
- ERASE_GROUP_END定義結(jié)束地址
- ERASE開始進行擦除。
如果接收到除了SEND_STATUS和ERASE之外的命令,則:
設置ERASE_RESET并解除擦除并執(zhí)行新的命令
如果設置了保護,則不會擦除,并且會設置狀態(tài)為:WP_ERASE_SKIP
寬總線選擇和解除選擇
- SET_BUS_WIDTH,默認為1位
- 在SELECT/DESELECT_CARD選擇了卡以后,該命令才有效
保護管理
三種保護方式
內(nèi)部卡保護
機械保護
密碼保護
內(nèi)部卡的寫保護
- CSD:CARD SPECIAL DATA卡的特殊數(shù)據(jù),也就是保護的區(qū)域
- 廠商和內(nèi)容商可以對整卡進行寫保護,也可以保護一個扇區(qū)
- WP_GRP_ENABLE,后WP_GRP_SIZE確定保護的扇區(qū)個數(shù)
- SET_WRITE_PROT和CLR_WRITE_PROT控制制定組的保護,SEND_WRITE_PROT進行連續(xù)32個數(shù)據(jù)塊保護
機械寫保護開關
這個數(shù)碼相機用的SDIO卡有機械開關
密碼保護
設置密碼
清除密碼
卡上鎖
卡解鎖
強制擦除
卡狀態(tài)寄存器
響應格式R1包含32位卡狀態(tài)域,除了少數(shù)幾位保留以外,其他都有對應的卡狀態(tài),如12:9位4位,包含了如下的信息:

4.png
SD狀態(tài)寄存器
包含一個512位的數(shù)據(jù)塊,包含卡的特定功能,大部分都保留了。

5.png
命令與響應
塊傳輸用寫命令
SET_BLOCK_COUN // 寫多少
WRITE_BLOCK // 寫塊
WRITE_MULTIPLE_BLOCK //寫多塊
PROGRAM_CID //設置CID
PROGRAM_CSD //和CSD
SET_WRITE_PROT //保護的地址
CLR_WRITE_PROT //清保護的地址
SEND_WRITE_PROT // 保護的狀態(tài)
擦除
ERASE_GROUP_START \\擦除首地址
ERASE_GROUP_END \\ 擦除末地址
ERAS \\ 執(zhí)行擦除
五種響應類型
- R1:普通響應命令一共48位,除了開始位,傳輸位和結(jié)束位以外,包括7位CRC,還包括了命令索引和卡狀態(tài)
- R1b:比1多一個卡忙碌的信號,此信號在數(shù)據(jù)線上發(fā)送。
- R2:用于CID和CSD,一共136位,和R1不同的是,一共有1..127是用于傳輸CID和CSD的值。
- R3:48位,用于返回OCR寄存器的32位值。
- R4:48位,用于包含指定RCA,寄存器的地址和值。
- R4b:48位,用于IO卡的ORC操作。
- R5:中斷請求
- R6:適用于IO卡的中斷請求