AnsweredAssumed Answered

Can I get 20MBytes/sec over the HS USB on the STM32F4 ?

Question asked by gornall.simon on Aug 24, 2013
Latest reply on Aug 27, 2013 by gornall.simon
I'm trying to interface an old computer with a VME interface which can (and does) produce a burst-y 20MBytes/sec throughput. There's a CPLD to decode the VME timings, and I'm intending to use the USB as bulk-data transfer (99.9% of the traffic), and use a SPI port for low-latency, low-volume replies back to the VME system.

Since I'm using a CPLD, there's no buffering on the VME interface, so I want something that can trigger on a signal going low and read 16-bits of data, then itself set a signal low, lather, rinse, repeat (about 20 million times/sec :) The VME bus runs at ~10MHz (not really, it's an asynchronous bus), but throughput is about 20 MBytes/sec with a 16-bit databus. I think the GPIO's of the STM32F4xxx should handle that easily.

My concern is more the other end, I've just been burnt *cough*FTDI*cough* by a chip that advertised 40MBytes/sec but only achieves that on Linux kernels that were minted in 2008... Modern kernels apparently top out at ~9MBytes/sec under Linux, and the software is closed, so I can't fix it.

So, what's the throughput I could expect from the STM32F4xxx chips ? I understand it'll vary with transfer packet size, but all I want to do is open a bulk transport stream from the STM32 through to a Linux box and write data as fast as possible. For the sake of argument, let's say I write in 512-byte chunks or 32kB chunks. There'll be some small (16-32 byte) chunks but those will be rare.

Any help with this gratefully received :)