Author Topic: Bytes missing when decoding UART with Siglent and Rigol, but Magnova is ok  (Read 1996 times)

0 Members and 1 Guest are viewing this topic.

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Guys,

I'm decoding UART on a RS232 chip (115,2kbaud, 8 data bits,no parity, 1 stop) while sending or requesting something to or from the DUT using RS232.

When doing this, the Magnova scope (using analog channel) does it perfectly: all the bytes are decoded in ascii correctly as one can see on the screenshots (triggering is on decoder, using start of frame).

However, when doing the exact same thing with same settings (I think), the Siglent and the Rigol (MHO 98) don't start decoding the first byte as is visible on the screenshots.

The waveform of the Siglent and Magnova are clearly the same, still the Siglent starts decoding a few bits later.

What am I doing wrong?

PS:the Rigol doesn't even show the start of the waveform as configured, no matter what I do with the horizontal trigger (moving to the left like I did with the other 2 scopes).
« Last Edit: August 26, 2026, 04:13:29 pm by Sorama »
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Update: it works fine when using single trigger on both the Siglent and Rigol.
Has anyone time to explain me that?

tnx.
 

Online MarkF

  • Super Contributor
  • ***
  • Posts: 3285
  • Country: us
Can't say this is what's happening...
My Rigol DS1000Z ONLY decodes what is visible on the screen.
It does NOT use the entire sweep in memory.
You need to set the zoom to fit the screen. 
For auto sweep, the data would need to be stable and repeat for a good decode.

Food for thought that you might be able to verify.
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Can't say this is what's happening...
My Rigol DS1000Z ONLY decodes what is visible on the screen.
It does NOT use the entire sweep in memory.
You need to set the zoom to fit the screen. 
For auto sweep, the data would need to be stable and repeat for a good decode.

Food for thought that you might be able to verify.

tnx.
I can confirm that acquisition is already set to Normal and time base to 500us, which gives the right amount of data.
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Re: Bytes missing when decoding UART with Siglent and Rigol, but Ma
« Reply #4 on: August 28, 2026, 06:13:11 am »
Anyone?

I know single trigger is the right choice for single events like sending a command or its respons on a communication bus like this UART.

What I don’t get is why the Magnova is able to catch it in Normal triggering while the Siglent nor MHO98 are not: they produce garbage.
 

Online MarkF

  • Super Contributor
  • ***
  • Posts: 3285
  • Country: us
Other than making sure that you always trigger at the beginning of the data stream
and the data repeats you might also check what the threshold is for a high and low.
My DS1000Z isn't always that good at choosing. 

For example, if it choose 0.5V for a high than any noise would mess up the decode.

There is also bit order (MSB first or LSB first).  STOP bits, number bits/char, etc.

Just guessing here since I don't have any of your scopes.
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Other than making sure that you always trigger at the beginning of the data stream
and the data repeats you might also check what the threshold is for a high and low.
My DS1000Z isn't always that good at choosing. 

For example, if it choose 0.5V for a high than any noise would mess up the decode.

There is also bit order (MSB first or LSB first).  STOP bits, number bits/char, etc.

Just guessing here since I don't have any of your scopes.

decoder settings are ok as when using Single trigger the decoding is correct.
Trigger level is 50%.

Its just strange that the Magnova is able to decode correctly even when not using Single trigger.
 

Offline Mahagam

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pl
Why idle level of your uart is zero? Where is the correct 'start' bit in this case?
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Why idle level of your uart is zero? Where is the correct 'start' bit in this case?

I9dle level is not zero, but -2.6V.
It's the positionig on the screen that is fooling you.

The start bit is the first going high (when looking at the second screenshot/Magnova)
« Last Edit: August 28, 2026, 10:05:36 am by Sorama »
 

Offline smk

  • Regular Contributor
  • *
  • Posts: 72
  • Country: de
What are the trigger settings you are you using? A simple edge trigger will often trigger somewhere in the middle of a character.
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
I use the decoder settings as Trigger.
It is visible on the screenshots.

The actually (and only) problem is that both the Siglent and the Rigol do not show the very first bytes (although trigger is on start of frame) while the Magnova shows all the bytes from the beginning, even when not in Single trigger.
« Last Edit: August 28, 2026, 11:09:01 am by Sorama »
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Maybe I should ask Batronix to explain why their scope is working 😁

