I've been looking around at embedded ethernet interface modules, most seem to have a serial interface with a max bit rate of 115200 or
230400 so I can only move about 20kbytes/sec with them. Are there any with byte-wide interfaces and higher data rates? I have a project where I'd like to move a byte stream of 250k bytes per second reliably from a microcontroller to a windows app thru a lightly used lan.
In general, what are the practical speed limits of moving data streams between devices on 10base and 100base lans?
If you can handle the code and CPU overhead, why not add in an Ethernet chipset directly? Both the Realtek (10Mbps) and ASIX (10/100) support
8-bit or 16-bit I/O mode).
formatting link
is a great starting point for driver code and prototype boards.
The key to direct Ethernet support depends on the protocol you're using to transmit to the Windows PC. TCP is reliable, but very overhead intensive (RAM, CPU, code). UDP provides no guarantees, but can be done with essentially no RAM (all in the NIC buffer). UDP without checksums would be even faster, if you have other data integrity measures (or don't care).
For UDP, an NE2000 driver can probably be done in ~100 instructions, with most of that being NIC initialization. I've got an ASIX implemented on AVR that'll do 6000+ packets/sec easily (UDP w/o cksum), so the volume's definitely there for small chips.
On shared hubs, 60% of the bandwidth; on switches, 100%. There will be additional reductions if you use a protocol like TCP that requires round-trip acknowledgements and buffer tracking.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.