I know there are quite a few of these being developed, but I thought this was sufficiently different to warrant publishing.
As the name suggests this is a USB to GPIB interface, along the lines of the Prologix adapter (or many other examples.)
The reason I started building this was that I couldn't find anything that was sensibly priced or easy to use and it seemed like a fun and fairly straighforward project ... there is no commercial intent here, I'm very happy to open source it if anyone finds it useful.
The basic idea is:
- Driven by a PSoC 4200L MPU
- No interface chips (to keep the cost down)
- Supports USBUART already, potential for USBTMC
- EEPROM support for storing settings
- Potential to hardware accelerate the GPIB handshake
- More usable interactive interface (for setup etc)
- Open drain GPIO's allow detection of GPIB device
- Low cost, not much more than the CPU and connector.
The PSoC has everything pretty much built in including full speed USB, so UART over USB capability and potential for USBTMC, it should be able to do both at the same time with a composite device configuration.
As far as cost goes ... there's not a lot to it... the CPU, the main connector, a 10-way programming header, the USB socket, a poly-fuse, a diode, and a few decoupling capacitors ... the led's and button are optional and not used at the moment.
Using mouser/digikey etc, even for a one-off, it should be not far off £10 in components, and with connectors from eBay or Aliexpress you can shave another couple of pounds off. Five boards from JLCPCB are $2 plus shipping. It's pretty easily hand soldered.
Obviously without the standard GPIB interface IC's it's not technically meeting the GPIB spec, so it won't support a full length bus with lots of devices ... I've only tested with one device currently, but I would be suprised if it didn't work with a handful and sensible cable lengths.
The programmable hardware aspect of the PSoC means that you can build the handshake into hardware and acheive improved speeds, certainly better than you get with bitbanging ... I haven't done this yet, it's next on my list.
Currently I'm implementing the Prologix command set, and I've added some features to make the interactive experience a bit better, simple command line editing, last command recall etc. It won't be used once in an automated system, but it makes setting it up and testing much easier.
I've also added a few other bits to improve usability, for example the option of auto read-after-write only if the last command included a "?".
I've only tested it against a 34401 so far, I've got a few other devices to test with (K2000, Prema DMM, Datron calibrators) but I certainly don't have a wide range, so this is somewhere I could do with some help, specifically with more complex devices, subaddressing, binary data transfers etc.
Next things I'm planning on looking at:
- Finish off command set
- Hardware acceleration of handshake / DMA data transfer
- Bootloader support to allow firmware upgrade over USB
- Design of a new board to fit into a sheilded connector (potential)
- USBTMC and Composite USB
If there's any interest, I'll stick the code and KiCad files into GitHub ... if not, that's fine also!
Lee.