1, 我是用STM32F4 DISCOVERY的SPI口连接到正点原子的开发板的,其它控制IO的都已经连接,SD CHIP SELECT 测试了也是正常的,比如说原子开发板其它SPI外设干扰的去使能,还有官方DISCOVERY开发板的SPI外设我都去使能了,应该不会受到其他SPI外设的干扰了。
2,电源跟地两块实验板我也连接起来了,包括5V电压跟3V电压(DISCOVERY只有3V没3.3V,这个应该也没有影响啊)
3,SPI口的设置我是跟原子开发板的程序是一样的,硬件仿真我看SPI寄存器配置也是对的啊,F4我的PCLK2时钟是FCLK的二分频84MHZ,识别阶段低速模式256分频也是328.125KHZ,也是SD卡识别阶段要求的频率400KHZ以下啊。
4,因为用STM32F4,我怕速度太快,等待SD卡上电时间我已经延长,也产生>74个时钟脉冲(实际我用了100个左右),让SD卡初始化完成。
5,然后通过SPI口读写一个字节的方式发送CMD0命令,但是SD卡进入IDLE状态失败了。(我基本用库编写的,但是SPI读写一个字节命令我用操作寄存器的方式,这个没有影响吧)
6,原子那块开发板我已经把F1的程序给擦除了,其IO口应该影响不到F4对SD卡的控制。
我已经调了很久找不出原因,希望各位大大指点迷津。谢谢! |