User Tools

Site Tools



founder: nephirus
depends on:
software license:
hardware license:

~~META: status = finished &relation firstimage = :project:gpib1.JPG ~~

MIGHT stands for Multi-Interface GPIB Handling Tool. Its purpose is to provide a way to control GPIB enabled devices using more common interfaces (i.e. Ethernet, USB, I2C, SPI, etc.). GPIB interface can be found on many lab tools - power supply units, signal generators, multi-meters, oscilloscopes, etc. Unfortunately, commercially available controllers cost from $150+ (low-end) to several thousand dollars (hi-end). Thus not many hobbyists can afford those. MIGHT aims to be low-cost device, so you can spend your money on some more important stuff :-).


Current version (mk3) uses LM3S9U96, which is sold in reasonable quantities, and has USB host support, CAN interface and Ethernet. PCBs are from Seeed Studio Fusion PCB service ($25 for 10 boards).

FIXME add photos

Programming the MCU

Stellaris microcontrollers are either factory-programmed with serial flash bootloader or have bootloader in ROM. ROM bootloader is loaded if the flash memory is empty or when conditions specified in BOOTCFG register are met.

TI provides a flash programming utility (Windows-only though). If you want to implement your own loader, there is an application note describing the protocol used for communication with bootloader.

If you somehow screwed up the bootloader (or you are just uncomfortable with using serial port), you can use JTAG interface. There are plenty of JTAG adapters to be found on the Internet, you'll probably want one with OpenOCD support.

JTAG flash programming example

Launch OpenOCD with proper arguments (substitute flossjtag-noeeprom.cfg with config for your programmer).

nephirus@anachronos:~> openocd -f /usr/share/openocd/scripts/interface/flossjtag-noeeprom.cfg -f /usr/share/openocd/scripts/target/stellaris.cfg

Connect to OpenOCD daemon.

nephirus@anachronos:~> telnet localhost 4444

Flash the image.

flash write_image /path/to/image.bin

Known issues

LDO and VDDC pins are not connected on board

Due to confusing description of pin function in System Design Guidelines for Stellaris Microcontrollers, VDDC power rail is not connected to internal LDO output.


Connect pins 7, 38, 88.


Sources can be found at my Github repo.

Previous versions


Proof-of-concept version. mbed-based board. mbed was chosen for its on-board Ethernet PHY chip. First prototype was able to communicate with oscilloscope Tektronix TDS 2002, using serial port or Ethernet on PC side.

However, mbed environment is not quite user-friendly (one has to choose between GCC-based toolchain with only basic libraries and awful online IDE with many libraries), so this approach was abandoned for TI Stellaris-based board.

FIXME add photos


Second version was built around LM3S8938. Unfortunately, there were some issues with vias on homemade dual-sided PCB which led to development of third version.

FIXME add photos

project/might/start.txt · Last modified: 2016/11/28 01:38 by ruza