2022-01-19 08:52 PM
[HAL BUG] STM32H743 SDMMC LL library only supports 2 transfer modes
I connected SDMMC2 to Marvell 88W8801 WiFi chip (an SDIO card).
In STM32H743 reference manual, SDMMC_DCTRL_DTMODE supports 4 data transfer modes:
[00] block data transfer
[01] SDIO multibyte data transfer
[10] eMMC stream data transfer
[11] block data transfer ending with STOP_TRANSMISSION command
However, stm32h7xx_ll_sdmmc.h only gives us 2 choices:
SDMMC_TRANSFER_MODE_BLOCK [00]
SDMMC_TRANSFER_MODE_STREAM [10]
88W8801 only supports SDIO multibyte data transfer mode in 1-bit width bus.
It does not support eMMC stream data transfer mode.
If sdmmc_data.TransferMode=SDMMC_DCTRL_DTMODE_0, IS_SDMMC_TRANSFER_MODE() macro in SDMMC_ConfigData will fail.
2022-01-20 03:21 AM
Hello @Community member ,
Thanks for posting this issue.
I am checking this and I will come back to you with details about corrective actions we will take.
Thanks
Imen
2022-01-21 01:09 AM
Hi @Community member ,
I confirm that SDMMC LL driver support only 2 modes.
The driver implementation is done mainly for generic SD/MMC memories, so there is some modes that are not supported, and there is no short-term plan to support them.
Thank you once again for your contribution.
When your question is answered, please close this topic by choosing "Select as Best". This will help other users find that answer faster.
Thanks
Imen
2022-02-03 06:54 PM
Just adding the 01 mode macro and modifying IS_SDMMC_TRANSFER_MODE() marco in the sdmmc header file is enough. We want to use SDMMC_ConfigData
2022-02-03 07:03 PM
We advice that in the next hal library version, the SDMMC_TRANSFER_MODE_MULTIBYTE macro (0x01) be added to stm32h7xx_ll_sdmmc.h, and IS_SDMMC_TRANSFER_MODE(SDMMC_TRANSFER_MODE_MULTIBYTE) return true, so that SDMMC_ConfigData do not fail assertion.