It looks like they are reading this topic 👍🏻
« Last Edit: August 28, 2026, 12:07:48 pm by Sorama »
 

Offline Mahagam

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pl
Your uart is inverted. Try to set "uart idle level" setting to "low" in the Siglent uart decoder settings.
 
The following users thanked this post: tautech

Online tautech

  • Super Contributor
  • ***
  • Posts: 31975
  • Country: nz
  • Taupaki Technologies Ltd. Siglent Distributor NZ.
    • Taupaki Technologies Ltd.
Your uart is inverted. Try to set "uart idle level" setting to "low" in the Siglent uart decoder settings.
100%
But with a protocol going below zero  :-// you need also check your Threshold is within the waveform.
Avid Rabid Hobbyist
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Your uart is inverted. Try to set "uart idle level" setting to "low" in the Siglent uart decoder settings.

tnx, but that is not the case: the Idle setting is "Low".

Again, when using Single triggering, everything is perfect, that implies the decoder settings are correct.
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be

But with a protocol going below zero  :-// you need also check your Threshold is within the waveform.
Yes; it is going negative because its RS232...

The start of the triggering is ok, as one can see on the screenshot of the Siglent, there are no bytes before the start.
But the decoder string is shifted to the left, hence not showing the first decoded bytes, but some bytes down the road...
« Last Edit: August 28, 2026, 12:15:44 pm by Sorama »
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
@tautech,

i find it very annoying that the decoded data, in ASCII, is put between single quotes.
it makes the reading of it way more difficult.
The quotes have absolutely no added value, on the contrary.
I admit the Rigol is even worse.

have a look at the clean and very readable presentation of the Magnova decoded bytes...
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
extra info:
when I send only a few bytes to the DUT and its respons is also only a few bytes that fit on the screen, there is no issue.
The decoded words are perfectly in line with the waveform and the actual start of the frame, as one can see in the attached screenshot.
 

Online tautech

  • Super Contributor
  • ***
  • Posts: 31975
  • Country: nz
  • Taupaki Technologies Ltd. Siglent Distributor NZ.
    • Taupaki Technologies Ltd.
@tautech,

i find it very annoying that the decoded data, in ASCII, is put between single quotes.
it makes the reading of it way more difficult.
The quotes have absolutely no added value, on the contrary.
I admit the Rigol is even worse.

have a look at the clean and very readable presentation of the Magnova decoded bytes...
I don't see any quotes on the decoded data from ST3 and SDS814X HD.  :-//

A couple of screenshots.....using plain falling edge triggering with some Holdoff to obtain rock solid stable triggering.
Maybe I need check SDS2000X Plus provides the same output and it should.
Avid Rabid Hobbyist
 

Online tautech

  • Super Contributor
  • ***
  • Posts: 31975
  • Country: nz
  • Taupaki Technologies Ltd. Siglent Distributor NZ.
    • Taupaki Technologies Ltd.
Reported to Siglent HQ for improvements.
Avid Rabid Hobbyist
 

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be
Tnx.

What about the problem with the decoded bytes that are shifted to the left and thus not in sync with the trigger on the screen and the waveform?

It’s a single string of ascii characters sent by the DUT as one can see in the waveform.
So decoding should also be vertically aligned with the trigger start (which is start of frame).
 

Offline H.O

  • Frequent Contributor
  • **
  • Posts: 952
  • Country: se
I've tried to replicate this issue on my SDS2k+ and I can get it to act up if trigger is set to normal and the number of bytes sent is more than what fits within one capture, ie the scope re-triggers in the middle of the message, this is sort of expected and the decode list shows "Rx Err Overlength'. Changing trigger to single obviously "fixes" it.

By your screenshot it does not look like this is the issue though since the line is clearly idle before the first startbit.

In the screenshot attached, I've (hopefully) replicated your settings and I'm sending the string 'When doing this, the Magnova scope (using analog channel) does it perfectly: all the bytes are decoded in ascii correctly as one can see on the screenshots (triggering is on decoder, using start of frame).' which is clearly FAR more than what fits on the screen. The scope captures it, and decodes what ever is on the screen. Changing memory depth from 4Mpts to 2Mpts makes the same string "overflow" the capture buffer and scope retriggers in the middle of the string and it becomes a mess. The scope STILL decodes what's actually on the screen though - which yours clearly does not. Strange...

