updating things

stable
penguin 3 years ago
parent 8b6ad41411
commit 6a874d4c2d

@ -1,96 +1,121 @@
s s
s s
n
p resp
p/x resp
s s
s s
s
s
ss
s
q q
q q
tar ext /dev/ttyACM0
q q
mon s
q q
tar ext /dev/ttyS0
detach 1
detach
q q
tar ext /dev/ttyS0
tar ext /dev/ttyS1
tar ext /dev/ttyS2
mon s
q q
tar ext /dev/ttyS3
q q
mon s tar ext /dev/ttyS3
mon s tar ext /dev/ttyS2
mon s tar ext /dev/ttyS1
mon s tar ext /dev/ttyS0
mon s
mon s
q q
tar ext /dev/ttyACM0 tar ext /dev/ttyS0
mon s
q q
mon s tar ext /dev/ttyS0
q q
tar ext /dev/ttyACM0 q
mon s q
q
tar ext /dev/blackmagic_0
mon s mon s
q
tar ext /dev/blackmagic_0
mon s mon s
attach 1
detach
q q
n n
n n
n n
s
n
c
r
n
c
r
n n
n n
n n
s s
s n
s break
break sd_mmc.c:1616
c c
q
n
n
n
s s
c
r
n
n
n
s s
n
n
n
s s
s s
finish
finish
s s
s s
break sd_mmc.c:50
r
c
s s
s s
s s
s s
s s
n
n
s s
s s
s s
s s
s s
s s
s q
s
s
s
s
s
finish
n n
n n
n n
c
s s
break sd_mmc.c:50
c
break sd_mmc.c:56
c
r
c
s s
n
n
n
n
n
n
n
n
n
s s
n n
n q
n break sd_mmc.c:50
n c
s s
s s
n n
n r
n
n
c c
s s
s s
@ -115,32 +140,31 @@ s
s s
s s
s s
finish
n
n
s s
s s
s s
finish
finish
s
s
s s
s s
n n
n n
n n
n
n
f
finish finish
n s
n s
n q
n break sd_mmc.c:50
n r
n
n
c c
s s
s
n n
n r
c
s
s s
s s
s s
@ -152,9 +176,6 @@ s
s s
s s
s s
n
n
n
s s
s s
s s
@ -162,10 +183,7 @@ s
s s
s s
finish finish
n finish
n
n
c
s s
s s
s s
@ -173,84 +191,66 @@ s
s s
s s
s s
finish
finish
s s
p res7[1]
s s
break sd_mmc.c:220
r
c
c
q
break sd_mmc.c:210
r
c
s s
s s
s s
s s
s s
n
n
n
n
s s
s s
s s
s s
n finish
n finish
n
n
s s
s s
n
p resp
p/x resp
s s
s s
s
finish
s
s
p ret
p ret
s
s
s
s
p ret
s
sq
q q
q q
tar ext /dev/ttyACM0 break sd_mmc.c:38
q c
mon s
q
tar ext /dev/ttyS0
detach 1
detach
q
tar ext /dev/ttyS0
tar ext /dev/ttyS1
tar ext /dev/ttyS2
mon s
q
tar ext /dev/ttyS3
q
tar ext /dev/ttyS3
tar ext /dev/ttyS2
tar ext /dev/ttyS1
tar ext /dev/ttyS0
q
tar ext /dev/ttyS0
q
tar ext /dev/ttyS0
q
q
q
q
tar ext /dev/blackmagic_0
mon s
q
tar ext /dev/blackmagic_0
mon s
attach 1
detach
q
n
n n
n n
s
n n
q
break sd_mmc.c:30
c c
r
n
c
r
n n
n n
n n
s s
s
n n
break n
n
q
break sd_mmc.c:306
c c
q q

File diff suppressed because it is too large Load Diff

