实 用 文 档1 大家读写 SD 卡怎么不用 SD 模式方式读取,是SPI 方式读取简单 ? 下面贴一段代码, 是在 FPGA 上程序,只能用 SD 模式进行读, 没有文件系统,没有用AVR 硬件实现,电路图:电路说明, SD_DAT3 一直给高电平程序:#ifndef __SD_Card_H__ #define __SD_Card_H__ #define High 1 #define Low 0 实 用 文 档2 //------------------------------------------------------------------------- // SD Card Set I/O Direction #define SD_CMD_IN DDRX.1 = Low #define SD_CMD_OUT DDRX.1 = High #define SD_DAT_IN DDRX.2 = Low #define SD_DAT_OUT DDRX.2 = High #define SD_CLK_OUT DDRX.3 = High #define SD_DAT3_OUT DDRX.0 = High // SD Card Output High/Low #define SD_CMD_LOW PORTX.1 = Low #define SD_CMD_HIGH PORTX.1 = High #define SD_DAT_LOW PORTX.2 = Low #define SD_DAT_HIGH PORTX.2 = High #define SD_CLK_LOW PORTX.3 = Low #define SD_CLK_HIGH PORTX.3 = High #define SD_DAT3_HIGH PORTX.0 = High // SD Card Input Read #define SD_TEST_CMD PINX.1 #define SD_TEST_DAT PINX.2 //------------------------------------------------------------------------- #define BYTE unsigned char #define UINT16 unsigned int #define UINT32 unsigned long //------------------------------------------------------------------------- void Ncr(void); void Ncc(void); 实 用 文 档3 BYTE response_R(BYTE); BYTE send_cmd(BYTE *); BYTE SD_read_lba(BYTE *,UINT32,UINT32); BYTE SD_card_init(void); //------------------------------------------------------------------------- BYTE read_status; BYTE response_buffer[20]; BYTE RCA[2]; BYTE cmd_buffer[5]; const BYTE cmd0[5] = {0x40,0x00,0x00,0x00,0x00}; const BYTE cmd55[5] = {0x77,0x00,0x00,0x00,0x00}; const BYTE cmd2[5] = {0x42,0x00,0x00,0x00,0x00}; const BYTE cmd3[5] = {0x43,0x00,0x00,0x00,0x00}; const BYTE cmd7[5] = {0x47,0x00,0x00,0x00,0x00}; const BYTE cmd9[5] = {0x49,0x00,0x00,0x00,0x00}; const BYTE cmd16[5] = {0x50,0x00,0x00,0x02,0x00}; const BYTE cmd17[5] = {0x51,0x00,0x00,0x00,0x00}; const BYTE acmd6[5] = {0x46,0x00,0x00,0x00,0x02}; const BYTE acmd41[5] = {0x69,0x0f,0xf0,0x00,0x00}; const BYTE acmd51[5] = {0x73,0x00,0x00,0x00,0x00}; //------------------------------------------------------------------------- void Ncr(void) { SD_CMD_IN; SD_CLK_LOW; SD_CLK_HIGH; SD_CLK_LOW;