2017년 2월 20일 월요일

DSO Quad



DSO Quad

Introduction

DSO Quad also known as DSO203 is a pocket size 4 channel digital oscilloscope for common electronic engineering tasks. It’s based on ARM cortex M3 (STM32F103VCT6), providing 72MS/s sampling rate with integrated FPGA and high speed ADC. An internal 2MB USB disk can be used to store waveform captures, user applications and to upgrade firmware.

Features


  • Pocket size and light weight
  • Two 36MS/s analog channels, Upto 72MS/s if configured to single channel.(Upgrade to Two 72MS/s analog channels, Upto 144MS/s if configured to single channel from .sys version v1.31)
  • Two digital channels
  • Signal Generator
  • Various Triggering Option
  • Easy waveform storage
  • Firmware upgrade
  • User applications
  • Open source
Source(s): Features support

Application Ideas


User applications

Ongoing projects:
Idea Collection
Applications
  • “Simple Mode” - where only the most basic functions are available to help people without experience.
    • Detailed at https://github.com/PetteriAimonen/QuadPawn/wiki/Advanced-Volt-Meter
    • Protocol analysis/data capture - Serial, I2C, SPI, CAN
    • LCR (uH, uF and R) measurement capability - The inbuilt signal generator makes this a natural. Three methods exist, all requiring an external component(s) Example
    • Semiconductor Analyzer - Use the DAC to test and chart the voltage response of a diode / transistor (and simply identify components, such as transistor pinout and polarity)
    • RF spectrum analyzer
    • A 2D X-Y mode that plots the analog channels against each other on two axes with a digital channel optionally functioning as a “beam” enable/disable.
    • Something seems to exist? Not in APP2.50 yet.
  • A DMX Decoder/Analyser and generator (used in conjunction with an external RS485 IC) would make this a VERY useful gadget for theatre techs.
  • Television mode (analog TV) : Display frame/field/line (select field A/B) or line number. Display vectorscope diagram. Display content (ie: the TV image).
  • Synchronization with a second DSO Quad for a 4 channel analog/digital signal, perhaps similar USBscope50 [moved from HARDWARE]
use ‘wave out’ to generate a pulse/step when master unit triggers, use C/D as trigger for slave(s)
  • Create USB remote control software, such that if LCD breaks, you can still use it with PC software. [moved from HARDWARE]
  • Stream data to PC - Use PC as storage buffer, with additional processing power. A PC could decode I2C words and other protocols where the Quad wouldn’t. [moved from HARDWARE]
  • White noise function - add to the functions generator
Enhancements
  • A spectrum analyzer displaying a view from a frequency/time perspective
  • Fast Fourier Transform, would be nice and easy for viewing spectrum data of a single signal.
Hardware/Device-Oriented
  • SDR (Software defined radio) note we only have USB full speed (12Mb/s)
  • Preamplifier 10x badly needed!!!
  • Add bezel buttons for easier to access menus.
  • Add 2 more analog channels, Perhaps via USB dongle.
  • Add port for expansion devices, such that and add-on device can offer more capabilities, like RF generation, or a function generator that is capable of larger amplitudes. In particular a +5v and 3.3v output would be useful.
Other
  • Service application for technical support staff. Could split the screen and display instructions like “Check if port 3, pin 5 has a signal, if not xyz might be broken”. There could be a next button and for each step the text, the right timescale, trigger values etc. are selected
  • My phone is ARM based, perhaps make a USB version of this and an app for my phone, that allows my phone to be the display / insured touch screen display.
  • Simple math functions on both analog channels and generated signal.
  • Two totally ground separated input would enable measureing inputs, which are not the same ground referenced. (like in the Velleman two-channel personal scope)
  • Input overvoltage protection diode should be added to protect device form HV spikes
  • Oversampling and its software implementation could decrease noise, and increase effective bit depth
  • Special technique equivalent time sampling, could increase bandwidth for repetitive signals
  • Non-storage mode which constantly sweeps the visible area instead of storing into a huge offscreen buffer. I set the sample rate to 50ms in the current version (eg. to look at an audio signal) it only updates the screen once every few seconds, it should update continuously.
  • Please add more ideas…
See also information on application development for the DSO Quad

Specifications


