为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,CMD55(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类命令的作用)。

为什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,虽然本文并不想讨论MMC卡的问题,但是我还是要说:为了实现兼容性,上电或者发送CMD0后,应该首先发送CMD55+ACMD41确认是否有回应,如果有回应则为SD卡,如果等回应超时,则可能是MMC卡,再发CMD1确认。

正确的回应内容应该是:
    CMD0——0x01(SD卡处于in-idle-state)
   
CMD55——0x01(SD卡处于in-idle-state)
   
ACMD41——0x00(SD卡跳出in-idle-state,完成初始化准备接受下一条指令)
   
这里要说的是如果最后的回应内容还是0x01的话,可以循环发送CMD55+ACMD41,直到回应的内容0x00。

在所有的指令中,唯独CMD0特殊,在向SD卡发送以前需要向SD卡发送74+个时钟。那么为什么要74个CLK呢?因为在上电初期,电压的上升过程据SD卡组织的计算约合64个CLK周期才能到达SD卡的正常工作电压他们管这个叫做Supply
ramp up time,其后的10个CLK是为了与SD卡同步,之后开始CMD0的操作,严格按照此项操作,一定没有问题。

关于SD卡的SPI总线,在读入数据时SD卡的SPI是CLK的上升沿输入锁存,输出数据也是在上升沿。

向SD卡写入一个CMD或者ACMD指令的过程是这样的:
首先使CS为低电平,SD卡使能;其次在SD卡的Din写入指令;写入指令后还要附加8个填充时钟,是SD卡完成内部操作;之后在SD卡的Dout上接受回应;回应接受完毕使CS为低电平,再附加8个填充时钟。

在SD卡的Din没有数据写入时,应使Din保持高电平。

最新文章

  1. thrift笔记
  2. Functional Programming without Lambda - Part 2 Lifting, Functor, Monad
  3. os 模块
  4. poj 3468(线段树)
  5. 一看便知linux下mysql报错ERROR 1044: Access denied for user: '@localhost' to database 'mysql'
  6. Oracle 的递归查询将层级变成字符串
  7. mima开发实列
  8. oc 字符串
  9. Gallery 图片画廊
  10. [ CodeVS冲杯之路 ] P3955
  11. php中intval()函数
  12. Project Euler 78:Coin partitions
  13. SQL学习_查询重复数据和连接多个表数据的方法
  14. 知识点总结之HTML篇
  15. BZOJ 1010 [HNOI2008]玩具装箱toy
  16. javascript中event.clientX和event.clientY用法的注意事项
  17. 使用three.js实现机器人手臂的运动效果
  18. 安装 cgilib 0.5
  19. elk-插件(head、X-pack)(五)
  20. git 提交丢失Warning, you are leaving 2 commits behind,

热门文章

  1. .Net客户端监听ZooKeeper节点数据变化
  2. 5G
  3. springMVC 配置CharacterEncodingFilter之后不起效果
  4. Javascript中的字典和散列
  5. AC日记——数1的个数 openjudge 1.5 40
  6. WPF ToolKit Chart 自定义样式
  7. Eclipse中没有andriod问题解决方法
  8. JdbcUtils
  9. HDU4704+费马小定理
  10. Uva 796 Critical Links 找桥
  11. PHP面向对象(OOP):__toString()方法
  12. therefore/so/hence/then/accordingly/Thus
  13. WebAPI 用ExceptionFilterAttribute实现错误(异常)日志的记录(log4net做写库操作)
  14. sqlserver数据库类型对应Java中的数据类型
  15. java基础07 多线程
  16. Python实现简易Web服务器
  17. Unity的四元素与Vector3的乘积的含义
  18. Java集合类源码解析:ArrayList
  19. 快速上手ABP - Angular部分 - 如何最快速度了解相关API。
  20. itoa()函数和atoi()函数详解