cancel
Showing results for 
Search instead for 
Did you mean: 

[HAL BUG Report] STM32H743 SDMMC LL library only supports 2 transfer modes

Hungyin
Associate II

[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.

4 REPLIES 4
Imen.D
ST Employee

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

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen
Imen.D
ST Employee

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

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen

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

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.