cnt = 200;
do
{ // Ñ»·¶ÁÈ¡·¢ËÍÃüÁî0µÄ·µ»Ø×´Ì¬£¬Ö±µ½³öÏÖ0x01»òÊdz¬³ö200´Î
sta = sd_send_cmds( CMD0, 0, 0x95 );
cnt--;
} while ( ( sta != 0x01 ) && ( cnt ) );
if ( cnt == 0) // ÅжÏÉÏÃæÑ»·Í˳öµÄÔÒò£¬¶ÁÈ¡µ½0x01£¿£¿£¿£¿ ³¬Ê±£¿£¿£¿£¿
{
// Èç¹û³¬Ê±ÁË£¬È¡ÏûƬѡºó£¬Ö±½ÓÍ˳ö
GPIO_SetBits(GPIOD,GPIO_Pin_2); // SD_CSΪ¸ß
SPI2_ReadWriteByte(0xFF);
SPI2_ReadWriteByte(0xFF);
return 1; // ·µ»Ø1£¬³õʼ»¯Ê§°Ü
}
sta = sd_send_cmds( CMD8, 0x1AA, 0x87 );
GPIO_SetBits(GPIOD,GPIO_Pin_2); // SD_CSΪ¸ß
SPI2_ReadWriteByte(0xFF);
// do
// { // ÒÔϲÙ×÷Ϊ¼¤»îSD¿¨£¬Ê¹SD¿¨½øÈëÕý³£¹¤×÷״̬
// GPIO_SetBits(GPIOD,GPIO_Pin_2); // SD_CSΪ¸ß // ÊÍ·ÅSD¿¨
// SPI2_ReadWriteByte(0xFF);
// GPIO_ResetBits(GPIOD,GPIO_Pin_2); // Ñ¡ÖÐSD¿¨
// sta=sd_send_cmds( CMD55, 0, 0x00 );
// sta=sd_send_cmds(ACMD41, 0x40000000, 0x00); // ·¢ËÍCMD41 ·´»ØÖµ‘ªÔ“ÊÇ0x00 …¢”µ0x40000000 0x00ff8000
// } while (SD_GetResponse(SD_RESPONSE_NO_ERROR)); // Ñ»·Ö±ÖÁ²Ù×÷³É¹¦ ·µ»ØÁã±íʾ³É¹¦
cnt = 0xffff;
do
{
GPIO_SetBits(GPIOD,GPIO_Pin_2); // SD_CSΪ¸ß // ÊÍ·ÅSD¿¨
SPI2_ReadWriteByte(0xFF);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
sta=sd_send_cmds( CMD55, 0, 0x00 );
sta=sd_send_cmds(ACMD41, 0x40000000, 0x00); // ·¢ËÍCMD41 ·´»ØÖµ‘ªÔ“ÊÇ0x00 …¢”µ0x40000000 0x00ff8000
cnt--;
} while ( sta && cnt );
GPIO_SetBits(GPIOD,GPIO_Pin_2);
|