I searched not only this site but everywhere Google could find to try to figure out what the maximum possible speed UDP data can be sent using the W5100 chipset based sheilds. A lot of the information suggested quite slow data rates so I thought I'd find out by testing.
I used a Freetronics Ethermega board connected to my PC and wrote a simple Delphi based receiver app to count the bytes received per second. This has a 4MHz SPI bus speed to the W5100.
I configured the Ethermega using the standard Ethernet Library and sent a byte array using UDPsend.
My byte array was 960 bytes long as this suited the size of the data I wanted to send (480 words).
I needed to send 960 bytes every 20ms which works out to 48000 bytes per second. This is 16bit ADC values being sent to a Windows PC to filter and analyse.
This worked perfectly so I decided to see where the limit was. I made the buffer slowly bigger and got up to 1200 bytes no problem which resulted in 60000 bytes/sec received. To make sure the data was valaid and in order I sent sequentially increasing values per sample. All data was received in order and with correct values.
I then started reducing the delay between 1200 byte packets. 19ms worked, 18ms worked but 17ms did not. The data rate seemed to max out at about 67000 bytes.
A lot of the discussions I found suggested the data rates would only by 5k bytes/s max and some even suggested only 5k bits/s.
It appears it's very possible to send much faster than this. It means I can use the Freetronic board as a basic data collector.
Another test I did was to have data being sent from the UDPsend at the same time as Windows copying a 50gb file from one PC to another. The copy data rate was 108MB/s across the gigibit network with the Ethermega stuffing it's UDP sends in as well. All data was still received perfectly with no loss or error.
Has anyone else managed to get reasonable data rates through the older Sheilds?