SD卡无法初始化。
用IO模拟就可以。#define SPILOW 0x03
#define SPIHIGH 0xfc
#define SPIF 0x80 //SPSTAT.7
#define WCOL 0x40 //SPSTAT.6
void SPI_Init(void)
{
P1M1=0x40;
P1M0=0xa0;
SPDAT = 0; //初始化SPI数据
SPSTAT = SPIF | WCOL; //清除SPI状态位
SPCTL=0xDF;
}
unsigned char SPI_ReadWriteByte(unsigned char x)
{
SPDAT=x;
delay0();
while (!(SPSTAT & SPIF)); //等待发送完成
SPSTAT = SPIF | WCOL;
delay0();
return SPDAT;
}
void SPI_Speed_High()
{
SPCTL=SPCTL&SPIHIGH;
}
void SPI_Speed_LOW()
{
SPCTL=SPCTL|SPILOW;
}
SPI配置应该没问题吧?程序流程应该没问题。但是CMD0命令返回的值一直0,如果把DO脚与单片机断开测试,返回的数据是FF。
程序是从IO模拟SPI通信改过来的,只是修改了SPI的部分。 |