sEMMC limitations
When working with sEMMC, you should be aware of the following limitations.
v1.0.0
Refer to the following detailed descriptions of current limitations (most apply for use with SD card):
sEMMC has only been tested with SDSC and SDHC memory capacity classes.
sEMMC supports both Default (3.3V <= 25MHz) and High Speed (3.3V <= 50MHz) modes on nRF54L series devices.
sEMMC High Speed mode may require a short tuning loop (not the same as
CMD19, simple write and read) to calculate a value fornrf_semmc_config_t.read_delay.sEMMC is supported on nRF54H20 at low frequencies (3.3V <= 21MHz) on P9 but the use of high speed pins on P7 requires external hardware since it operates at 1.8V only.
sEMMC supports voltage switching via CMD11. SDR12 (<= 21MHz) tested on L series devices.
sEMMC CMD12 behavior requires the sequence:
nrf_semmc_abort()followed by CMD12. This limitation applies for usage with both SD card and eMMC.sEMMC API now requires extra parameters, see sEMMC changelog.
v0.1.1
Refer to the following detailed descriptions of current limitations:
sEMMC does not support octal-lane data transmissions.
sEMMC does not support dual data rate, and as such no support for HS400.
nrf_semmc_config_t.read_delaycan not be equal to or higher than theclkdivparameter in sEMMC and FLPR counters.clkdivparameter in sEMMC and FLPR counters must be even.Maximum frequency is limited to 80MHz on nRF54H Series (assuming a maximum device frequency of 320MHz, in HS200 mode) and 32MHz on nRF54L Series devices.
A tuning cycle using CMD21 might be needed to set the proper value of
nrf_semmc_config_t.read_delay.Data buffers and response buffers needs to be pointers with a 32-bit aligned address.
nrf_emmc_data_t.block_sizeneeds to be minimum 4 bytes for quad-lane data transmissions.Setting
nrf_semmc_config_t.process_responsetoNRF_EMMC_RESPONSE_PROC_IGNOREwill only apply to any transaction in the read direction.sEMMC is not able to process response and data at the same time. See for example Read responses on how to mitigate this.
Any prepared transfer with
nrf_semmc_cmd_prepare()will be discarded when usingnrf_semmc_disable().