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的部分。
|