Electronic – Maximum transfer rate of USB mass storage device using micro-controller

microcontrollerusbusb device

I plan to design a NAND flash disk using STM32F415RGT6 (168 MHz Cortex-M4) micro-controller. Using USB3300 PHY enables the microcontroller to connect in High-speed USB 2.0 mode. Therefore, the transfer rate of the physical layer should not be an issue. There are two requirements:

  • Transfer rate of the disk must be over 1 MB/s (both read operation and write operation).
  • A specific algorithm must be performed on the data before transfer it to/from the NAND chip (about 1100 cycles per 16 bytes = at least 70 MHz considering the 1 MB/s rate).

1) Is is possible to achieve such transfer rate using this micro-controller? The micro-controller supports DMA enabled data transfer for its USB connection.

2) How much processing power will be left for my algorithm? Has anyone measured their idle cycles after implementing a mass storage device in a micro-controller?

I know it is possible to implement such application using FPGA but I really like to avoid it if it would be possible.

Best Answer

I have just implemented a FS usb connection on a STM32F3 (72Mhz). I dont' know for the HS rate, but about the number of cycle used by USB, I would say not so much.

I used an FSK algorithm which processed data all the time and take something like 75% of the CPU cycles, but the USB connection (VCP 115kbps) was ok and not disturb the algorithm, whithout DMA.

If you have the answer for the rate at HS speed, please post, it could interest me!

Seb.