History: media_drv_mmcsd_stm32

This page describes all changes made to the media_drv_mmcsd_stm32 package, the MMCSD Media Driver for STM32, since its release.


2.21 (2021-02-08, 17:36):

  • psp_idle() now also called from command and DMA read/write busy loops, in order to allow users to take necessary actions, like triggering watchdog, etc.

2.20 (2020-07-20, 17:30):

  • Data buffer address is checked if it points to Core Coupled Memory (CCM) area before starting a DMA transfer. (DMA can not access CCM.)

2.19 (2020-05-19, 14:30):

  • psp_idle() called in busy state to indicate idle time.

2.18 (2019-02-08, 15:09):

  • Fixed Incompatibility issue with media_drv_base. This could cause file system initialization error when used with SafeFAT (IOCTL lock/unlock).

2.17 (2019-01-23, 16:31):

  • Added support for high speed (>25MHz, <=48MHz) operation.

2.16r2 (2018-08-29, 18:12):

  • Document HTML link added to the documentation folder.
  • History and document files renamed to the package name.

2.16 (2017-10-09, 11:36):

  • Compiler warnings were eliminated.

2.15 (2017-06-30, 15:05)

  • A delay in the execution of the driver while performing MMC/SD read operation could lead to read error. This was typically the case of a higher priority task preempting the task the read (typically a file system read) was initiated from.

2.14 r2  (2017-06-21, 15:48):

  • PSP template for STM32F4 updated for usage with HAL in STM32CubeMX.


  • wait_busy() avoids polling the status back-to-back as some cards will not tolerate this and will never finish a write request.
  • Multi-sector write and read will send CMD12 (STOP) even if data time-out has occurred to put back the card to a known state.


  • Wait in mmcsd_set_speed() fixed: it could cause timeout error on the first read or write command.


  • EMMC support added.


  • Hardware flow control removed from the driver as STM32F20x and STM32F21x Errata sheet (DM00027123, 2.10.1) declares that hardware flow control is not reliable and therefore, it should not be used.


  • Sector write could fail if the driver was reinitialized immediately after the write (release/init driver). This could occur because the busy state was waited at the beginning of read/write and re-initialization sends the card to idle state. This could also be an issue for the file system using the driver if it assumed the sector being written when it returned.


  • Write from unaligned address worked incorrectly.


  • Uses common mmcsd_init v1.0.


  • Removed warnings.


  • The driver can recover from unexpected states (extra error check added to wait_busy()).


  • Added support for standard and high-capacity eMMC cards.

2.4 r2:

  • Added support for stm32f4xx devices.


  • Added delay between SDIO_CLKCR writes. This issue could lead to lockups in under certain conditions as the SDIO clock could remain disabled.


  • HCC_ASSERTs removed.


  • Calculation of number_of_sectors corrected for non-SDHC cards.


  • Compilation error fixed for the case when no ISR is used.


  • Configuration separated and HW specific moved to mmcsd_hw.


  • cd, wp, power separated to mmcsd_hw.


  • MMCSD error codes introduced.


  • Initial release.