#include "type.h"
Go to the source code of this file.
Data Structures | |
struct | SDCardData |
Defines | |
#define | SD_DATAline 4 |
#define | SD_CMDline 2 |
#define | SD_All 1 |
#define | CMD0 0 |
#define | CMD1 1 |
#define | CMD2 2 |
#define | CMD3 3 |
#define | CMD4 4 |
#define | CMD5 5 |
#define | CMD6 6 |
#define | CMD7 7 |
#define | CMD8 8 |
#define | CMD9 9 |
#define | CMD10 10 |
#define | CMD12 12 |
#define | CMD13 13 |
#define | CMD15 15 |
#define | CMD16 16 |
#define | CMD17 17 |
#define | CMD18 18 |
#define | CMD23 23 |
#define | CMD24 24 |
#define | CMD25 25 |
#define | CMD27 27 |
#define | CMD28 28 |
#define | CMD29 29 |
#define | CMD30 30 |
#define | CMD32 32 |
#define | CMD33 33 |
#define | CMD38 38 |
#define | CMD42 42 |
#define | CMD50 50 |
#define | CMD52 52 |
#define | CMD53 53 |
#define | CMD55 55 |
#define | CMD56 56 |
#define | CMD57 57 |
#define | ACMD6 6 |
#define | ACMD13 13 |
#define | ACMD22 22 |
#define | ACMD23 23 |
#define | ACMD41 41 |
#define | ACMD42 42 |
#define | ACMD51 51 |
#define | NORM_CMD 0x00 |
#define | wResp_CMD 0x02 |
#define | R2_Resp_CMD 0x01 |
#define | R1bR5b_Resp_CMD 0x03 |
#define | abort_cmd 0xC0 |
#define | resume_cmd 0x80 |
#define | suspend_cmd 0x40 |
#define | normal_cmd 0x00 |
#define | data_present 0x20 |
#define | cmd_index_chk 0x10 |
#define | cmd_crc_chk 0x08 |
#define | cmd_check cmd_index_chk|cmd_crc_chk |
#define | no_resp 0x00 |
#define | r1_resp 0x02 |
#define | r1b_resp 0x03 |
#define | r2_resp 0x01 |
#define | r3_resp 0x02 |
#define | r6_resp 0x02 |
#define | r7_resp 0x02 |
#define | TMR_DMA_EN 1<<0 |
#define | TMR_BLKCNT_EN 1<<1 |
#define | TMR_AUTOCMD12_EN 1<<2 |
#define | TMR_RD_EN 1<<4 |
#define | TMR_MULTI_EN 1<<5 |
Enumerations | |
enum | SRESULT { SD_OK = 0, SD_NOT_READY, SD_NOT_PRESENT, SD_CLK_E, SD_WRITE_E, SD_READ_E, SD_READ_DMA_E, SD_UNKNOWN_E, SD_WRONG_CARD } |
Functions | |
void | SD_clear_int_1130 (UINT8 d) |
void | SD_clear_int_1132 (UINT8 d) |
void | SD_clear_int (void) |
void | SD_clear_int_ff (void) |
UINT8 | SD_wait_cmd_complete (void) |
UINT8 | SD_wait_cmd_complete_val (UINT8 val) |
UINT8 | SD_wait_cmd_resp_check (void) |
UINT8 | Init_SD (SDCardData *sdcd) |
UINT8 | SD_init (SDCardData *sdcd) |
UINT8 | Select_card (SDCardData *sdcd) |
UINT8 | Deselect_card (void) |
UINT32 | SD_Get_CSD (SDCardData *sdcd) |
UINT8 | SD_reset_quick (UINT8 reset_type) |
UINT8 | SD_reset (UINT8 reset_type) |
void | SD_Power_On (void) |
void | SD_Power_Off (void) |
void | SD_Clck_Off (void) |
UINT8 | SD_Clck_Ctrl (char value) |
UINT8 | Card_Detect (void) |
UINT8 | set_SD_parameters (UINT16 rca) |
UINT32 | get_cardstatus (UINT16 rca) |
UINT8 | SD_Send_CMD (UINT8 cmd, UINT32 cmd_argu, UINT8 cmd_resp_type) |
void | SD_Send_appCMD (UINT16 rca, UINT8 cmd, UINT32 cmd_argu, UINT8 cmd_resp_type) |
void | SD_send_csd (UINT16 rca) |
UINT8 | SD_xfer512bytes (UINT32 address) |
UINT8 | SD_read512bytes (UINT32 SD_data_address) |
UINT8 | SD_csd (UINT16 rca) |
UINT8 | SD_write (SDCardData *sdcd, UINT32 LBA_address, const UINT8 *buf, UINT8 count) |
UINT8 | SD_read (SDCardData *sdcd, UINT32 LBA_address, UINT8 *buf, UINT8 count, UINT8 bToSSDMem) |
UINT8 | SD_read_multiple (SDCardData *sdcd, UINT32 LBA_address, UINT8 *buf, UINT8 rcount, UINT16 count) |
UINT8 | SD_write_multiple (SDCardData *sdcd, UINT32 LBA_address, const UINT8 *buf, UINT8 count) |
UINT8 | Show_SD_Content (void) |
#define abort_cmd 0xC0 |
#define ACMD13 13 |
#define ACMD22 22 |
#define ACMD23 23 |
#define ACMD41 41 |
Referenced by SD_init().
#define ACMD42 42 |
#define ACMD51 51 |
#define ACMD6 6 |
Referenced by set_SD_parameters().
#define CMD0 0 |
Referenced by SD_base_init().
#define CMD1 1 |
#define CMD10 10 |
#define CMD12 12 |
Referenced by SD_read_multiple().
#define CMD13 13 |
Referenced by get_cardstatus(), and SD_Get_CSD().
#define CMD15 15 |
#define CMD16 16 |
Referenced by set_SD_parameters().
#define CMD17 17 |
Referenced by SD_read().
#define CMD18 18 |
Referenced by SD_read_multiple().
#define CMD2 2 |
Referenced by SD_init().
#define CMD23 23 |
#define CMD24 24 |
Referenced by SD_write().
#define CMD25 25 |
#define CMD27 27 |
#define CMD28 28 |
#define CMD29 29 |
#define CMD3 3 |
Referenced by SD_init().
#define CMD30 30 |
#define CMD32 32 |
#define CMD33 33 |
#define CMD38 38 |
#define CMD4 4 |
#define CMD42 42 |
#define CMD5 5 |
#define CMD50 50 |
#define CMD52 52 |
#define CMD53 53 |
#define CMD55 55 |
Referenced by SD_Send_appCMD(), and SD_send_csd().
#define CMD56 56 |
#define CMD57 57 |
#define CMD6 6 |
#define CMD7 7 |
Referenced by Deselect_card(), and Select_card().
#define CMD8 8 |
Referenced by SD_init().
#define CMD9 9 |
Referenced by SD_Get_CSD().
#define cmd_check cmd_index_chk|cmd_crc_chk |
Referenced by Deselect_card(), get_cardstatus(), SD_Get_CSD(), SD_init(), SD_read(), SD_read_multiple(), SD_write(), Select_card(), and set_SD_parameters().
#define cmd_crc_chk 0x08 |
Referenced by SD_Get_CSD(), and SD_init().
#define cmd_index_chk 0x10 |
#define data_present 0x20 |
Referenced by SD_read(), SD_read_multiple(), and SD_write().
#define no_resp 0x00 |
#define NORM_CMD 0x00 |
Referenced by SD_base_init().
#define normal_cmd 0x00 |
#define r1_resp 0x02 |
Referenced by get_cardstatus(), SD_Get_CSD(), SD_read(), SD_read_multiple(), SD_write(), and set_SD_parameters().
#define r1b_resp 0x03 |
Referenced by SD_read_multiple(), and Select_card().
#define R1bR5b_Resp_CMD 0x03 |
#define r2_resp 0x01 |
Referenced by SD_Get_CSD(), and SD_init().
#define R2_Resp_CMD 0x01 |
Referenced by SD_send_csd().
#define r3_resp 0x02 |
#define r6_resp 0x02 |
Referenced by SD_init().
#define r7_resp 0x02 |
Referenced by SD_init().
#define resume_cmd 0x80 |
#define SD_All 1 |
Referenced by SD_base_init().
#define SD_CMDline 2 |
Referenced by get_cardstatus().
#define SD_DATAline 4 |
Referenced by SD_reset_inhibit_DAT().
#define suspend_cmd 0x40 |
#define TMR_AUTOCMD12_EN 1<<2 |
Referenced by SD_read_multiple().
#define TMR_BLKCNT_EN 1<<1 |
#define TMR_DMA_EN 1<<0 |
Referenced by SD_read(), and SD_read_multiple().
#define TMR_MULTI_EN 1<<5 |
Referenced by SD_read_multiple().
#define TMR_RD_EN 1<<4 |
Referenced by SD_read(), and SD_read_multiple().
#define wResp_CMD 0x02 |
Referenced by SD_init(), and SD_Send_appCMD().
enum SRESULT |
UINT8 Card_Detect | ( | void | ) |
References SD_NOT_PRESENT, SD_NOT_READY, SD_OK, SSD_REGRB, and TRACE.
Referenced by Init_SD().
UINT8 Deselect_card | ( | void | ) |
References CMD7, cmd_check, SD_clear_int(), SD_clear_int_ff(), SD_Send_CMD(), and SD_wait_cmd_complete().
myprintf("\r\nSD RCA = 0x%x", SD_RCA);
myprintf("\r\nStatus = 0x%x\r\n", status); // shall be 0x900
References CMD13, cmd_check, r1_resp, SD_clear_int_1130(), SD_CMDline, SD_get_response(), SD_NOT_READY, SD_reset_quick(), SD_Send_CMD(), SD_wait_cmd_complete(), SD_wait_cmd_resp_check(), SSD_REGRB, SSD_REGRW, SSD_REGWB, and SSD_REGWW.
Referenced by SD_write().
UINT8 Init_SD | ( | SDCardData * | sdcd | ) |
References Card_Detect(), SDCardData::rca, SD_init(), Select_card(), set_SD_parameters(), and TRACE.
Referenced by disk_initialize(), and Write_JPEG_data_to_SD().
UINT8 SD_Clck_Ctrl | ( | char | value | ) |
References SD_CLK_E, SD_OK, SSD_REGRB, and SSD_REGWB.
Referenced by SD_reset().
void SD_clear_int | ( | void | ) |
References SD_clear_int_1130(), and SD_clear_int_1132().
Referenced by Deselect_card(), SD_Get_CSD(), SD_reset(), and Select_card().
void SD_clear_int_1130 | ( | UINT8 | d | ) |
References SSD_REGWB.
Referenced by get_cardstatus(), SD_clear_int(), SD_clear_int_ff(), SD_read(), SD_read_multiple(), SD_Send_CMD(), and SD_write().
void SD_clear_int_1132 | ( | UINT8 | d | ) |
References SSD_REGWB.
Referenced by SD_clear_int(), SD_clear_int_ff(), and SD_Send_CMD().
void SD_clear_int_ff | ( | void | ) |
References SD_clear_int_1130(), and SD_clear_int_1132().
Referenced by Deselect_card(), and Select_card().
UINT32 SD_Get_CSD | ( | SDCardData * | sdcd | ) |
References CMD13, CMD9, cmd_check, cmd_crc_chk, delay_ns(), DELAYFACTOR, SDCardData::erase_size, SDCardData::isSDHC, r1_resp, r2_resp, SDCardData::rca, SD_clear_int(), SD_Send_CMD(), SD_wait_cmd_complete(), SD_wait_cmd_resp_check(), SDCardData::sector_count, SDCardData::size, SSD_REGRB, SSD_REGWB, TRACE, TRACE1, and TRACE2.
Referenced by SD_init().
UINT8 SD_init | ( | SDCardData * | sdcd | ) |
References ACMD41, CMD2, CMD3, CMD8, cmd_check, cmd_crc_chk, delay_ns(), DELAYFACTOR, SDCardData::isSDHC, r2_resp, r6_resp, r7_resp, SDCardData::rca, SD_base_init(), SD_Get_CSD(), SD_get_response(), SD_OK, SD_Send_appCMD(), SD_Send_CMD(), SD_wait_cmd_complete(), SD_wait_cmd_resp_check(), TRACE, TRACE1, and wResp_CMD.
Referenced by Init_SD().
void SD_Power_Off | ( | void | ) |
References delay_ns(), DELAYFACTOR, and SSD_REGWB.
Referenced by SD_reset().
void SD_Power_On | ( | void | ) |
References SSD_REGRB, and SSD_REGWB.
Referenced by SD_reset().
TRACE1("Reg 1124-27 @read routine = 0x%x\r\n",SSD_REGRL(0x1124));
References CMD17, cmd_check, data_present, delay_ns(), SDCardData::isSDHC, long_delay(), r1_resp, SD_clear_int_1130(), SD_NOT_READY, SD_OK, SD_reset_inhibit_DAT(), SD_Send_CMD(), SD_set_block_size(), SD_set_transfer_mode(), SD_UNKNOWN_E, SD_wait_cmd_complete(), SD_wait_cmd_complete_val(), SD_wait_cmd_resp_check(), SSD_REGRB, SSD_REGWB, SSD_REGWL, SSD_REGWW, TMR_DMA_EN, TMR_RD_EN, TRACE, TRACE1, and TRACE2.
Referenced by disk_read().
UINT8 SD_read_multiple | ( | SDCardData * | sdcd, | |
UINT32 | LBA_address, | |||
UINT8 * | buf, | |||
UINT8 | rcount, | |||
UINT16 | count | |||
) |
References CMD12, CMD18, cmd_check, data_present, SDCardData::isSDHC, r1_resp, r1b_resp, SD_clear_int_1130(), SD_NOT_READY, SD_OK, SD_READ_DMA_E, SD_reset_inhibit_DAT(), SD_Send_CMD(), SD_set_block_size(), SD_set_transfer_mode(), SD_UNKNOWN_E, SD_wait_cmd_complete(), SSD_REGRB, SSD_REGRL, SSD_REGRW, SSD_REGWB, SSD_REGWL, SSD_REGWW, TMR_AUTOCMD12_EN, TMR_DMA_EN, TMR_MULTI_EN, TMR_RD_EN, TRACE, TRACE1, and TRACE3.
Referenced by disk_read().
References SD_Clck_Ctrl(), SD_clear_int(), SD_NOT_READY, SD_OK, SD_Power_Off(), SD_Power_On(), SD_reset_quick(), SD_UNKNOWN_E, SSD_REGRB, and SSD_REGWB.
Referenced by SD_base_init().
References SD_NOT_READY, SD_OK, SSD_REGRB, SSD_REGWB, and TRACE1.
Referenced by get_cardstatus(), SD_reset(), and SD_reset_inhibit_DAT().
References CMD55, delay_ns(), DELAYFACTOR, SD_Send_CMD(), SD_wait_cmd_resp_check(), TRACE, TRACE3, and wResp_CMD.
Referenced by SD_init(), and set_SD_parameters().
References SD_clear_int_1130(), SD_clear_int_1132(), SSD_REGRB, SSD_REGWB, TRACE, and TRACE3.
Referenced by Deselect_card(), get_cardstatus(), SD_base_init(), SD_Get_CSD(), SD_init(), SD_read(), SD_read_multiple(), SD_Send_appCMD(), SD_send_csd(), SD_write(), Select_card(), and set_SD_parameters().
void SD_send_csd | ( | UINT16 | rca | ) |
UINT8 SD_wait_cmd_complete | ( | void | ) |
References SD_wait_cmd_complete_val().
Referenced by Deselect_card(), get_cardstatus(), SD_base_init(), SD_Get_CSD(), SD_init(), SD_read(), SD_read_multiple(), SD_write(), Select_card(), and set_SD_parameters().
References SD_NOT_READY, SD_OK, SSD_REGRB, and TRACE.
Referenced by SD_read(), SD_wait_cmd_complete(), and SD_write().
UINT8 SD_wait_cmd_resp_check | ( | void | ) |
References SD_NOT_READY, SD_OK, SSD_REGRB, and TRACE.
Referenced by get_cardstatus(), SD_Get_CSD(), SD_init(), SD_read(), SD_Send_appCMD(), and Select_card().
UINT8 SD_write | ( | SDCardData * | sdcd, | |
UINT32 | LBA_address, | |||
const UINT8 * | buf, | |||
UINT8 | count | |||
) |
References CMD24, cmd_check, data_present, delay_ns(), get_cardstatus(), SDCardData::isSDHC, long_delay(), r1_resp, SDCardData::rca, SD_clear_int_1130(), SD_NOT_READY, SD_OK, SD_reset_inhibit_DAT(), SD_Send_CMD(), SD_set_block_size(), SD_set_transfer_mode(), SD_UNKNOWN_E, SD_wait_cmd_complete(), SD_wait_cmd_complete_val(), SD_WRITE_E, SSD_REGRB, SSD_REGWB, SSD_REGWW, TRACE, TRACE1, and TRACE2.
Referenced by disk_write().
UINT8 SD_write_multiple | ( | SDCardData * | sdcd, | |
UINT32 | LBA_address, | |||
const UINT8 * | buf, | |||
UINT8 | count | |||
) |
UINT8 Select_card | ( | SDCardData * | sdcd | ) |
References CMD7, cmd_check, r1b_resp, SDCardData::rca, SD_clear_int(), SD_clear_int_ff(), SD_Send_CMD(), SD_wait_cmd_complete(), and SD_wait_cmd_resp_check().
Referenced by Init_SD().
References ACMD6, CMD16, cmd_check, r1_resp, SD_Send_appCMD(), SD_Send_CMD(), SD_wait_cmd_complete(), and SSD_REGWB.
Referenced by Init_SD().
UINT8 Show_SD_Content | ( | void | ) |