SPI_SetSpeed(SPI_SPEED_HIGH); if(SD_Type != SD_TYPE_V2HC) { sector = sector<<9; } if(SD_Type != SD_TYPE_MMC) { //启用ACMD23指令使能预擦除 r1 = SD_SendCommand(ACMD23, count, 0x01); } //写多块指令CMD25 r1 = SD_SendCommand(CMD25, sector, 0x01); //应答不正确,直接返...
#define SD_TYPE_NOT_SD 0 //非SD卡 #define SD_TYPE_V1 1 //V1.0的卡 #define SD_TYPE_V2 2 //SDSC #define SD_TYPE_V2HC 4 //SDHC extern uint8_t SD_Type; void sd_power_on(void); SD_ERROR set_sd_to_idle_state(void); SD_ERROR get_sd_card_type(void); #endif /* __SD_S...
#define SD_TYPE_NOT_SD 0 //非SD卡 #define SD_TYPE_V1 1 //V1.0的卡 #define SD_TYPE_V2 2 //SDSC #define SD_TYPE_V2HC 4 //SDHC extern uint8_t SD_Type; void sd_power_on(void); SD_ERROR set_sd_to_idle_state(void); SD_ERROR get_sd_card_type(void); #endif /* __SD_S...
//SD卡的类型 #define SD_TYPE_NOT_SD 0 //非SD卡 #define SD_TYPE_V1 1 //V1.0的卡 #define SD_TYPE_V2 2 //SDSC #define SD_TYPE_V2HC 4 //SDHC extern uint8_t SD_Type; void sd_power_on(void); SD_ERROR set_sd_to_idle_state(void); SD_ERROR get_sd_card_type(void); #endi...
if(SD_Type!=SD_TYPE_V2HC)sector <<= 9;//转换为字节地址 if(cnt==1) { r1=SdSendCmd(CMD17,sector,0X01);//读命令 if(r1==0)//指令发送成功 { r1=SdRecvData(buf,512);//接收512个字节 } }else { r1=SdSendCmd(CMD18,sector,0X01);//连续读命令 ...
我们先从main文件了解一下程序的执行流程 复制 int main(void){ u16 i;USART1_Config();for(i=0;...
#define SD_TYPE_V2HC 4 //SDHC extern uint8_t SD_Type; void sd_power_on(void); SD_ERROR set_sd_to_idle_state(void); SD_ERROR get_sd_card_type(void); #endif /* __SD_SPI_DRV_H__ */ #include "./sd_nand/sd_spi_drv.h" ...
if(buf[0]&0x40)SD_Type=SD_TYPE_V2HC; //检查CCS (第30位) else SD_Type=SD_TYPE_V2; } } } else//不是2.0卡的情况下,检查是否为1.0卡或者mmc卡 { SD_SendCmd(CMD55,0,0X01); //发送CMD55 r1=SD_SendCmd(CMD41,0,0X01); //发送CMD41 ...
if (SD_Type != SD_TYPE_V2HC)sector <<= 9; //转换为字节地址 if (cnt == 1) { r1 = SD_SendCmd(CMD17, sector, 0X01); //读命令 if (r1 == 0) //指令发送成功 { r1 = SD_RecvData(buf, 512); //接收512个字节 } }
u8 SD_Type=0;//SD卡的类型 //移植时候的接口 //data:要写入的数据 //返回值:读到的数据 u8 ...