- sdio介绍
SDIO的全称是安全数字输入/输出接口,一般都是用来SD卡,SD I/O 卡,MMC卡进行通讯。
SDIO总线拥有9根线,一个CLK时钟线,四条DATA双向数据线,一条双向指令线CMD,
VDD,VSS1,VSS2电源和地信号线。所有的通信都是由HOST端发送命令开始的,Device端只要能解析命令,就可以相互通信
SDIO 通过 SD 的 I/O 管脚来连接外部的外围 device 并传输数据。这些外围设备,我们称为 SDIO 卡,常见的有:
· Wi-Fi card
· GPS card
· GSM/GPRS modem card
· Bluetooth card
SD/SDIO的传输模式分为三种
spi mode、1-bit mode、4-bit mode
Sdio协议由sd协会制定,下面的E1为sdio的协议;后面章节通过tf卡来分析协议细节;
- 卡介绍
SD卡分类
按照容量进行分类
1、SDSC:小于2GB
2、SDHC:大于2GB小于32GB
3、SDXC:大于32GB小于2TB
按照内部编程速度分类
1、class 0:
2、class 2:最低2MB/sec
3、class 4:最低4MB/sec
4、class 6:最低6MB/sec
5、class 10:最低10MB/sec
6、UHS-I:写入数据50MB/sec以内,读取数据104MB/sec以内
7、UHS-II:写入数据156MB/sec以内,读取数据312MB/sec以内
按照电压范围分类
1、SD卡高电压工作电压范围:2.7V~3.6V
2、UHS-II SD卡工作电压范围:1.7V~1.95V
UHS是“Ultra-High Speed 超高速”的缩写,支持超高速总线接口的存储卡一般都会有着更快的读写速度
UHS-I的其实就是第一代超高速SD卡,理论传输速度可达104MB/s,其接口插脚排向下兼容,与不支持UHS-I的SD卡产品是相同的
USH-II的则是第二代超高速SD卡,理论传输速度可达312MB/s,速度翻了三倍。在金手指结构上也有所改变,启用了额外的一排的金手指,有效提升了数据传输速度,价格也更贵
SD卡速度
用卡面的标识来区分SDHC卡的速度水平和档次,Class 2代表入门级,Class 4和Class 6速度逐步提升,最新的Class 10则代表了*SDHC/SD卡。不过,现在Class 10也要过时了,因为我们有了更高端的UHS-I标准。
SD卡协会推出新的SDXC/SDHC卡性能标识规范,在以往Class 2/4/6/10的基础上,新增UHS-I和UHS Speed Class 1两款性能标识
- Sd卡协议
SD卡指令格式
Command格式
Data格式
Device响应的command格式
SD卡不同的命令回应的数据长度不一致
R1 (normal response command):
R2 (CID, CSD register)
R3 (OCR register)
R6 (Published RCA response)
SD卡cmd
SD模式的命令说明:
CMD0 GO_IDLE_STATE Mandatory Mandatory Used to change from SD to SPI mode /* 使SD卡进入Idle状态 */
CMD2 ALL_SEND_CID Mandatory CID not supported by SDIO /* 广播获取卡的CID信息 */
CMD3 SEND_RELATIVE_ADDR Mandatory Mandatory /* 广播获取SD卡所分配的相对地址 */
CMD4 SET_DSR Optional DSR not supported by SDIO
CMD5 IO_SEND_OP_COND Mandatory
CMD6 SWITCH_FUNC Mandatory1 Mandatory1 Added in Part 1 v1.10
CMD7 SELECT/DESELECT_CARD Mandatory Mandatory /* 根据获取指定的RCA,选中SD卡,如果在选中一个卡的状态下,又选中其他的卡,那么之前的卡会自动取消选中,如果发送地址0,则表示取消选中全部卡 */
CMD9 SEND_CSD Mandatory CSD not supported by SDIO /* 获取SD相关的存储信息,如块大小,容量等. */
CMD10 SEND_CID Mandatory CID not supported by SDIO
CMD12 STOP_TRANSMISSION Mandatory /* 停止多块传输操作 */
CMD13 SEND_STATUS Mandatory Card Status includes only SDMEM information /* 获取卡的状态 */
CMD15 GO_INACTIVE_STATE Mandatory Mandatory
CMD16 SET_BLOCKLEN Mandatory /* 设置SD卡的块大小,CSD寄存器有描述. */
CMD17 READ_SINGLE_BLOCK Mandatory /* 使SD卡进入传输状态,读取单个块 */
CMD18 READ_MULTIPLE_BLOCK Mandatory /* 使SD卡进入传输状态,读取多个块,直到收到CMD12为止 */
CMD24 WRITE_BLOCK Mandatory /* 使SD卡进入传输状态,写入单个块 */
CMD25 WRITE_MULTIPLE_BLOCK Mandatory /* 使SD卡进入传输状态,写入多个块 */
CMD27 PROGRAM_CSD Mandatory CSD not supported by SDIO
CMD28 SET_WRITE_PROT Optional
CMD29 CLR_WRITE_PROT Optional
CMD30 SEND_WRITE_PROT Optional
CMD32 ERASE_WR_BLK_START Mandatory
CMD33 ERASE_WR_BLK_END Mandatory
CMD38 ERASE Mandatory
CMD42 LOCK_UNLOCK Optional
CMD52 IO_RW_DIRECT Mandatory
CMD53 IO_RW_EXTENDED Mandatory Block mode is optional
CMD55 APP_CMD Mandatory /* 特殊指令前命令,在发送ACMD类指令前,需要发送此命令 */
CMD56 GEN_CMD Mandatory
ACMD6 SET_BUS_WIDTH Mandatory /* 设置SD卡的总线位宽,这个需要读取SCR确定 */
ACMD13 SD_STATUS Mandatory
ACMD22 SEND_NUM_WR_BLOCKS Mandatory
ACMD23 SET_WR_BLK_ERASE_COUNT Mandatory
ACMD41 SD_APP_OP_COND Mandatory /* 获取SD电压值 */
ACMD42 SET_CLR_CARD_DETECT Mandatory
ACMD51 SEND_SCR Mandatory SCR not supported by SDIO /* 获取SD卡的SCR寄存器的值 */
SD卡状态