Analog channel * 2[CH_A] [CH_B]
Digital channel * 2[CH_C] [CH_D]
Vertical Scale20mV-10V/div (1-2-5 step) on x1 probe / 200mV -100V/div (1-2-5 step) on x10 probe
Vertical resolution8 bit
Input couplingAC/DC
Max input voltage80Vpp (x1 probe) / 400Vpp (x10 probe)
Storage4K per channel / 8K on single channel
Software trigger typeedge, pulse, level (to be added)
Hardware trigger typeedge
Trigger sourceCH1/CH2/EXT
Trigger modeAuto, Normal, Single, SCAN, None
Test Signal generator10Hz to 8MHz 2.8Vpp Square Wave, duty cycle 10~90% adjustable / 10Hz to 20kHz 2.8Vpp Sine, Square, Sawtooth, Triangle wave
Storageinternal 2MB USB disk, BMP, DAT file
Auto measureVmax, Vmin, Vpp, Vavr, Vrms, Freq, Period, Pulse, Duty
Cursor measurementLevel, Voltage
Display modeCH1, CH2, EXT, CH1+CH2, CH1-CH2
Sampling modereal time
Sampling rate30S/s - 72MS/s
PowerLiPo battery
Dimension98 * 60 * 14.5 (mm)
Weight80g (without battery)
Accesories within Pack2 mcx osilloscope probe, 2 mcx digital probe

Components


