Microchip Technology

user Occupation hasn't been added


  • IEEE-488 to USB converter

  • Created: Sep 18, 2016

    • view470
    • comment0
    • bookmark0
    • fork0


No description available.


This design is an IEEE-488 to USB adapter that allows you to connect an IEEE-488 capable device through a USB port of your computer. IEEE-488 is a short-range digital communications 8-bit parallel multi-master interface bus specification. It was created as HP-IB (Hewlett-Packard Interface Bus) and is commonly called GPIB (General Purpose Interface Bus). The PIC18F2550 is used to manage the IEEE-488 protocol and signals. The microcontroller was chosen because of its advantages, namely: high computational performance at an economical price with the addition of high endurance, and Enhanced Flash program memory. In addition to these features, the PIC18F2550 introduces design enhancements that make these microcontrollers a logical choice for many high-performance, power sensitive applications.

No dedicated GPIB-chips are used; instead the standard PIC ports with pull-ups are used. This works well, unless you intend to run a lot of instruments on the IEEE-488 Bus or intend to run at very high speeds. LEDs are visual feedback on bus activity but these can be omitted. We see NRFD going high when all listeners are ready to accept data in tracing the IEEE-488 three-way handshake (0=DAV, 1=NRFD, 2=NDAC, 3 = Data). At that point the talker puts data on the bus and pulls DAV low. When the last listener has read the data NDAC goes high and milliseconds later DAV, then the cycle repeats. Incoming data is accepted (up to a maximum of 128 characters) and passed back to the PC when the line is terminated by an LF or an EOI.

Note that when sending data to the instrument, the buffer is 64 bytes. If the data contains characters that need to be escaped, a safe assumption is to send a maximum of 32-1 non-escaped (or 64-1 escaped) characters, followed by a LF. Next version of Firmware, currently in testing will remove this limitation and allow the user to send binary data of unlimited length.



  • No components added