本帖最后由 huangtaichen 于 2019-12-6 08:59 编辑
背景: 最近在学习STM32内部的SDIO接口来读写SD卡, 卡用的是大容量16GB的HCSD卡, 主控为STM32F103RC;采用官方的SDIO读写例程为基础进行测试修改, 现在已经可以把卡识别并将卡带入到数据传输状态(Transfer Mode);
碰到的问题:
①在卡已经进入到Transfer State状态的情况下, 依照SD卡的技术说明, 想通过发送CMD7(携带卡的RCA地址) 让卡返回到StandBy状态; 但是发送CMD7卡却无响应, 用示波器查看CMD线上确实无响应; 但此时发送CMD13(携带同样的RCA地址为参数) 却能得到卡的R1响应, 响应的数据为CSR寄存器内容: 0x0000 0900;
想问下为何卡已在Transfer State 状态下发CMD7命令却无响应;
2019年12月5日 问题①测试情况更新: 实测发送的命令带的RCA参数即为本卡的RCA地址, 而本卡已处于选中的状态, 所以不会响应该CMD7命令; 而要取消卡的话则是发送CMD7并将RCA参数设置为0; (此种情况下也不会有发发送响应消息); 但是通过请求相应卡的状态信息(通过CMD13) , 已知卡已退回到standby state了; 故通过稍微修改下示例工程中的SD_SelectDeselect函数, 在函数里通过区分传入的参数Rca是否为0对命令是否需要响应做不同的处理即可. 现在可以正常的通过CMD7命令选中某个卡, 也可再次让其退回到standby state了; 同时在stanby state时,可通过CMD3命令让其更新一个新的RCA地址, 并再次用此新地址通过CMD7命令将其选中; 故此单条内容结束;
②像CMD7等响应为R1b的命令,它的响应和R1响应有何不同呢, 网上搜索是R1b说有一个忙碌状态位要检测, 想问下这个忙碌状态位是存在于什么地方, 具体做怎样的检测;
2019年12月5日 , 等待此条问题的解答,谢谢!!!
以上, 谢谢!
谢谢, 望解答
|