2013-08-23 09:37 PM
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 :)Simon #stm32f42013-08-25 11:27 PM
I've never tried to go that high, but you should be able to get there by using the DMA to move data from USB to GPIO.
2013-08-26 08:48 AM
I'm a little more pessimistic.
To get that kind of speed out of Linux you might need a special driver that can handle a fat EHCI pipeline. No other crap, not even a mouse or keyboard, on the USB bus.The F4 has a 4K USB FIFO per endpoint and BULK transfers are 512 bytes per packet.BULK is the fastest transfer by far.If you user more than one endpoint, and you might have to to get the speed, then you might have to worry about reconstructing the data because of out of order concerns.We are talking about a nice I7 2600K or better Linux box running USB Host right?2013-08-26 04:14 PM
Hello,
Saleae Logic uses a cypress FX2LP EZ-USB chip and is able to throw up to 24Mbyte/sec on the bus using pass through firmware on Windows, Linux and Mac. I guess I'd use this chip if I had to get that bandwidth (now that I know the FTDI chip can't do it ...). Thomas.2013-08-27 08:52 AM