Suggested by Sorama on the EEVblog forum. Thank you!
| Rate measured | A 9-bit line at 9446 b/s, found from its own edges |
| Polarity and framing | Rate, polarity and framing from the line |
| Held | One rate from capture to capture |
| Pair and Identify | The pair's difference measured; Identify reports the measured rate |
| SCPI |
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.
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.
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.
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.
: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.
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.
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.
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.
It reaches the scopes with the next release.
Turn Auto rate on for one of your RS-485 buses on your MHO98 and tell us the rate it reads. A saved capture (.bin or .csv) of a line it reads wrong helps most.
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.