/pyusbiss

Python API for USB-ISS Multifunction USB Communications Module

Primary LanguagePythonMIT LicenseMIT

pyusbiss

A Python API module for interfacing with USB-ISS multifunction USB Communication Module.

From the USB-ISS's webpage:

The USB-ISS Multifunction USB Communications Module provides a complete interface between your PC and the I2C bus, SPI bus, a Serial port and general purpose Analogue Input or Digital I/O. The module is powered from the USB. Operating voltage is selectable between 3.3v and 5v and can supply up to 80mA at 5v for external circuitry from a standard 100mA USB port.

Features

Planned features

  • Configure USB-ISS to different operating modes; I2C, SPI, I/O and serial
    • For each mode, the API will mimic the popular APIs such as py-spidev for SPI by having same method and properties names. These names will be used in duck typing. This will ensure miminal adaption of applications wishing to use USB-ISS for prototyping and testing.
  • Query status of USB-ISS
  • Send bytes to and read from components via USB-ISS

Current features

  • Functional USBISS driver
  • Functional SPI driver
  • Other modes are not implemented.

Installation

pip install pyusbiss

Usage

  • USBISS only

Connect to your USB-ISS and get information about your USB-ISS.

from usbiss.usbiss import USBISS

port = 'COM4' # Windows
port = '/dev/ttyACM0' # Linux

cxn = USBISS(port)
print(repr(cxn)))
  • SPI mode

Initiate USB-ISS with SPI mode and open a port.

from usbiss.spi import SPI

spi = SPI(port)

spi.mode = 1
spi.max_speed_hz = 500000

print(repr(spi._usbiss))

# SPI transaction

response = spi.xfer([0x00, 0x00])
  • I2C mode

    TODO

  • I/O mode

    TODO

  • Serial mode

    TODO

More Information

Applications

  • Alphasense OPC via dhhagan's py-opc module using the SPI protocol.

Credits

The project was developed during a NERC's placement at University of Leeds.

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

Inspired by Waggle's alphasense.py, where most of USB-ISS functions were copied over.