Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maximum Beaglebone Black UART baud?

I have been looking around for UART baud rates supported by the Beaglebone Black (BB). I can't find it in the BB system reference manual or the datasheet for the sitara processor itself. I am using pyserial and the Adafruit BBIO library to communicate over UART.

Does this support any value within reason or is it more standard (9600, 115200, etc.)?

Thanks for any help.

-UPDATE- It is related to the baud rates supported by PySerial. This gives a list of potential baud rates, but not specific ones that will or will not work with specific hardware.

like image 802
InvictusRex28 Avatar asked Aug 05 '15 21:08

InvictusRex28


People also ask

What is the maximum baud rate that this UART supports?

The maximum baud rate of the internal UART is 6.25Mbaud.

What is the UART baud rate?

The baud rate is the rate at which information is transferred to a communication channel. In the serial port context, the set baud rate will serve as the maximum number of bits per second to be transferred. Table 1 summarizes what we must know about UART.

What is the highest baud rate?

Standard baud rates include 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000 and 256000 bits per second. To display the supported baud rates for the serial ports on your platform, refer to Finding Serial Port Information for Your Platform. The default value is 9600 .

How fast can UART go?

UART interfaces have a maximum data rate of around 5 Mbps.


1 Answers

The AM335x technical reference manual (TI document spruh73) gives the baud rate limits for the UART sub-system in the UART section (section 19.1.1, page 4208 in version spruh73l):

  • Baud rate from 300 bps up to 3.6864 Mbps

The UART modules each have a 48MHz clock to generate their timing. They can be configured in one of two modes: UART 16x and UART 13x, in which that clock is divided by 16 and 13, respectively. There is then a configured 16-bit divisor to generate the actual baud rate from that clock. So for 300 bps it would be UART 16x and a divisor of 10000, or 48MHz / 16 / 1000 = 300 bps.

When you tell the omap-serial kernel driver (that's the driver used for UARTs on the BeagleBone), it calculates the mode and divisor that best approximates the rate you want. The actual rate you'll get is limited by the way it's generated - for example if you asked for an arbitrary baud of 2998 bps, I suppose you'd actually get 2997.003 bps, because 48MHz / 16 / 1001 = 2997.003 is closer to 2998 than 48 MHz / 16 / 1000 = 3000.

So the UART modules can certainly generate all the standard baud rates, as well as a large range of arbitrary ones (you'd have to actually do the math to see how close it can get). On Linux based systems, PySerial is just sending along the baud you tell it to the kernel driver through an ioctl call, so it won't limit you either.

Note: I just tested sending data on from the BeagleBone Black at 200 bps and it worked fine, but it doesn't generate 110 bps (the next lower standard baud rate below 300 bps), so the listed limits are really the lowest and highest standard rates it can generate.

like image 147
Alex Hiam Avatar answered Oct 07 '22 00:10

Alex Hiam