Pages: [1]   Go Down
Author Topic: serial rate of 921600 bps with arduino due ??  (Read 834 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Hi,

before I buy an arduino DUE I would like to ask the following:

I intend to use an arduino DUE to read data on a serial channel (UART) at a rate of 921600bps, perform some easy calculations on them (e.g. a checksum calculation) and send them on another serial channel (UART) again with 921600bps. I cannot afford to "loose" bytes, so the connection has to be very robust. The data amount to be read is not very high: an external device is sending them in "bursts" to the arduino due, i.e. 15bytes at the beginning of every millisecond. In the same way the DUE has to output the data on onother serial channel.

Would you say that this task is very challenging for the arduiono DUE or is it rather an easy and feasible task?
Regarding the processor specs that mentioned rates are no problem but perhaps there are limitations caused by the implementation of the serial library.
 
Logged

0
Offline Offline
Sr. Member
****
Karma: 8
Posts: 394
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The old serial protocol was never intended for such high speeds.  It contains no clock information.
You can always try & see.
I would use SPI which includes a clock line and intended for up to 4Mhz.  I 've used it between  328's at 2Mhz with no problem.  The main weaknesses of SPI are: 1.no official slave support (but plenty of hacks)  2. Slave cannot initiate a message.   I2C might be another alternative.
Logged

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 211
Posts: 13478
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
15bytes at the beginning of every millisecond.
That is 15 *10 * 1000 = 150.000 baud.
921600bps is a factor 6 above that (quite some safety margin

I have successfully used 345600 baud on an UNO so I expect no problem with the DUE as it is faster but I have not enough DUE experience.
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 211
Posts: 13478
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


DUE processore spec docs here - http://www.atmel.com/devices/sam3x8e.aspx?tab=documents -
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Do your other devices (the ones you wanna communicate with) support hardware handshake (RTS/CTS)? For speeds going that high I would at least recommend using hardware handshake, better is a clocked protocol like SPI (as joe mcd suggested) but you don't specify if your devices would support this.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


regarding spi, i2c:

the device that will send the data to my arduino DUE uses two wire rs485 (wires having a length of approx. 2m). it is an eye tracker camera that outputs the pupil coordinates and some additional information at a rate of 1000Hz (equidistant in time). In other words, I cannot use spi or i2c as suggested nor can I use any additional clock signals to make the transmission more reliable.

So far, I used a RS485/USB adaper to read the data with a windows pc. There were no problems. So the data quality seems to be ok. the only limiting factor appears to be the UART of the arduino due - to be more precise, the library functions dealing with the serial interface.  Would you agree? If not, what determines the maximum speed?

I plan to use MAX485 to convert the data to TTL level. Any bad experience with this circuit?
Do you see any problems arising when trying to send data with 921600bps on another serial line of the DUE?
Logged

0
Offline Offline
Sr. Member
****
Karma: 8
Posts: 394
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

When you said serial I assumed the old RS232.  RS485 is a modern protocol designed to handle longer distances and higher speeds.  Provided the hardware is really RS485 compliant, you should be OK.  Does the Arduino DUE library support RS485?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

When you said serial I assumed the old RS232.  RS485 is a modern protocol designed to handle longer distances and higher speeds.  Provided the hardware is really RS485 compliant, you should be OK.  Does the Arduino DUE library support RS485?

No, it is not supported as far as I know. Thats why I intend to use a MAX485 converter.
Logged

Pages: [1]   Go Up
Jump to: