Thursday, May 24th 2018, 4:04pm UTC+2

You are not logged in.

  • Login
  • Register

Date of registration: Apr 7th 2016

Posts: 6


Friday, November 10th 2017, 1:47pm

eMMC power consumption


I am experimenting with eMMC flash (Sandisk 16GB) and comparing to a NAND flash chip (Micron 1GB).
In both cases I am using the emFile and chips formatted as FAT fs.
I am writing 20KB/s in 4KB chunks.
MCU is lpc1857.

What I find is that the current consumption of the eMMC is approx 10x the current consumption of the NAND
for the same data throughput.

Since I am not an expert on eMMC: Are there any "hidden" switches or low power modes for the eMMC that can be activated?


Date of registration: Apr 7th 2016

Posts: 6


Friday, November 10th 2017, 7:18pm


The access duration (writing 4096bytes) is approx. 40mS either with USE_OS set to 0 or 1 in file FS_MMC_CM_HW_LPC1857_KEIL_MCB1800.c.
During those 40mS the chip is drawing 15-20mA.
The access duration on the NAND chip on the other hand is less than 5mS current draw during those 5mS is maybe a little less than for the eMMC.

So the main culprit for the high current consumption of the eMMC is the long time that the eMMC is accessed for.

Acccessing the same eMMC chip with USB bridge USB2642 allows for transfer rates of approx 20MB/S which translates roughly to access times 200uS for 4KB block.
What is the secret in FS_MMC_CM_HW_LPC1857_KEIL_MCB1800.c to get the access times from 40mS to 200uS per 4KB?

The SD bus is running at 51Mhz.
I have :
FS_MMC_CM_Allow4bitMode(0, 1 );
FS_MMC_CM_Allow8bitMode(0, 1 );
FS_MMC_CM_AllowHighSpeedMode(0, 1 );
I am writing into preallocated file using FS_SetEndOfFile().



Date of registration: Apr 7th 2016

Posts: 6


Tuesday, November 14th 2017, 1:53pm

Setting the FS_SetMaxSectorSize() to the same as the formatted sector size ( I had it set to 512 for some forgotten reason) helps a lot.
It takes the access down to 5ms or thereabout.


SEGGER - Marius

Super Moderator

Date of registration: Aug 10th 2011

Posts: 32


Monday, November 20th 2017, 4:07pm

Hello Kari,

eMMC devices use a request-response serial protocol to communicate with the host.
There is an overhead related to exchanging data transfer that involves selecting
the device, sending the command that starts the data access, etc. Your application
can achieve better performance by keeping this overhead to a minimum.
This means that the application has to transfer as much data at once as possible.
The data to be exchanged has to be aligned to a logical sector boundary and a
multiple of a logical sector size so that the file system can perform 0-copy operations.
You can find more information this in the section "12.2.2 How to improve the performance"
of the emFile manual available from here

Best regards,