Again, I'm not saying, nor do I think this is your problem but it MIGHT be. How many bytes are there in the string that your DUT sends?

I'm on 1.6.2R1 by the way, in case that matters.

EDIT: And yeah, those quote-marks are annoying is f..k, please make them go away :-)
« Last Edit: August 29, 2026, 08:29:01 am by H.O »
 

Online tautech

  • Super Contributor
  • ***
  • Posts: 31975
  • Country: nz
  • Taupaki Technologies Ltd. Siglent Distributor NZ.
    • Taupaki Technologies Ltd.
I've tried to replicate this issue on my SDS2k+ and I can get it to act up if trigger is set to normal and the number of bytes sent is more than what fits within one capture, ie the scope re-triggers in the middle of the message, this is sort of expected and the decode list shows "Rx Err Overlength'. Changing trigger to single obviously "fixes" it.

By your screenshot it does not look like this is the issue though since the line is clearly idle before the first startbit.

In the screenshot attached, I've (hopefully) replicated your settings and I'm sending the string 'When doing this, the Magnova scope (using analog channel) does it perfectly: all the bytes are decoded in ascii correctly as one can see on the screenshots (triggering is on decoder, using start of frame).' which is clearly FAR more than what fits on the screen. The scope captures it, and decodes what ever is on the screen. Changing memory depth from 4Mpts to 2Mpts makes the same string "overflow" the capture buffer and scope retriggers in the middle of the string and it becomes a mess. The scope STILL decodes what's actually on the screen though - which yours clearly does not. Strange...

Again, I'm not saying, nor do I think this is your problem but it MIGHT be. How many bytes are there in the string that your DUT sends?

I'm on 1.6.2R1 by the way, in case that matters.

EDIT: And yeah, those quote-marks are annoying is f..k, please make them go away :-)

Now, see how even though you have Serial triggering, the 1st edge is rising whereas for an Idle low protocol it should be rising !  :horse:

SW 1.6.2R5 has the same inverted commas around the decode results.......need to check other models don't have this unnecessary BS too !  :bullshit:
« Last Edit: August 29, 2026, 09:29:45 am by tautech »
Avid Rabid Hobbyist
 

Offline H.O

  • Frequent Contributor
  • **
  • Posts: 952
  • Country: se
Quote
Now, see how even though you have Serial triggering, the 1st edge is rising whereas for an Idle low protocol it should be rising !  :horse:
I'm sorry, I don't understand what you mean really...

I'm probing R232 levels, bus IS idle LOW and leading edge of startbit IS rising.

Trigger type is set to Serial with Condition=Start and the bus settings are 115200, 8, N, 1, Idle Low, LSB First.
This all makes sense to me and it puts the trigger event in the middle of the start bit, not on the leading edge OF the start bit as is the case with Trigger Type = Positive Edge.

EDIT: Checked the 2kXHD, it too displays decoded ASCII as [ 'A' ] [ 'S' ] [ 'C' ] [ 'I' ] [ 'I' ]

« Last Edit: August 29, 2026, 11:37:54 am by H.O »
 
The following users thanked this post: Sorama

Online SoramaTopic starter

  • Super Contributor
  • ***
  • Posts: 1091
  • Country: be

Again, I'm not saying, nor do I think this is your problem but it MIGHT be. How many bytes are there in the string that your DUT sends?

I'm on 1.6.2R1 by the way, in case that matters.

EDIT: And yeah, those quote-marks are annoying is f..k, please make them go away :-)

I send character m to the DUT (via RS232) and get this back in my terminal window:

Junior 1:rx:00 00 00 00 00 tx:00 00 00 00 00 s:08 00
Junior 2:rx:00 00 00 00 00 tx:00 00 00 00 00 s:00 00
Junior 3:rx:00 00 00 00 00 tx:00 00 00 00 00 s:00 00
Junior 4:rx:00 00 00 00 00 tx:00 00 00 00 00 s:00 00
Thermo 1:rx:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 s:00 00
Dimmer 1:rx:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 tx:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
s:00 00    ds:11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
Dimmer 2:rx:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 tx:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
s:00 00    ds:11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
Dimmer 3:rx:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 tx:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
s:00 00    ds:11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11

PS: I'm on 1.6.2R5 (latest)
« Last Edit: August 29, 2026, 05:21:31 pm by Sorama »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf

 

-->