158
158
159
159
static uint8_t pyb_sdmmc_flags ;
160
160
161
+ #define TIMEOUT_MS 30000
162
+
161
163
// TODO: I think that as an optimization, we can allocate these dynamically
162
164
// if an sd card is detected. This will save approx 260 bytes of RAM
163
165
// when no sdcard was being used.
@@ -441,7 +443,7 @@ static void sdcard_reset_periph(void) {
441
443
SDIO -> ICR = SDMMC_STATIC_FLAGS ;
442
444
}
443
445
444
- static HAL_StatusTypeDef sdcard_wait_finished (uint32_t timeout ) {
446
+ static HAL_StatusTypeDef sdcard_wait_finished (void ) {
445
447
// Wait for HAL driver to be ready (eg for DMA to finish)
446
448
uint32_t start = HAL_GetTick ();
447
449
for (;;) {
@@ -463,7 +465,7 @@ static HAL_StatusTypeDef sdcard_wait_finished(uint32_t timeout) {
463
465
}
464
466
__WFI ();
465
467
enable_irq (irq_state );
466
- if (HAL_GetTick () - start >= timeout ) {
468
+ if (HAL_GetTick () - start >= TIMEOUT_MS ) {
467
469
return HAL_TIMEOUT ;
468
470
}
469
471
}
@@ -490,7 +492,7 @@ static HAL_StatusTypeDef sdcard_wait_finished(uint32_t timeout) {
490
492
if (!(state == HAL_SD_CARD_SENDING || state == HAL_SD_CARD_RECEIVING || state == HAL_SD_CARD_PROGRAMMING )) {
491
493
return HAL_ERROR ;
492
494
}
493
- if (HAL_GetTick () - start >= timeout ) {
495
+ if (HAL_GetTick () - start >= TIMEOUT_MS ) {
494
496
return HAL_TIMEOUT ;
495
497
}
496
498
__WFI ();
@@ -569,7 +571,7 @@ mp_uint_t sdcard_read_blocks(uint8_t *dest, uint32_t block_num, uint32_t num_blo
569
571
err = HAL_SD_ReadBlocks_DMA (& sdmmc_handle .sd , dest , block_num , num_blocks );
570
572
}
571
573
if (err == HAL_OK ) {
572
- err = sdcard_wait_finished (60000 );
574
+ err = sdcard_wait_finished ();
573
575
}
574
576
575
577
#if SDIO_USE_GPDMA
@@ -588,14 +590,14 @@ mp_uint_t sdcard_read_blocks(uint8_t *dest, uint32_t block_num, uint32_t num_blo
588
590
} else {
589
591
#if MICROPY_HW_ENABLE_MMCARD
590
592
if (pyb_sdmmc_flags & PYB_SDMMC_FLAG_MMC ) {
591
- err = HAL_MMC_ReadBlocks (& sdmmc_handle .mmc , dest , block_num , num_blocks , 60000 );
593
+ err = HAL_MMC_ReadBlocks (& sdmmc_handle .mmc , dest , block_num , num_blocks , TIMEOUT_MS );
592
594
} else
593
595
#endif
594
596
{
595
- err = HAL_SD_ReadBlocks (& sdmmc_handle .sd , dest , block_num , num_blocks , 60000 );
597
+ err = HAL_SD_ReadBlocks (& sdmmc_handle .sd , dest , block_num , num_blocks , TIMEOUT_MS );
596
598
}
597
599
if (err == HAL_OK ) {
598
- err = sdcard_wait_finished (60000 );
600
+ err = sdcard_wait_finished ();
599
601
}
600
602
}
601
603
@@ -662,7 +664,7 @@ mp_uint_t sdcard_write_blocks(const uint8_t *src, uint32_t block_num, uint32_t n
662
664
err = HAL_SD_WriteBlocks_DMA (& sdmmc_handle .sd , (uint8_t * )src , block_num , num_blocks );
663
665
}
664
666
if (err == HAL_OK ) {
665
- err = sdcard_wait_finished (60000 );
667
+ err = sdcard_wait_finished ();
666
668
}
667
669
668
670
#if SDIO_USE_GPDMA
@@ -681,14 +683,14 @@ mp_uint_t sdcard_write_blocks(const uint8_t *src, uint32_t block_num, uint32_t n
681
683
} else {
682
684
#if MICROPY_HW_ENABLE_MMCARD
683
685
if (pyb_sdmmc_flags & PYB_SDMMC_FLAG_MMC ) {
684
- err = HAL_MMC_WriteBlocks (& sdmmc_handle .mmc , (uint8_t * )src , block_num , num_blocks , 60000 );
686
+ err = HAL_MMC_WriteBlocks (& sdmmc_handle .mmc , (uint8_t * )src , block_num , num_blocks , TIMEOUT_MS );
685
687
} else
686
688
#endif
687
689
{
688
- err = HAL_SD_WriteBlocks (& sdmmc_handle .sd , (uint8_t * )src , block_num , num_blocks , 60000 );
690
+ err = HAL_SD_WriteBlocks (& sdmmc_handle .sd , (uint8_t * )src , block_num , num_blocks , TIMEOUT_MS );
689
691
}
690
692
if (err == HAL_OK ) {
691
- err = sdcard_wait_finished (60000 );
693
+ err = sdcard_wait_finished ();
692
694
}
693
695
}
694
696
0 commit comments