I use File System component (ver. 6.9.0) and MCI CMSIS driver (ver. 2.02). My MCU is STM32F446 and eMMC - MTFC2GMDEA-0M WT. I'd like to have 48 MHz bus speed, so I've defined MemoryCard_Bus_Mode_HS_Enable and checked that GetCapabilities() returns MCI_BUS_MODE_HS = 1. But when I call fmount the Middleware configures bus speed to 25 MHz via the MCI driver (it sets ARM_MCI_BUS_SPEED_MODE to ARM_MCI_BUS_DEFAULT_SPEED and ARM_MCI_BUS_SPEED to 25MHz). Is there any way to get 48 MHz? I'm guessing it has to be done automatically, but is it safe to call MCI->Control after the fmount call to set 48 MHz manually?
Check what is happening after CMD16 (set block len). If CMD6 (switch) is called and then CMD13 (read status), then it is ok to switch the frequency manually (according to eMMC 4.41 standard and assumption that command parameters are correct). Also check driver return values, maybe at some point your driver returns with error? Otherwise is suggest that you contact support, maybe there are some handling differences for your device.
Thanks for your reply.
I see CMD16->CMD6->CMD13 and there are no errors. I tried to configure bus speed to 48 MHz manually after the fmount call and this works fine.
Regards the other commands. Everything executes with ARM_MCI_EVENT_COMMAND_COMPLETE except sequence at the start: CMD0 -> ARM_MCI_EVENT_COMMAND_COMPLETE CMD8 -> ARM_MCI_EVENT_COMMAND_TIMEOUT CMD55 -> ARM_MCI_EVENT_COMMAND_TIMEOUT CMD1 -> SDIO_ICR_CCRCFAILC, ARM_MCI_EVENT_COMMAND_COMPLETE CMD1 -> SDIO_ICR_CCRCFAILC, ARM_MCI_EVENT_COMMAND_COMPLETE
This is ok, as it is part of SD/eMMC device detection. FileSystem will first attempt to detect SD card and if this fails it continues with eMMC detection.