158158
159159static uint8_t pyb_sdmmc_flags ;
160160
161+ #define TIMEOUT_MS 30000
162+
161163// TODO: I think that as an optimization, we can allocate these dynamically
162164// if an sd card is detected. This will save approx 260 bytes of RAM
163165// when no sdcard was being used.
@@ -441,7 +443,7 @@ static void sdcard_reset_periph(void) {
441443 SDIO -> ICR = SDMMC_STATIC_FLAGS ;
442444}
443445
444- static HAL_StatusTypeDef sdcard_wait_finished (uint32_t timeout ) {
446+ static HAL_StatusTypeDef sdcard_wait_finished (void ) {
445447 // Wait for HAL driver to be ready (eg for DMA to finish)
446448 uint32_t start = HAL_GetTick ();
447449 for (;;) {
@@ -463,7 +465,7 @@ static HAL_StatusTypeDef sdcard_wait_finished(uint32_t timeout) {
463465 }
464466 __WFI ();
465467 enable_irq (irq_state );
466- if (HAL_GetTick () - start >= timeout ) {
468+ if (HAL_GetTick () - start >= TIMEOUT_MS ) {
467469 return HAL_TIMEOUT ;
468470 }
469471 }
@@ -490,7 +492,7 @@ static HAL_StatusTypeDef sdcard_wait_finished(uint32_t timeout) {
490492 if (!(state == HAL_SD_CARD_SENDING || state == HAL_SD_CARD_RECEIVING || state == HAL_SD_CARD_PROGRAMMING )) {
491493 return HAL_ERROR ;
492494 }
493- if (HAL_GetTick () - start >= timeout ) {
495+ if (HAL_GetTick () - start >= TIMEOUT_MS ) {
494496 return HAL_TIMEOUT ;
495497 }
496498 __WFI ();
@@ -569,7 +571,7 @@ mp_uint_t sdcard_read_blocks(uint8_t *dest, uint32_t block_num, uint32_t num_blo
569571 err = HAL_SD_ReadBlocks_DMA (& sdmmc_handle .sd , dest , block_num , num_blocks );
570572 }
571573 if (err == HAL_OK ) {
572- err = sdcard_wait_finished (60000 );
574+ err = sdcard_wait_finished ();
573575 }
574576
575577 #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
588590 } else {
589591 #if MICROPY_HW_ENABLE_MMCARD
590592 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 );
592594 } else
593595 #endif
594596 {
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 );
596598 }
597599 if (err == HAL_OK ) {
598- err = sdcard_wait_finished (60000 );
600+ err = sdcard_wait_finished ();
599601 }
600602 }
601603
@@ -662,7 +664,7 @@ mp_uint_t sdcard_write_blocks(const uint8_t *src, uint32_t block_num, uint32_t n
662664 err = HAL_SD_WriteBlocks_DMA (& sdmmc_handle .sd , (uint8_t * )src , block_num , num_blocks );
663665 }
664666 if (err == HAL_OK ) {
665- err = sdcard_wait_finished (60000 );
667+ err = sdcard_wait_finished ();
666668 }
667669
668670 #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
681683 } else {
682684 #if MICROPY_HW_ENABLE_MMCARD
683685 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 );
685687 } else
686688 #endif
687689 {
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 );
689691 }
690692 if (err == HAL_OK ) {
691- err = sdcard_wait_finished (60000 );
693+ err = sdcard_wait_finished ();
692694 }
693695 }
694696
0 commit comments