View previous topic :: View next topic |
Author |
Message |
picj1984
Joined: 01 Mar 2010 Posts: 73
|
fastest reasonable UART baud rate between two PICs |
Posted: Mon Jan 14, 2019 10:45 am |
|
|
Hello,
I'm using two PIC16F1527s to communicate with each other via the hardware UART.
I'm curious if you guys have any advice for fastest reasonable speed. I'm running the processors at 20MHz. I see in the datasheet the fastest UART speed it has data for is 115200 for 20MHz but my instinct is that I could go quite a bit faster comfortably. Or maybe it's capped at 115200?
Any insight? |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9221 Location: Greensville,Ontario
|
|
Posted: Mon Jan 14, 2019 11:07 am |
|
|
Well it's not capped at 115k200. That's a magical number for communicating with PCs.
I have had a PIC18F46K22 talk to a Vinculum module at 1Mbaud all day long and I recall getting 4M as well, though it's been years.
using table 22-3..from youtr PIC datasheet
FOSC/[4 (n+1)]
if FOSC=64,000,000 and n=0 then max baud would be 16Mbaud.
Keep in mind it's the RS-232 tranceivers and wiring that will have a HUGE impact on maximum speed. With serial communications you can go fast and short OR slow and long. I can get 15 miles at 22 baud.
Jay |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19495
|
|
Posted: Mon Jan 14, 2019 11:33 am |
|
|
The old 'historical' baud rates are all simple multiples from 300bps.
This came from an early Bell modem. Later rates then went up as
integer multiples from this.
The PC when it launched used a crystal for the UART designed to give these
rates, and the fastest clock available on the original chip was 115200.
So the fastest rate on this became quite commonly the highest rate
used.
Later PC UART's then gave higher rates.
On the PIC, it is commonly quite a good idea to use rates that are nicer
divisions from perhaps a 20MHz clock. So rates like 250000, and 500000
are quite commonly used especially on RS485 links.
At higher rates, common links support shorter usable lengths. So RS485
(for example) is specified to work to 4000 feet at up to 76800bps, but only just under 300 feet at 1Mbps. So you need to look carefully at whatever
signalling standard you use if you want to use really high rates. |
|
|
picj1984
Joined: 01 Mar 2010 Posts: 73
|
|
Posted: Mon Jan 14, 2019 1:25 pm |
|
|
this info is so helpful, thank you!
In my application I'm in the same enclosure, the PICs are on different PCBs connected via IDC cable. So I think I'll give a baud rate of 1M a go. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19495
|
|
Posted: Mon Jan 14, 2019 2:57 pm |
|
|
You may well find it worth terminating the lines. Sending 1Mb/sec on
a basic unterminated logic line will lead to lots of problems with ringing.
At the receive end of each line have two resistors. One to 5v and one to 0v.
Perhaps 180R to GND, and 270R to 5v. Gives about 100R characteristic impedance and biases to 2v. |
|
|
|