1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Parallel Port

Discussion in 'Papers' started by Stéphane Lenclud, May 31, 2017.

  1. Stéphane Lenclud

    Stéphane Lenclud Founder Staff Member

    Purpose & Scope

    Here we share our experience and document our research about parallel port.

    Motivation

    Parallel ports have all but disappeared from main stream computing hardware so why bother?

    As it turns out I have a rather obsessional interest for VFD modules and their retro electronics looks.
    I notably did quite a bit of work to make good use of various such modules from Futaba, see CIC on MediaPortal for instance.
    However the frame rate of the larger Futaba VFD modules is rather abysmal even though we used a USB interface.
    The perfectionist in me was left frustrated with Futaba hardware. Asking Futaba about it, to see if they could somehow improve their firmware, yield no result since they obviously had no interest in helping out a technology enthusiast, even though it would have been mutually beneficial. Moreover the USB interface their display implement tends not to work on modern motherboards unless they have a BIOS option to disable xHCI.

    Looking around on the market for VFD hardware I found out that Noritake did offer modules with similar mechanical specifications and a DMA mode that should enable high frame rates when connected over a parallel port interface. Thus I set out to understand and use parallel ports on Windows.

    PC Hardware

    PCI Express extension cards

    The following PCIe hardware did not work with my Noritake VFD as the voltage on the Strobe channel only goes up to 1.8v:
    This low voltage Strobe issue is also mentioned on the Wikipedia page.
    Exsys also makes such a PCIe card, I have yet to check if it has that low voltage issue.

    Motherboard connector

    Some motherboards have an internal parallel port connector with a smaller pitch than the standard 2.54mm.
    Ribbon cable for those can be hard to find. I found information about them on this page in German.
    I ended up ordering some of those cables there.

    Various standards

    Over the years there has been various standards for parallel ports from Standard Parallel Port (SPP) to Extended Capabilities Port (ECP). That later allowing for compatibility modes through its Extended Capabilities Register.

    Programming

    Windows

    To get pin level control on Windows you need to use a specific driver inpout32 being the most popular apparently.
    If you are connected to a device that's doing Standard Parallel Port handshake, also called Centronics, then you should be able to use the built-in Windows drivers.

    In theory you should be able use your parallel port using CreateFile but that won't give you pin level control.

    Tools

    Doug developed that Parallel Port Tester for Windows. He even published the code he used to work out ports addresses on your Windows system.

    Pinout

    parallel-port-pinout.jpg

    The pinout of the male connector is obviously reversed as it needs to mate with the female.

    DB25 PINIDC PINSignal
    11Strobe
    23Data0
    35Data1
    47Data2
    59Data3
    611Data4
    713Data5
    815Data6
    917Data7
    1019Ack
    1121Busy
    1223Paper-Out
    1325Select
    142Linefeed
    154Error
    166Reset
    178Select-Printer
    1810Ground
    1912Ground
    2014Ground
    2116Ground
    2218Ground
    2320Ground
    2422Ground
    2524Ground

    Tester circuit

    Here is a tester circuit we used to validate our controller implementation:
    parallel-port-tester.jpg
    This circuit was based on the following design from xlentelectronics.
    lpttest-schematic.jpg

    Conclusions

    Parallel ports are a dying breed and I now understand why:
    • Printers, scanners and other peripherals have long moved on to USB or RJ45 connections.
    • It also does not support GPIO use case reliably due to poor hardware and electrical standards, lack of low level APIs and archaic protocols.
    For my GPIO use case I'll be looking at a solution based on a USB micro-controller such as Arduino micro hoping it can provide descent performance.

    References

     
    Last edited: Jun 22, 2017

Share This Page