Asynchronous Serial Data Transmission

This document is intended as a quick reference for those times when you are sitting in front of a ‘scope, debugging a problem and all knowledge of which sense the bits are, and in which order they occur, seems to have been erased from your memory.

Scope Photograph of actual Serial Data stream.
ASCII Character ‘H’ transmitted at 9600 baud using TTL levels.ASCII ‘H’ = 0x48 = 01001000

A single ‘character’ is transmitted as;

  • A start bit
  • The required number of data bits
  • An optional parity bit
  • One, one and a half or two stop bits.

Two logical levels are defined, mark and space, representing a LOGICAL high and low.

  • A start bit is a ‘space’
  • A stop bit is a ‘mark’

By convention, characters are usually 5, 7 or 8 bits in length. However, there is no reason why shorter or longer sequences can not be constructed (using non-standard UARTs). Longer sequences require more accurate data generation and recovery timing. The decode sequence is timed from detecting the falling edge of the start bit. The UART would then typically sample in the centre of the bit, starting 1.5 bit times from the falling edge of the start bit.

Parity Bits

A parity bit may be optionally added to the data stream. This would be added after the last of the data bits and before the stop bit.

Even parity is said to be used when the number of high data bits INCLUDING the parity bit is an even number. e.g. 01000011 which has 3 high bits, would have a high parity bit which would then make the overall transmitted byte have EVEN parity.

Odd parity is said to be used when the number of high data bits INCLUDING the parity bit is an odd number. e.g. 01000011 which has 3 high bits, would have a low parity bit which would make the overall transmitted byte have ODD parity.


Voltage Levels

Logical State V24 (RS232) TTL
Mark Typically represented by a -12V level but can be a level ‘more negative’ than -3V 5V
Space Typically represented by a +12V level but can be a level ‘more positive’ than +3V 0V

It can be seen that the levels are logically inverted between TTL and RS232 (V24)

In ‘normal’ RS232 type serial communications, the data is sent least significant bit (LSB) first. Note that this is not necessarily a requirement for general async comms and a special sequence may be defined for a particular interface.


Quick Reference Bit Time Table

Bit Rate Bit Time Char Time

(Start + 8 data + stop)

110 9.09 ms 90.91 ms
300 3.33 ms 33.33 ms
600 1.67 ms 16.67 ms
1200 833.33 us 8.33 ms
2400 416.67 us 4.16 ms
9600 104. 17 us 1.04 ms
19200 52.08 us 520.83 us
38400 26.04 us 260.41 us
57600 17.36 us 173.61 us
115200 8.68 us 86.80 us