| 非常的感谢hq1025,stf的帮助! 
 我更改了端口的初始化程序,使用周立功的代码,可以读出SD的容量,扇区数等信息,可是写了数据读出来全是0xFF或者0x00.这是为什么?
 
 1,关于NSS,如hq1025说的,初始化为NSS后,它可做普通的IO来实现CS.这一点已
 证明可以.
 
 2,如hq1025说的,我改了接收函数为:
 
 INT8U SPI_RecByte(void)
 {
 SSP_ClearFlag(SSP0, SSP_FLAG_RxTimeOut);
 SSP_ClearFlag(SSP0,SSP_FLAG_RxOverrun);
 
 SSPx->SR &=  0xFB;    //
 
 SPI_SendByte(0xFF);   // 这里为什么要发0xFF??????????
 
 /* loop while Receive FIFO is empty */
 while(SSP_GetFlagStatus(SSP0,SSP_FLAG_RxFifoNotEmpty) == RESET);
 //for(u16 i=0; i<65535; i++);
 
 /* return the byte read from the SPI bus */
 return((u8)SSP_ReceiveData(SSP0));//>>8);
 }
 
 3,按照STF的修改了IO口的设置.
 
 4,初始化成功说明,通信应该没有问题.问题在于命令!
 我写了512个字节到第0 块,然后读出来总是0或者0xFF.不明白究竟是写有问题,还是读有问题.我没有使用CRC.
 程序如下:
 for(i=0; i<512; i++)
 {
 Tx_Buffer = i;
 }
 SD_WriteBlock(0,Tx_Buffer);
 //此函数发送CMD24.
 
 SD_ReadBlock(0,Rx_Buffer);
 //此函数发送CMD17.
 
 
 请问:读写的时候,还应该注意什么?
 |