0% found this document useful (0 votes)
60 views

GitHub - OnionIoT - Python-Spidev Python Module For Interfacing With SPI Devices

This Python module allows interfacing with SPI devices from user space via the Linux spidev driver. It provides functions for opening/closing the SPI device, writing/reading bytes, and performing full-duplex and half-duplex transactions. Installation instructions and examples are provided for the Raspberry Pi and Onion Omega2 boards.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views

GitHub - OnionIoT - Python-Spidev Python Module For Interfacing With SPI Devices

This Python module allows interfacing with SPI devices from user space via the Linux spidev driver. It provides functions for opening/closing the SPI device, writing/reading bytes, and performing full-duplex and half-duplex transactions. Installation instructions and examples are provided for the Raspberry Pi and Onion Omega2 boards.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

GitHub - OnionIoT/python-spidev: Python module for interfacing with ... https://github.

com/OnionIoT/python-spidev

OnionIoT / python-spidev Public

forked from doceme/py-spidev

Python module for interfacing with SPI devices

GPL-2.0 license

6 stars 203 forks

Star Notifications

Code Pull requests Actions Projects Wiki Security Insights

1 of 8 11/10/2022, 1:08 PM
GitHub - OnionIoT/python-spidev: Python module for interfacing with ... https://github.com/OnionIoT/python-spidev

master Go to file

This branch is 30 commits ahead, 31 commits behind doceme:master. Contribute

Lazar updated readme to explicitly call out half duplex and full du… … on Apr 23, 2020 97

View code

README.md

2 of 8 11/10/2022, 1:08 PM
GitHub - OnionIoT/python-spidev: Python module for interfacing with ... https://github.com/OnionIoT/python-spidev

3 of 8 11/10/2022, 1:08 PM
GitHub - OnionIoT/python-spidev: Python module for interfacing with ... https://github.com/OnionIoT/python-spidev

4 of 8 11/10/2022, 1:08 PM
GitHub - OnionIoT/python-spidev: Python module for interfacing with ... https://github.com/OnionIoT/python-spidev

Releases
Python Spidev
No releases published

This project contains a python module for interfacing with SPI devices from user space
via the spidev linux kernel driver.
Packages

No packages
This ispublished
a modified version of the code originally found here

All code is GPLv2 licensed unless explicitly stated otherwise.


Languages
More Details on Use with the Omega2
C 94.9% Makefile 5.1%
Full-duplex SPI transmissions are not supported. This is due to the MediaTek MT7688
SoC used in the Omega2 family. Half-duplex SPI transmissions ARE supported. See the
Half-Duplex Transmissions section below.

See more details here:

• https://onion.io/2bt-brand-new-os-release/#spiimprovement

5 of 8 11/10/2022, 1:08 PM
GitHub - OnionIoT/python-spidev: Python module for interfacing with ... https://github.com/OnionIoT/python-spidev

• http://community.onion.io/topic/3179/spi-bus-in-python/17

Installation on Omega2
The spidev module is available for Python2 and Python3, the installation
commands are slightly different.

Connect to the Omega's command line and run the following commands to install the
Python2 module:

opkg update
opkg install python-light python-spidev

To install the Python3 module, run this set of commands

opkg update
opkg install python3-light python3-spidev

Usage

import spidev
spi = spidev.SpiDev()
spi.open(bus, device)
to_send = [0x01, 0x02, 0x03]
spi.xfer(to_send)

Settings

import spidev
spi = spidev.SpiDev()
spi.open(bus, device)

# Settings (for example)


spi.max_speed_hz = 5000
spi.mode = 0b01

6 of 8 11/10/2022, 1:08 PM
GitHub - OnionIoT/python-spidev: Python module for interfacing with ... https://github.com/OnionIoT/python-spidev

...

• bits_per_word
• cshigh
• loop - Set the "SPI_LOOP" flag to enable loopback mode
• no_cs - Set the "SPI_NO_CS" flag to disable use of the chip select (although the
driver may still own the CS pin)
• lsbfirst
• max_speed_hz
• mode - SPI mode as two bit pattern of clock polarity and phase [CPOL|CPHA], min:
0b00 = 0, max: 0b11 = 3
• threewire - SI/SO signals shared

Methods
Connects to the specified SPI device, opening /dev/spidev<bus>.<device>

open(bus, device)

Read n bytes from SPI device. Returns list of bytes read by SPI controller

readbytes(n)

Writes a list of values to SPI device.

writebytes(list of values)

Performs an SPI transaction. Chip-select should be released and reactivated between


blocks. Delay specifies the delay in usec between blocks. Returns list of bytes read by
SPI controller.

7 of 8 11/10/2022, 1:08 PM
GitHub - OnionIoT/python-spidev: Python module for interfacing with ... https://github.com/OnionIoT/python-spidev

xfer(list of values[, speed_hz, delay_usec, bits_per_word])

Performs an SPI transaction. Chip-select should be held active between blocks. Returns
list of bytes read by SPI controller.

xfer2(list of values[, speed_hz, delay_usec, bits_per_word])

Disconnects from the SPI device.

close()

Half-Duplex Transmissions
Performs a half-duplex SPI transaction. Chip-select should be held active between
blocks. Returns list of bytes read by SPI controller.

Use this function when the intent is to write a number of bytes and then
immediately read a number of bytes (register reads for example)

xfer3(list of values to be written, number of bytes to read [, speed_hz,


delay_usec, bits_per_word])

8 of 8 11/10/2022, 1:08 PM

You might also like