Skip to main content

Oscilloscope Shopping

I am now in the market for a new oscilloscope. I have sold my Rigol DS1054Z, it served me well. I originally purchased it stock at 70MHz and eventually did the famous hack on it and unlocked everything. Now I am looking for something that I will not outgrow as I get out of school and progress throughout my career.  I have my eye set on 3 different scopes all with their pros and cons but one of them in particular seems to address most issues at a fraction of the price. All in all, my mind is pretty set at this point, it is just a matter of coming up with the money.
My flavor of choice has ultimately come down to the Siglent SDS5034X pictured below.

I was considering the Rohde & Schwarz RTB2004 or the RTM3004, as well as a Lecroy Teledyne WaveSurfer 3034Z. I want at least 350 MHz and mixed signal options with  Logic Probes. As a student on a student budget, with all kinds of bills to pay, including tuition, rent, insurance etc., money is scarce. These scopes all come in at over $8k. Unfortunately Siglent offer no student discount or incentives. However, of the 3 scopes the Siglent comes in a half the price of the R&S and the Lecroy given the specs that I am looking for. I tried emailing them for a student discount, unfortunately I mentioned my blog and YouTube channel which I believe caused them to consider my request based on the amount of viewers and followers I have, as oppose to my original request which was for them to consider an academic discount. Nevertheless I like the company and their products. I own their bench-top multi-meter as well as their power supply. 
Here is a quick rudown of the specs taken from their website:

• 1 GHz, 500 MHz, 350 MHz models with real-time sample rate up to 5 GSa/s

• SPO technology
· Waveform capture rates up to 110,000 wfm/s (normal mode), and 480,000 wfm/s (sequence mode)
· Supports 256-level intensity grading and color temperature display modes
· Record length up to 250 Mpts
· Digital trigger system
• Intelligent trigger: Edge, Slope, Pulse, Window, Runt, Interval, Dropout, Pattern, Qualified and Video (HDTV supported). Trigger zone helps to simplify advanced triggering
• Serial bus triggering and decoder, supports protocols I2C, SPI, UART, CAN, LIN, CAN FD, FlexRay, I2S and MIL-STD-1553B
• Low background noise, supports 0.5 mV/div to 10 V/div voltage scales
• Segmented acquisition (Sequence) mode, dividing the maximum record length into multiple segments (up to 100,000), according to trigger conditions set by the user, with a very small dead time between segments to capture the qualifying event
• History waveform record (History) function, the maximum recorded waveform length is 100,000 frames
• Automatic measurement function on 39 parameters, supports statistics with histogram, Gating measurement, Math measurement, History measurement and Ref measurement
• 25 MHz function / arbitrary waveform generator, built-in multiple predefined waveforms
• Large 10.1” TFT-LCD display with 1024 * 600 resolution; Capacitive touch screen supports multi-touch gestures
• Multiple interfaces: USB Host, USB Device (USBTMC), LAN (VXI-11, telnet, socket, web), Pass/Fail, Trigger Out, 10 MHz In, 10 MHz Out, VGA output
• Built-in web server supports remote control by the LAN port using a web browser
• Supports SCPI remote control commands
Read more about it here. Also check out YouTube for some videos on its operations, there are only a few videos of it, I will post some whenever I get it.... dont hold your breath though.


Popular posts from this blog

Interface a Rotary Encoder the right way.

So whilst reading my favorite odyssey found here I stumbled onto something I never spotted before. It turns out that the general purpose timers support hardware interfacing with an incremental encoder. This means no more interrupts and no need to increment whatever variable you had. Now all you have to do is get the value from the Count register in the timer. Did I also mention it takes care of figuring out which direction you are turning it? Amazing! Lets talk about it.

Encoder Interface Mode Verbatim from the reference manual of the STM32F103 page 392 or Section 15.3.12  "Encoder interface mode acts simply as an external clock with direction selection. This 
means that the counter just counts continuously between 0 and the auto-reload value in the 
TIMx_ARR register (0 to ARR or ARR down to 0 depending on the direction). So the user 
must configure TIMx_ARR before starting. In the same way, the capture, compare, 
prescaler, trigger output features continue to work as normal."

STM32L0/F0/F3 I2C : Part 3 RX TX via DMA

Most modern microcontroller come with a peripheral called DMA which allows for an even more hands-off approach. The Direct Memory Access controller will get a tutorial of it's own in the future. However, it is so simple to use that I can easily explain the required bits in this tutorial without feeling like I will overwhelm the reader. In this iteration of the I2C series I will cover how to TX and RX date on the peripheral in conjunction with the DMA controller. 

First let me briefly explain in a high level what the DMA controller does. It allows you to transfer data in 3 ways: Peripheral to memoryMemory to peripheralMemory to memory. What does this mean? For example, when you receive data on I2C in your RXDR register, you can have the DMA controller move that data received into an array. At the end of the day your variables are just memory locations, so if you have declared an array it has an address associated with it, this is address is what the DMA considers  "Memory"…

STM32 I2C Does it suck?

Recently I have been annoyed with  bugs in the I2C implementation in ST's F1/L1/F40/F2 series, and  any microcontroller made by ST before 2012. There appears to be, what I can only describe as, a race condition when attempting to receive data in I2C interrupt(low priority)  or polling mode.

Just to be clear a race condition is defined as , verbatim from wiki: "the behavior of an electronics, software, or other system where the system's substantive behavior is dependent on the sequence or timing of other uncontrollable events. It becomes a bug when one or more of the possible behaviors is undesirable."
I was humming along trying to make my YouTube tutorials when I arrived to the I2C protocol implementation. I have used I2C with the F1 series plenty of times, however I have never had the need to receive data from a slave. However for the sake of completeness I decided to implement an RXing routine in I2C for my tutorial. Only to find statements like this in the referen…