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

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.

命令:

多数据的写:主机发送数据前需要判断卡的忙闲(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_CMD):低6位为命令索引

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字节对齐)

最新文章

  1. HttpUrlConnection 基础使用
  2. 不重新编译php安装配置eAccelerator
  3. Permutations II
  4. Range对象理解,浏览器兼容性,获取鼠标光标位置
  5. iOS开发UI篇—多控制器和导航控制器简单介绍
  6. Java中方法与数组
  7. Web Server tomcat配置网站
  8. udp丢包原因分析
  9. Java调用Lua(转)
  10. 在小发现SQL字符串比较是不是他们的大写和小写敏感
  11. Struts2框架05 result标签的类型
  12. CI脚本异常退出问题定位
  13. Python之os.fork
  14. 一个网卡配置多个ip配置实现,centos7系统
  15. Nginx+tomcat配置集群负载均衡
  16. Linux安装docker
  17. 配置NFS
  18. python的魔术方法
  19. php省市联动实现
  20. Matplotlib新手上路(下)

热门文章

  1. codeforces B. Eugeny and Play List 解题报告
  2. 截图工具,更改系统默认快捷键,系统配置实用程序,以管理员身份运行cmd(win7)
  3. css td 溢出改为省略号
  4. SQL 电子书
  5. wannafly test D
  6. Locked Treasure
  7. C. Pearls in a Row
  8. python 之生产者消费者模型
  9. 【网络爬虫】【java】微博爬虫(二):如何抓取HTML页面及HttpClient使用
  10. 4-1eclipse &amp; 4-2在eclipse下开发Java