SPI操作SD卡,CMD0无响应
使用STM32的SPI模式0操作SD卡,但是发送CMD0没有响应,一直回应0XFF。有人遇到过这种情况吗?操作过程:
1. 设置SPI时钟分频256.
2.CS引脚置1.
3.发送10个0xFF。
4.CS引脚拉低。
5.发送0X40,0X00,0X00,0X00,0X00,0X95
6.读取MISO引脚数值,发现一直是0XFF。
7.CS置1.
本帖最后由 QianFan 于 2015-3-28 17:07 编辑
折腾了一天,终于明白是怎么回事了。之前玩arduino的时候,买了一个网口的扩展版,上面自带一个SD小卡的卡槽,看板子上写着兼容MEGE,一开始没怎么注意,后来发现这些没注意的细节浪费了整整一下午的时间。
以为是时序的问题,但是用逻辑分析仪分析确实没有什么问题,但是CMD0一直没有应答。无心插柳,访问Arduino官网,看到了mege的引脚之后才恍然大悟。请看图。图是我从淘宝上扒的,把图片上商家的广告擦去了,有点难看,大家就将就吧。
这一张是正面图,Arduino一般来说13,12,11是SPI的引脚,我想当然的以为SD卡也是使用了这三个引脚。当插入Nucleo之后也是使用13,12,11三个引脚来操作。万恶的bug正是从这里出来的。其实SD SPI的接口并不是这三个,而是下图那奇葩的地方。
下面这一张是背面图。
图中圈出的地方是SD卡的接口部分,也是mege2560 SPI的默认引脚。当然,这个引脚在Nucleo上面是没有的。所以不管时序对还是不对,肯定是没有结果的。
虽然Nucleo兼容了Arduino的硬件接口,但是希望大家之后再为Nucleo挑选Arduino扩展版的时候注意一下,不要像我这样劳民伤财。
好了,不说了,我先去哭会。。。
................ 哭吧,泪干了 ,还得继续 学习了啊 wambob 发表于 2015-3-28 20:05
哭吧,泪干了 ,还得继续
人生总是这么精彩。。。 贱人就是矫情;P 男人哭吧哭吧,不是罪。:'( 有时候就是大意了!
页:
[1]
2