@ -18,10 +18,12 @@ static void sd_mmc_send_clock(void);
static void sd_mmc_print_err(sd_mmc_err_t err); static void sd_mmc_print_err(sd_mmc_err_t err);
static void sd_mmc_print_res1(uint8_t res); static void sd_mmc_print_res1(uint8_t res);
static void sd_mmc_print_res7(const uint8_t* const res); static void sd_mmc_print_res7(const uint8_t* const res);
static void sd_mmc_print_res3(const uint8_t* const res);
sd_mmc_err_t sd_mmc_init(void) sd_mmc_err_t sd_mmc_init(void)
{ {
sd_mmc_err_t ret = SD_MMC_SUCCESS; sd_mmc_err_t ret = SD_MMC_SUCCESS;
uint8_t ocr[5];
do do
{ {
@ -33,19 +35,25 @@ sd_mmc_err_t sd_mmc_init(void)
} }
// Power up sd card sequence // Power up sd card sequence
if((ret != sd_mmc_power_up_sequence()) != SD_MMC_SUCCESS) if((ret = sd_mmc_power_up_sequence()) != SD_MMC_SUCCESS)
{ {
break; break;
} }
// go idle // go idle
if((ret != sd_mmc_idle_sequence()) != SD_MMC_SUCCESS) if((ret = sd_mmc_idle_sequence()) != SD_MMC_SUCCESS)
{ {
break; break;
} }
// interface sequence // interface sequence
if((ret != sd_mmc_if_sequence()) != SD_MMC_SUCCESS) if((ret = sd_mmc_if_sequence()) != SD_MMC_SUCCESS)
{
break;
}
// read operation conditions register
if((ret = sd_mmc_read_ocr(ocr)) != SD_MMC_SUCCESS)
{ {
break; break;
} }
@ -126,12 +134,12 @@ sd_mmc_err_t sd_mmc_read_res7(uint8_t* res7)
break; break;
} }
if(res7[0] > 1) /* if(res7[0] > 1) */
{ /* { */
// handle this error better later /* // handle this error better later */
ret = SD_MMC_ERR_COMM; /* ret = SD_MMC_ERR_COMM; */
break; /* break; */
} /* } */
}while(0); }while(0);
return ret; return ret;
} }
@ -141,18 +149,19 @@ sd_mmc_err_t sd_mmc_read_res3(uint8_t* res3)
sd_mmc_err_t ret = SD_MMC_SUCCESS; sd_mmc_err_t ret = SD_MMC_SUCCESS;
do do
{ {
SD_MMC_INTF_READ(res3, 1);
if(5 != SD_MMC_INTF_READ(res3, 5)) if(5 != SD_MMC_INTF_READ(res3, 5))
{ {
ret = SD_MMC_ERR_COMM; ret = SD_MMC_ERR_COMM;
break; break;
} }
if(res3[0] > 1) /* if(res3[0] > 1) */
{ /* { */
// handle this error better later /* // handle this error better later */
ret = SD_MMC_ERR_COMM; /* ret = SD_MMC_ERR_COMM; */
break; /* break; */
} /* } */
}while(0); }while(0);
return ret; return ret;
@ -175,12 +184,12 @@ sd_mmc_err_t sd_mmc_idle_sequence()
do do
{ {
sd_mmc_select(0, 0, 0, true); sd_mmc_select(0, 0, 0, true);
if((ret != sd_mmc_send_command(CMD0, CMD0_ARG, CMD0_CRC)) != SD_MMC_SUCCESS) if((ret = sd_mmc_send_command(CMD0, CMD0_ARG, CMD0_CRC)) != SD_MMC_SUCCESS)
{ {
break; break;
} }
if((ret != sd_mmc_read_res1(&res1)) != SD_MMC_SUCCESS) if((ret = sd_mmc_read_res1(&res1)) != SD_MMC_SUCCESS)
{ {
break; break;
} }
@ -272,6 +281,7 @@ void sd_mmc_print_err(sd_mmc_err_t err)
void sd_mmc_print_res1(uint8_t res) void sd_mmc_print_res1(uint8_t res)
{ {
printf("RES1: 0x%02x\n", res);
if(res & 0b10000000) if(res & 0b10000000)
{ printf("\tError: MSB = 1\r\n"); return; } { printf("\tError: MSB = 1\r\n"); return; }
if(res == 0) if(res == 0)
@ -295,7 +305,7 @@ void sd_mmc_print_res1(uint8_t res)
void sd_mmc_print_res7(const uint8_t* const res) void sd_mmc_print_res7(const uint8_t* const res)
{ {
sd_mmc_print_res1(res[0]); sd_mmc_print_res1(res[0]);
if(res[0] > 1) return; /* if(res[0] > 1) return; */
printf("\tCommand Version: 0x%02x\n", CMD_VER(res[1])); printf("\tCommand Version: 0x%02x\n", CMD_VER(res[1]));
@ -307,6 +317,35 @@ void sd_mmc_print_res7(const uint8_t* const res)
printf("\tEcho: 0x%02x\n", res[4]); printf("\tEcho: 0x%02x\n", res[4]);
} }
void sd_mmc_print_res3(const uint8_t* const res)
{
sd_mmc_print_res1(res[0]);
/* if(res[0] > 1) return; */
printf("\tCard Power Up Status: 0x%02x\n", res[1]);
if(POWER_UP_STATUS(res[1]))
{
printf("READY\n");
printf("\tCCS Status: %d\n", CCS_VAL(res[1]) ? 1 : 0);
}
else
{
printf("BUSY\n");
}
printf("\tVDD Window: ");
if(VDD_2728(res[3])) printf("2.7-2.8, ");
if(VDD_2829(res[2])) printf("2.8-2.9, ");
if(VDD_2930(res[2])) printf("2.9-3.0, ");
if(VDD_3031(res[2])) printf("3.0-3.1, ");
if(VDD_3132(res[2])) printf("3.1-3.2, ");
if(VDD_3233(res[2])) printf("3.2-3.3, ");
if(VDD_3334(res[2])) printf("3.3-3.4, ");
if(VDD_3435(res[2])) printf("3.4-3.5, ");
if(VDD_3536(res[2])) printf("3.5-3.6");
printf("\n");
}
bool sd_mmc_check_cd(void) bool sd_mmc_check_cd(void)
{ {
@ -347,8 +386,6 @@ void sd_mmc_send_clock()
sd_mmc_err_t sd_mmc_read_ocr(uint8_t* res) sd_mmc_err_t sd_mmc_read_ocr(uint8_t* res)
{ {
sd_mmc_err_t ret = SD_MMC_SUCCESS; sd_mmc_err_t ret = SD_MMC_SUCCESS;
uint8_t res3[5];
sd_mmc_select(0, 0, 0, false); sd_mmc_select(0, 0, 0, false);
do do
{ {
@ -357,10 +394,11 @@ sd_mmc_err_t sd_mmc_read_ocr(uint8_t* res)
break; break;
} }
if((ret = sd_mmc_read_res3(res3)) != SD_MMC_SUCCESS) if((ret = sd_mmc_read_res3(res)) != SD_MMC_SUCCESS)
{ {
break; break;
} }
sd_mmc_print_res3(res);
}while(0); }while(0);
sd_mmc_deselect(0); sd_mmc_deselect(0);
return ret; return ret;

@ -78,5 +78,16 @@ sd_mmc_err_t sd_mmc_send_command(uint8_t cmd, uint32_t arg, uint8_t crc);
#define VOLTAGE_ACC_RES1 0b00000100 #define VOLTAGE_ACC_RES1 0b00000100
#define VOLTAGE_ACC_RES2 0b00001000 #define VOLTAGE_ACC_RES2 0b00001000
#define POWER_UP_STATUS(X) X & 0x40
#define CCS_VAL(X) X & 0x40
#define VDD_2728(X) X & 0b10000000
#define VDD_2829(X) X & 0b00000001
#define VDD_2930(X) X & 0b00000010
#define VDD_3031(X) X & 0b00000100
#define VDD_3132(X) X & 0b00001000
#define VDD_3233(X) X & 0b00010000
#define VDD_3334(X) X & 0b00100000
#define VDD_3435(X) X & 0b01000000
#define VDD_3536(X) X & 0b10000000
#endif #endif

Loading…
Cancel
Save