SDIO/emmc

https://baijiahao.baidu.com/s?id=1561100856106707&wfr=spider&for=pc

http://www.eepw.com.cn/article/201703/344894.htm

http://blog.csdn.net/xiaoxiaopengbo/article/details/73864250

<一文搞懂SDIO>

SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等.

  1. 全速卡: 传输速率超过100Mbps,时钟范围0-25MHz。

  2. 低速卡:时钟范围0-400KHz。 

低速卡支持类似调制解调器, 条形码扫描仪和GPS接收器等应用。高速卡支持网卡,组合卡等.

 

 

 

 

 

 

MMC卡(不支持SDIO-4,SDIO_CMD初始化时用开漏模式,通讯时用推挽,已数据流或块形式传输)、SD卡(比MMC容量大,安全、速度更高)都支持MCI接口(SPI/SDIO_1/SDIO-4).通过ACMD6命令设置总线宽度(默认是1)

SDIO:是SD卡的低速版本,接口简单灵活。STM32F有相应的驱动库。

接口IO:DATA0~3/CMD:都需要推挽上拉。SDIO-CK与挂接在AHB总线上的SDIOCLK之间的关系为SDIO_CK=SDIOCLK/(2+CLKDIV)

主要操作:卡初始化(识别卡的类型)、读写卡(以块的形式进行,都是操作的SDIO_FIFO这个32位的寄存器)。

对于STM32F407:1 时钟:驱动SDIO适配器是用PLL48CK,而驱动SDIO的时钟是HCLK/2.

具体命令可查

《Physical Layer Simplified Specification Version8.00》

《SDIO_Simplified_Specification_Ver3.00》

命令:

多数据的写:主机发送数据前需要判断卡的忙闲(DATA0被硬件拉低)。

寄存器:1 电源及寄存器:if(SDIO_POWER&(3<<0)=!=0x03) SDIO_POWER|=(0x03<<0);

SDIO时钟控制寄存器(SDIO_CLKCR:WIDBUS=1;//4位宽度,BYPASS=0;//禁止旁路,CLKEN=1;//使能时钟,CLKDIV=0;//不分频。

SDIO参数制寄存器(SDIO_ARG:必须在写命令之前先写这个参数寄存器

SDIO命令响应寄存器(SDIO_RESPCMD:但只有低6位有效(命令索引)

SDIO响应寄存器组(SDIO_RESP1~SDIO_RESP4:如果收到短响应,则数据存放在SDIO_RESP1寄存器里面

SDIO命令寄存器(SDIO_CMD6位为命令索引

SDIO数据长度寄存器(SDIO_DLEN):低25位有效,块传输时必须是数据块长度(通过SDIO_DCTRL设置)的倍数

SDIO数据控制寄存器(SDIO_DCTRL):最重要根据自己情况配置。

状态寄存器(SDIO_STA)、清除中断寄存器(SDIO_ICR)和中断屏蔽寄存器(SDIO_MASK

if(SDIO_STA&(1<<2))//超时

{SDIO_ICR|=(1<<2);}//清除超时标记

SDIO的数据FIFO寄存器(SDIO_FIFO):读写FIFO各8个字(32字节,必须4字节对齐)

 rt-thread 的SDIO例子,利用sdio接口在SD卡上挂载fatfs

emmc协议:嵌入式底层中的eMMC协议

posted on 2018-01-18 10:05  杰瑞鼠  阅读(1781)  评论(0编辑  收藏  举报