stm32学习笔记之sd卡v2.0协议初始化

stm32学习笔记之sd卡v2.0协议初始化

ID:5377662

大小:452.48 KB

页数:6页

时间:2017-12-08

stm32学习笔记之sd卡v2.0协议初始化_第1页
stm32学习笔记之sd卡v2.0协议初始化_第2页
stm32学习笔记之sd卡v2.0协议初始化_第3页
stm32学习笔记之sd卡v2.0协议初始化_第4页
stm32学习笔记之sd卡v2.0协议初始化_第5页
资源描述:

《stm32学习笔记之sd卡v2.0协议初始化》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、while(1)世界STM32学习笔记STM32学习笔记----SD卡V2.0协议初始化《STM32学习笔记》由while(1)世界会员所总结的学习笔记,供大家参考学习,有问题可以在while(1)世界的STM32版块提问,共同讨论。这一笔记是有会员liklon总结的学习笔记,如果有问题可以在while(1)世界的STM32版块发帖提问!STM32版块也提供源代码下载。笔记具体类容如下:while(1)世界STM32学习笔记现在使用的4G的SD卡,小于或等于2G的卡是属于标准SD卡,而大于2G的卡小于32G的卡是大容量SD卡,也就是SDHC卡。对于S

2、DHC卡的初始化和操作要使用V2.0协议。看了几天的SD卡v2.0协议,现在总结一下啊。首先是一个流程图,这个图在官方资料上有:SPI模式下SD卡部分操作指令命令参数回应描述CM0(0X00)NONER1复位SD卡CMD9(0X09)NONER1读取卡特定寄存器CMD10(0X0A)NONER1读取卡标志寄存器CMD16(0X10)块大小R1设置块的大小(字节数)CMD17(0X11)地址R1读取一块的数据CMD24(0X18)地址R1写入一块的数据while(1)世界STM32学习笔记CMD41(0X29)NONER1开始卡的初始化CMD55(0X

3、37)NONER1引用命令的前命令CMD59(0X3B)最后一位有效R1设置CRC开启(1)或关闭(0)SD卡R1回应格式:BITBIT6BIT5BIT4BIT3BIT2BIT1BIT070参数错误地址错误连续擦除错误命令CRC错误非法命令擦除复位IDLE状态卡会根据不同的时候处在不同的状态第一步操作:复位SD卡上电后先发送(>74个时钟),因为SD卡有个供电电压上升过程需要大约64个时钟,之后的10个时钟是用来与SD卡同步(参考《例说STM32》)。参考代码:for(count=0;count<15;count++)SPI_WriteReadByt

4、e(0xff);//产生74个以上的脉冲SD卡默认是SD模式,现在用STM32去操作,切换为SPI模式后更好操作。所以while(1)世界STM32学习笔记在片选为低时发送CMD0,此时卡进入IDLE状态,因为CMD0回应的命令是R1,根据上面R1的回应格式可以看出我们自需要检查最低位就知道是否处于IDLE状态。参考代码:do{tmp=SD_WriteCommand(CMD0,0,0X95);//发送SDcount++;}while((tmp!=0x01)&&(count

5、0卡还是V1.0卡或MMC卡,还可以检测CMD8响应返回的数据判断是否支持给定的工作电压范围。根据流程图可以看出。1.如果SD卡支持当前的电压就会返回R7,并包含CMD8的参数部分,其中包括:Checkvoltage和checkpattern。2.如果SD卡不支持当前的工作电压则不会返回任何响应信息,继续处在IDLE状态。如果是V1.0x的SD卡也不会有响应。3.在PLV2.0(physicallayerversion2.0)下,在首次执行ACMD41之前,必须执行CMD8指令,用以初始化SDHC卡,SDHC卡根据是否接收到CMD8指令来鉴别控制器是

6、否支持PLV2.0协议。使用低电压的控制器也必须在ACMD41命令之前发送CMD8,避免可以工作在两种电压模式下的SD卡因为没有接收到CMD8,而默认工作在高电压环境下,被误认为是只支持高电压工作模式。ApplicationNote:Itisrecommendedtouse‘10101010b’forthe‘checkpattern’.R7的格式:while(1)世界STM32学习笔记从上面可以看到,R7为5个字节,在发送CMD8后,SD卡响应,发送回来的第一个字节就是R1,之后的4个字节中就包含了Checkvoltage和checkpattern。

7、下面是仿真的结果:判断Checkvoltage按照如下标准:根据流程图就可以看出发送CMD8后SD卡的类型基本上分了两类。第三步:由ACMD41来初始化SD卡,SD卡的初始化从收到ACMD41开始。ACMD指令的HCS(HostCapacitySupport)位如果设定为1的话,表明控制器支持SDHC卡,否则表示不支持。SD卡初始化和识别过程:在CMD8命令发送之后的ACMD41指令其功能有所扩展,在参数里多了HCS部分,在响应里面多了CCS(CardCapacityStatus)部分。HCS参数会被不响应CMD8命令的SD卡所抛弃。控制器向不响应C

8、MD8的卡发送ACMD41指令时,HCS位应while(1)世界STM32学习笔记该设置为零0。如果向SDH

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。