zoukankan      html  css  js  c++  java
  • SDIO学习

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

  • 相关阅读:
    Ubuntu 17 安装sublime
    ubuntu17 设置python3为默认及一些库的安装
    Java中内存分析(一)
    我的学习JavaEE路线
    我爱学习……
    HDU 4602
    K-special Tables
    Gym 100712A - Who Is The Winner
    UVA 1583
    水题 UVA 1586
  • 原文地址:https://www.cnblogs.com/jieruishu/p/8308753.html
Copyright © 2011-2022 走看看