Difference between revisions of "Gpibgrok"

From sigrok
Jump to navigation Jump to search
Line 33: Line 33:
** Saves effort on custom enclosure
** Saves effort on custom enclosure


== Software ==
== Firmware ==


Due to the long history of the IEEE-488 and SCPI standards, there are many devices out there supporting some earlier version of the protocol, and these will typically support commands that are vendor-specific, and syntax that is not compliant IEEE-488. Therefore supporting various device-specific or vendor-specific "quirks" will likely be a big part of real-world use-cases.
This is more of a TODO list at the moment:
* Start with libopencm3
** Add new class for USB TMC
* GPIB
** Implement functions
*** Serial poll
*** Write
*** Read
*** Reset
*** Local lockout
** Monitor and handle SRQs
* Commands
** All data is just passed thru from PC to GPIB device and back, parsing of SCPI or other protocols is not required in firmware
* Firmware update
** Use the DFU bootloader in libopencm3
** Modify to check register for boot flag instead of hardware pin
** Some special command in USB TMC can set to bootloader mode and reset processor, then when DFU is done, set flag back and boot to main


== Components ==
== Components ==

Revision as of 20:46, 15 September 2016

This page documents some ideas and information for a GPIB-USBTMC hardware interface.

NOTE: This project is on hold currently, nobody is working on it.

Motivation

There are many ways to communicate with devices that have a GPIB port, and sigrok aims to support as many of them as possible (see IEEE-488). However in this day and age the only reasonable interface for this would have to use a USB device port, since USB host ports are so ubiquitous. The USB standards include a device class specifically made for test and measurement, called the USBTMC class.

Yet most of the GPIB-USB interfaces available don't use this device class; they typically use either a proprietary protocol or serial emulation. There is only one GPIB-USBTMC interface that we know of: the TEK-USB-444 from Tektronix, and it's ridiculously overpriced at around $740.

We think we can make a GPIB-USBTMC interface that is:

  • 100% free and open source, hardware and firmware/software
  • 100% standards-compliant
  • Considerably cheaper than anything else out there (less than $50)

In addition, since we'd be making essentially a "server-side" i.e. USB device-side implementation of the USBTMC protocol, this code would be reusable in projects such as Das Oszi.

Hardware design

  • STM32L0 ARM Cortex M0
    • Built-in FS USB with crystaless operation
    • Compatible with libopencm3
    • 32 pin LQFP keeps size low and assembly easy
  • Specialty Trancievers
    • TI still makes the SN75160 (data) and SN75161 (handshake)
    • High current drive required for logic lines according to GPIB standard
    • Directional bundling of pins based on protocol simplfies firmware
  • 2 Layer PCB to keep cost low
  • Designed to fit in L-COM housing for CIB24S GPIB connector
    • Saves effort on custom enclosure

Firmware

This is more of a TODO list at the moment:

  • Start with libopencm3
    • Add new class for USB TMC
  • GPIB
    • Implement functions
      • Serial poll
      • Write
      • Read
      • Reset
      • Local lockout
    • Monitor and handle SRQs
  • Commands
    • All data is just passed thru from PC to GPIB device and back, parsing of SCPI or other protocols is not required in firmware
  • Firmware update
    • Use the DFU bootloader in libopencm3
    • Modify to check register for boot flag instead of hardware pin
    • Some special command in USB TMC can set to bootloader mode and reset processor, then when DFU is done, set flag back and boot to main

Components

GPIB connectors

GPIB protocol chips

(pretty much all of them are no longer available, or horribly expensive, or hard to get, or a combination thereof)

GPIB transceiver chips

Bill of materials

(work in progress)

Qty Device Footprint Value Refdes Digikey Mouser Comments
1 ST STM32F103C6T6A LQFP-48 ... ... 4.54€ ... ...
1 TI SN75160B ... ... ... 2.33€ ... ...
1 TI SN75162B ... ... ... 2.33€ ... ...

Resources

Volunteers

Please edit this section with your name and (public) contact details if you are interested in developing this.

  • User:Ivan747 (same nick on IRC), experience in hardware, low level firmware (but not USB). Willing to participate with the support from someone experienced in USB protocols on any kind of ARM device. Contact: ivan747[at]users.sourceforge.net.