UART auto rate: the decoder finds the rate of a line it does not know

Suggested by Sorama on the EEVblog forum. Thank you!

done, in the next release · MHO900, DHO800/900

What's new

Rate measuredA 9-bit line at 9446 b/s, found from its own edges
Polarity and framingRate, polarity and framing from the line
HeldOne rate from capture to capture
Pair and IdentifyThe pair's difference measured; Identify reports the measured rate
SCPI

How it works

Rate measured

The 9-bit UART, RS232 and Modbus decoders have Auto rate. With it on, each capture's line is measured: the bit time fitted across every edge of every character, with its uncertainty. The sheet shows what it found, e.g. Auto: 9.446 kb/s (-1.60 % from 9.60 kb/s), 9N1, and the Rate field takes it. A rate that cannot be told from a standard one (9600, 115200, 31250, 250k ...) reads as that rate; any other reads as measured (9446, 74880, 12345). On our MHO934 its generator played a 9-bit line at 9446 b/s: Auto read 9446.0 b/s +-1.0, -1.60 % from 9600, in every one of 16 captures, and an 8N1 line at 31250 b/s read 31250. Rigol's RS232 decoder takes a rate from its list or a User value typed in.

Polarity and framing

Auto also reads the level the line idles at (normal or inverted) and the framing: 5 to 9 data bits, even, odd or no parity, and two stop bits when the characters come back to back. The RS232 decoder's Polarity, Data, Parity and Stop Bit fields take what the line shows; UART9 its data and stop bits; Modbus its parity and stop bits.

Held

The rate found is held: a later capture whose measurement cannot be told from it, or that holds no characters, keeps it, and a capture that shows another rate replaces it. Auto rate and the rate held are kept across power cycles with the decoder's other settings. A trace too coarse for the line (a fast line at a slow timebase) measures nothing and the rate stays.

Pair and Identify

With Minus (A-B) set, the decoder measures the pair's difference. Identify uses the same measurement: it names a UART with its measured rate and how far that is from the nearest standard rate (UART 9447 9N1, -1.59 % from 9600, on our MHO934), and sends a 9-bit line to UART9 with Auto on.

SCPI

:NOVAos:BUS<n>:RS232:AUTO ON for the RS232 decoder, :NOVAos:BUS<n>:UART9:AUTO ON and :NOVAos:BUS<n>:MODBus:AUTO ON for the others; :NOVAos:BUS<n>:AUTO:RATE? answers the rate measured and :NOVAos:BUS<n>:AUTO:RESult? the rate, its uncertainty, the nearest standard rate, the deviation in %, the framing, the idle level and the characters measured (9.446000E+3,1.0,9.600000E+3,-1.604167E0,9N1,HIGH,18). The PC tool decodes a saved capture the same way: dho decode --bus uart:tx=1,baud=auto.

Where it stands

  1. DoneThe measurement

    One measurement for every UART decoder and Identify: the bit time fitted across every edge of every character, its uncertainty, the nearest standard rate, the idle level and the framing.

  2. DoneChecked on test signals

    Standard and odd rates (300 b/s to 2.9 Mb/s, 31250, 74880, 250k, 1.5M, 12345, 9446) and lines 3 % off nominal, at 2 to 12.5 samples a bit: within 0.3 % (0.6 % at about 2 samples a bit); 5 to 9 data bits, parity, two stop bits, inverted lines, five characters among long idle, characters with no lone bit, noise and slow edges, a 3000-character capture to 0.01 %, a 9-bit RS-485 pair under a 4 V common-mode swing; on both families over SCPI.

  3. DoneOn our MHO934

    Its own generators played a 9-bit multidrop line at 9446 b/s and an 8N1 text line at 31250 b/s. Auto read 9446.0 b/s (-1.60 % from 9600, 9N1) and 31250 b/s (8N1), set the decoders to them and decoded every message; the decode sheet showed the result.

  4. NextOn the scopes

    It reaches the scopes with the next release.

What we need from you

What Sorama asked for

Auto rate on the UART decoders: the scope measures the bit rate of an unknown UART, RS-232 or RS-485 line itself.

can you provide autobaud for UART? So the decoder is able to determine the baudrate of an unknown UART signal (and RS232/485).

Try it and tell us what to change: reply on NovaOS's thread on the EEVblog forum.