Please add links to core components data-sheets like
CPU72 Mhz - ARM 32-bit Cortex™-M3 CPU - STM32F103VC [[2]](http://www.st.com/internet/mcu/product/164492.jsp)
FPGAICE65F_VQ100 [[3]](http://www.siliconbluetech.com/media/downloads/iCE65L04DiCEDatasheet.pdf)
TFT
ADCAD9288-40 [[4]](http://www.analog.com/static/imported-files/data_sheets/AD9288.pdf)
OP-AmpsOPA2354 [[5]](http://www.datasheetcatalog.org/datasheet/texasinstruments/opa354.pdf)
MOSFET-Switches
USB-Storage
(add more here)

Caution


Improper operation of this device could result in physical injury and/or damage to the device. Note all necessary precautions, and be sure to read all documentation before using the device.

Upgrading firmware


Please note that this procedure currently only works under Windows. Instructions For Linux are here. (2011-04-29) If we can get the upgrade disk to work on Linux and Mac, it would be quite easy to write an application to automate this process for less experienced users. It might even be possible to have the upgrade program check the hardware version to prevent uploading the wrong firmware.

Where to find firmware

Track the latest version to firmware at: http://garden.seeedstudio.com/index.php?title=DSO_Quad:Upgrading_Firmware#Firmware_List you can always download the latest version of firmware

Version warning

WARNING: It is important that you use the firmware for your particular hardware version. The hardware version is shown on the splash screen when you boot the device. Ask for help in the forums if you can’t determine your hardware version. If you upload the wrong firmware, you could brick the device.

Upgrade procedure

(Windows only) Connect the DSO Quad to your PC with a mini USB cable. Hold down the “>||” (play/pause) button while turning on the device. Your device is now in firmware upgrade mode, and a USB disk should appear on your system. You copy the firmware files one at a time, and each time you copy a new file, the device will disconnect to prepare the file. When the disk reconnects, the extension of the file you uploaded will change (“.rdy” means the upload worked properly).
The order that you upload the files in DOES matter. Start by uploading the .hex files (order unimportant). To upload the .BIN files, you need to first upload the corresponding .ADR file. This tells the device where to put the binary file (e.g. upload CFG_FPGA.ADR first, then upload xxxxFPGA.BIN immediately after). If you make a mistake, delete all the files and start again.
When you’re finished uploading all the firmware files, turn off the device to complete the upgrade. When you boot the device again, your firmware versions should be updated. If you get an error at the splash screen, try uploading the firmware again, carefully following the instructions above.
More details and Linux instructions here: DSO_Quad:Upgrading_Firmware

File Descriptions

File TypeFilename FormatDescription
FPGA FilexxxxFPGA.BINconfiguration data for the FPGA
Logo Filelogo_xxx.BINCreate any 16 color 64*256 .BMP file (filesize = 46.9KB), and change the extension to .INF. This is the image displayed on the splash screen.
System FileSYS_xxxx.hex??? (description needed)
Application FileAPP_xxxx.hex??? (description needed)
Address Filexxxx.ADRThese files tell the device where to put the next .BIN file you upload. There is one for the FPGA file, and one for the LOGO file. The files are named so that you know which goes with which.
note: as newer versions become available, these filenames may appear slightly different. The x’s represent values that could change over time.

Memory layout

BeginEndSizenote
0x000000x03fff16384DFU
0x040000x0bfff32768SYS
0x0c0000x13fff32768APP1 (default)
0x140000x1bfff32768APP2
0x1c0000x23fff32768APP3
0x240000x2bfff32768APP4
0x2c0000x3d7ff71680FPGA bitstream (Datasheet says maximum size is 533KBit, so this is a bit large)
0x3d8000x3ffff10240Logo (bmp, 256x64, 4 bit)
Note: The flash base address is 0x08000000, but is mirrored by the chip at 0x00000000 when BOOT0 is low.
  1. Seeedstudio Blog [6]
  2. More photos on flickr [7]
  3. DS203 application in BMW inspection (Chinese, translated automatically in to english) [Original page ] - Some guys working for BMW inspected the car with a DSO203, besides the palm size and handy performance, DSO203 operates perfectly in inspecting the BWM bus:FlexRay.

Resources


Help us make it better

Thank you for choosing Seeed. A couple of months ago we initiated a project to improve our documentation system. What you are looking at now is the first edition of the new documentation system. Comparing to the old one, here is the progresses that we made:
  • Replaced the old documentation system with a new one that was developed from Mkdocs, a more widely used and cooler tool to develop documentation system.
  • Integrated the documentation system with our official website, now you can go to Bazaar and other section like Forum and Community more conveniently.
  • Reviewed and rewrote documents for hundreds of products for the system’s first edition, and will continue migrate documents from old wiki to the new one.
An easy-to-use instruction is as important as the product itself. We are expecting this new system will improve your experience when using Seeed’s products. However since this is the first edition, there are still many things need to improve, if you have any suggestions or findings, you are most welcome to submit the amended version as our contributor or give us suggestions in the survey below, Please don’t forget to leave your email address so that we can reply.
Happy hacking

DSO Nano/gcc



DSO Nano/gcc

Introduction

How to build the DSO Nano firmware using gcc

The DSO Nano firmware can be build with a gcc toolchain. The gcc-specific files reside in the project/gcc folder of the firmware source code tree.

Get a ARM cross-building gcc toolchain

The ARM toolchain most of us use is the GCC from ARM at <https://launchpad.net/gcc-arm-embedded>.
For Linux, you can choose the tarball or the installer. The latter is a much larger download than the former, for some reason. In any case make sure you have the toolchain’s “bin” directory in your path. For example, if you extracted the tarball to /opt, type this in your shell, or add it to your .bashrc or .pam_environment:
PATH=/opt/gcc-arm-none-eabi-4_6-2012q2/bin:$PATH
Once you have the toolchain set up correctly, simply typing:
arm-none-eabi-gcc -v
should list the compiler version and the options it was built with. If you instead get an error, please fix your toolchain installation before continuing.
If you can not find a pre-built ARM toolchain for your platform, or otherwise want to build the toolchain yourself, you can download the source or check out https://open-bldc.org/wiki/Building_ARM_Toolchain

Get and build the firmware source code

For now, get the code from Tormod’s gitorious tree:
git clone [git://gitorious.org/dsonano/dso-firmware.git](git://gitorious.org/dsonano/dso-firmware.git)
cd dso-firmware
If you later want to update your tree to latest git:
git pull

Compile the application part

cd DS0201_APP/project/gcc
make

Compile the library part

cd ../../../DS0201_LIB/project/gcc
make clean
make

Testing

Use Dfu-util to download the dso-lib.bin and dso-app.bin files to your Nano V1 or V2. For the Nano V3 model, copy the dso-lib.hex and dso-app.hex one at a time to the DFU virtual USB drive.

Help us make it better

Thank you for choosing Seeed. A couple of months ago we initiated a project to improve our documentation system. What you are looking at now is the first edition of the new documentation system. Comparing to the old one, here is the progresses that we made:
  • Replaced the old documentation system with a new one that was developed from Mkdocs, a more widely used and cooler tool to develop documentation system.
  • Integrated the documentation system with our official website, now you can go to Bazaar and other section like Forum and Community more conveniently.
  • Reviewed and rewrote documents for hundreds of products for the system’s first edition, and will continue migrate documents from old wiki to the new one.
An easy-to-use instruction is as important as the product itself. We are expecting this new system will improve your experience when using Seeed’s products. However since this is the first edition, there are still many things need to improve, if you have any suggestions or findings, you are most welcome to submit the amended version as our contributor or give us suggestions in the survey below, Please don’t forget to leave your email address so that we can reply.
Happy hacking

DSO Nano/Qemu gdb



DSO Nano/Qemu gdb

Introduction

Running STM32 code on the qemu emulator

With the qemu emulator you can run and debug arm code without any arm processor!
You can load the code onto the emulator, connect the gdb debugger and step through the code. Of course, peripherals, timers and other microcontroller components will not be emulated, but it is helpful for verifying some of the code.
You will need to run the qemu-system-arm which is part of the QEMU project. On Debian/Ubuntu it is included in the qemu-system package (or qemu-kvm-extras in older versions).

Building qemu-system-arm (optional)

If there is no distribution packages for your system, or the packaged version is older than 0.13, it is recommended that you build it yourself:
wget [http://download.savannah.gnu.org/releases/qemu/qemu-0.13.0.tar.gz](http://download.savannah.gnu.org/releases/qemu/qemu-0.13.0.tar.gz) tar xzf qemu-0.13.0.tar.gz cd qemu-0.13.0 ./configure --disable-kvm --enable-debug --target-list=arm-softmmu --audio-card-list= --audio-drv-list= make

You can now run it directly from the arm-softmmu folder, unless you want to install it to e.g. /usr/local/bin.

Note on STM32 support

The STM32 microcontroller in the DSO Nano uses an ARM cortex-m3 core. The qemu-system-arm does not know the ROM (flash) layout of the STM32. In particular, it does not read out the stack and reset vector from the 0x08000000 address. But if your elf file correctly designates the reset handler as entry point, it will use this as the starting address. However you will have to set the stack pointer (sp) manually.

Start the emulator

Start the qemu emulator and its internal gdb server (-s option), loading your elf file as a “kernel”:
qemu-system-arm -cpu cortex-m3 -S -s -singlestep -nographic -m 513 -kernel dso-lib.elf
The “-m 513” option makes a memory space that includes the 0x2000000 RAM addresses of the STM32.
Start up gdb (the one from your ARM toolchain!) and connect to the qemu emulator:
arm-none-eabi-gdb dso-lib.elf
(gdb) target extended-remote localhost:1234
(gdb) set $sp = 0x20005000
(gdb) where
You can now start stepping through the program, just some examples
(gdb) display/i $pc
(gdb) stepi
(gdb) next
(gdb) break main.c:23
(gdb) x/16wx 0x20000000
(gdb) cont
(gdb) info reg
(gdb) info variables
(gdb) print *pProperty

Help us make it better

Thank you for choosing Seeed. A couple of months ago we initiated a project to improve our documentation system. What you are looking at now is the first edition of the new documentation system. Comparing to the old one, here is the progresses that we made:
  • Replaced the old documentation system with a new one that was developed from Mkdocs, a more widely used and cooler tool to develop documentation system.
  • Integrated the documentation system with our official website, now you can go to Bazaar and other section like Forum and Community more conveniently.
  • Reviewed and rewrote documents for hundreds of products for the system’s first edition, and will continue migrate documents from old wiki to the new one.
An easy-to-use instruction is as important as the product itself. We are expecting this new system will improve your experience when using Seeed’s products. However since this is the first edition, there are still many things need to improve, if you have any suggestions or findings, you are most welcome to submit the amended version as our contributor or give us suggestions in the survey below, Please don’t forget to leave your email address so that we can reply.
Happy hacking

DSO Nano/OpenOCD gdb



DSO Nano/OpenOCD gdb

Introduction

Debugging with OpenOCD and gdb

Please use openocd 4.0 or newer.
This example assumes you have a Segger J-Link compatible JTAG adapter between your computer and the device (or dev board) you are debugging. It is possible to use an SWD (ST-Link) adapter instead, for this use openocd 0.7 or newer.
Start the openocd server with configuration files matching your hardware:
openocd -f interface/jlink.cfg -f target/stm32.cfg
Or, if you are using SWD:
openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg
In a second window, start an interactive session with openocd:
telnet localhost 4444
This seems to be necessary to avoid “target is not halted” errors and other trouble later:
reset_config trst_and_srst
Stop the target (the arm processor):
reset halt
If you have not already flashed the binary, using for instance dfu-util, you can do it over JTAG like this:
reset init
flash write_image erase dso-lib.hex 0 ihex
reset halt
In a third window, start gdb or gdbtui:
arm-none-eabi-gdb
(gdb) file dso-lib.elf
(gdb) target remote localhost:3333"
(gdb) load dso-lib.elf
You should now be able to run and debug:
(gdb) set $pc = Reset_Handler
(gdb) display/i $pc
(gdb) stepi

Help us make it better

Thank you for choosing Seeed. A couple of months ago we initiated a project to improve our documentation system. What you are looking at now is the first edition of the new documentation system. Comparing to the old one, here is the progresses that we made:
  • Replaced the old documentation system with a new one that was developed from Mkdocs, a more widely used and cooler tool to develop documentation system.
  • Integrated the documentation system with our official website, now you can go to Bazaar and other section like Forum and Community more conveniently.
  • Reviewed and rewrote documents for hundreds of products for the system’s first edition, and will continue migrate documents from old wiki to the new one.
An easy-to-use instruction is as important as the product itself. We are expecting this new system will improve your experience when using Seeed’s products. However since this is the first edition, there are still many things need to improve, if you have any suggestions or findings, you are most welcome to submit the amended version as our contributor or give us suggestions in the survey below, Please don’t forget to leave your email address so that we can reply.
Happy hacking