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

  • 相关阅读:
    417 Pacific Atlantic Water Flow 太平洋大西洋水流
    416 Partition Equal Subset Sum 分割相同子集和
    415 Add Strings 字符串相加
    414 Third Maximum Number 第三大的数
    413 Arithmetic Slices 等差数列划分
    412 Fizz Buzz
    410 Split Array Largest Sum 分割数组的最大值
    409 Longest Palindrome 最长回文串
    day22 collection 模块 (顺便对比queue也学习了一下队列)
    day21 计算器作业
  • 原文地址:https://www.cnblogs.com/jieruishu/p/8308753.html
Copyright © 2011-2022 走看看