Products > Test Equipment

SDS1104X-E UART/Serial Decode for 9 bit multidrop/multiprocessor protocol

(1/3) > >>

Raoul Duke:
I've just started using my new (to me) SDS1104X-E scope to reverse engineer an EIA/TIA-485 (aka RS485) serial bus.  Alas, the serial bus is using 9 bit multidrop/multiprocessor protocol.  Briefly, this protocol uses the parity bit to signal and address/command versus data: if the parity is high/mark then the 8 data bits are an address (or command), and if parity is low/space, the bits are data.  Some UARTs can handle this directly in hardware, and other UARTs need to set parity to always mark/space and take the interrupt to check the incoming parity to determine address or data.

This is a common 485 protocol in the embedded market.  And I have not yet tried to get the Linux ftdi_sio driver to implement this - one headache at a time please.

Alas, Siglent UART decode functionality only includes ODD/EVEN/NONE parity.  The standard additional parity options of MARK/SPACE have not been included for some reason, which makes decode a pain because I need to walk through every waveform to figure out the parity.  And it often seems to throw its hands up and fail to decode if it thinks there's a parity error.

Can anyone tell me how the serial decode is implemented?  Is it application code run by the host processor?  Can it be replaced?  Is there any chance that Siglent will update the serial decode to add at least "always mark/space" parity option? I know that it is too much to ask for a 9-bit mode that decodes like I2C, but at least fixed mark/space would make my life significantly easier.

As an aside, I've only had the scope for 2 days now, so I haven't figured out the details.  I've tried the "Wave Form Save" button on the web interface, but it is not quite what I had in mind.  I have about 3 seconds of serial data, sampled at 5MSa/s in 14Mpts of memory - if I have to write my own serial decoder for the 9 bit protocol, I'd like to be able to dump all 14Mpts.  Would that be done with SCPI commands?

Pushing my luck here, but because EIA/TIA485 is a differential signal, I run A to channel 1 and B to channel 3, and use Math to generate A-B superimposed on the channel 1 & 3 traces.  It would be nice to use the math trace for the Decoder.  This analog signal easily shows when the drivers are switched on, pulling the bus a few hundred millivolts from the resistor pull up/pull down and termination one bit time before the start bit.  And then the drivers are turned off one bit time after the stop bit.  Different devices on the bus have different mark & space voltages, allowing me to sort them out.

Thanks for any help.

Rerouter:
I wont be in the lab until saturday. But I can atleast help out with some if it. The decoders are baked into either the fpga bitstream or the application on the scope, dont yet know enough to say which. But the system app would be the easier one to patch if it was the case.

For dumping the contents. The only current way to do it that I am aware of is "C1:WF? ALL" swapping out c1 for c1-c4 for an analog channel. Or d0-d15 for a digital. Its unscaled. And I really hope either siglent or one of us can patch in a way to dump over network in the same formats that you can to a USB. And yes its 1 channel at a time.

When I get back I can look at the rest

tautech:
Please check you have the latest  6.1.26 firmware installed.
Download link:
https://www.siglentamerica.com/download/7232/

Raoul Duke:
Thanks.

I upgraded from 6.1.25R2 to 6.1.26.  It works a little better decoding but it still does not like 0x00 without parity.  Still no option for MARK/SPACE parity.

rf-loop:

--- Quote from: Raoul Duke on January 10, 2019, 06:32:11 am ---Thanks.

I upgraded from 6.1.25R2 to 6.1.26.  It works a little better decoding but it still does not like 0x00 without parity. 

--- End quote ---
Do you mean Serial trigger or serial decode. I have never meet problem where decoder do not decode 0x00  with what ever parity setting.  (I have not tested all trigger variations so this I do not know - yet and now busy days, so hobby things queue is in waiting state) But what I have seen is UART speed is perhaps bit off (or what ever is real reason)  and some times using custom speed setting give better result. But, now it need note that I do not also have perfect speed source. So...
Parity setting have been and is E, O or N.  No forced 1 or  0  (until Siglent add this feature in some future if they want do it)

Navigation

[0] Message Index

[#] Next page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod