SD卡初始化顺序.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SD卡初始化顺序

1.1 SD卡模式选择SD卡上电后进入SD模式,如果SD卡在接收CMD0命令时CS为0则SD卡进入SPI模式并且应答为R1应答,SD卡处于idle状态,回到SD模式的唯一方法就是重新上电。?1.2 SD卡SPI模式下初始化1、Clock:上电后主机应发送至少74个时钟,在这期间应保持CS为高电平,然后SD卡进入idle模式。2、进入SPI模式:如果在接受CMD0命令时CS为低电平,则SD卡进入SPI模式,CMD0命令没有参数。CMD0的应答R1格式,R1应答的内容定义为:?3、CMD8:初始化发送CMD0后,SD卡并不知道当前的电压是否合适,为了验证电压Physical LayerSpecification Version 2.00定义了CMD8命令;初始化发送完CMD0后,在发送ACMD41之前需发送CMD8,以便初始化High Capacity SD卡,如果SD卡不能在该电压下工作,则SD卡不作应答,并处于idle状态,否则SD卡将作出应答并echo出命令中设置的电压范围和check pattern。CMD8命令格式:VHS:??0000b、Others???Not Defined0001b?2.7-3.6V0010b?Reserved for Low Voltage Range0100b、1000b?ReservedCheck Pattern:可为任意8位的数,推荐使用0xaa。??CMD8应答:4、发送ACMD41:ACMD命令是在发送需要的命令之前发送一个CMD55命令组成的,ACMD41命令由CMD55和CMD41组成,CMD55命令没有参数,应答为R1应答,HCS=1表明主机支持High Capacity SD卡,HCS=0表明不支持。??发送CMD41命令,判断应答是否表明表明SD卡仍然处于初始化阶段;R1应答的bit0为1表明处于idle状态,SD卡还在初始化阶段。5、初始化完成:当发送ACMD41命令的应答为0x00时表明SD卡已完成ACMD41发起的初始化过程。这里为大家总结了一下编写该程序所需要的知识:SD卡的官方资料(我承认这个资料很垃圾,比起民间的技术总结它的内容可谓又臭又长,但是作为基础也要了解一下,SD协议不用看)清晰明了的MMC卡时序图(虽然这个是MMC卡的,但是在初始化的时候CMD0的时序是一样的)电路:我用的SD卡的电路其实很简单,参考SD卡的官方资料中的电路链接就可以的。供电问题:由于SD卡的电压是3.3V,所以你的CPU必须支持3.3V的IO端口输出。再来说一说鸡毛蒜皮的细节:为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,/tech/detail/CMD55.htmlCMD55(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类命令的作用)。为什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,虽然本文并不想讨论MMC卡的问题,但是我还是要说:为了实现兼容性,上电或者发送CMD0后,应该首先发送CMD55+ACMD41确认是否有回应,如果有回应则为SD卡,如果等回应超时,则可能是MMC卡,再发CMD1确认。正确的回应内容应该是: CMD0——0x/tech/dzg/200010140014/705327.html01(SD卡处于in-idle-state) CMD55——0/tech/detail/X01.htmlx01(SD卡处于in-idle-state) ACMD41——0/tech/detail/X00.htmlx00(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指令的过程是这样的:首先使/tech/qtdz/200010160031/1604424.htmlCS为低电平,SD卡使能;其次在SD卡的Din写入指令;写入指令后还要附加8个填充时钟,是SD卡完成内部操作;之后在SD卡的Dout上接受回应;回应接受完毕使CS为低电平,再附加8个填充时钟。在SD卡的Din没有数据写入时,应使Din保

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档