This commit is contained in:
Konstantin Lampalzer 2021-08-22 13:07:37 +02:00
parent 4bf031a6c7
commit 530ddd8be7
7 changed files with 62 additions and 283 deletions

62
compLib/Spi.py Normal file
View file

@ -0,0 +1,62 @@
import spidev
from threading import Thread, Lock
from enum import Enum
# from LogstashLogging import logstash_logger
SPI_BUS = 1
SPI_DEVICE = 2
SPI_SPEED = 1000000
SPI_BUFFER_SIZE = 32
spi = spidev.SpiDev()
spi.open(SPI_BUS, SPI_DEVICE)
spi.max_speed_hz = SPI_SPEED
spi.mode = 0
spi.bits_per_word = 8
spi_mutex = Lock()
class Spi(object):
@staticmethod
def transfer(tx_buffer: list):
write_reg = tx_buffer[1]
print(tx_buffer)
spi.xfer(tx_buffer)
rx_buffer = spi.xfer([0] * 32)
if rx_buffer[1] != write_reg:
# logstash_logger.error(f"SPI error during write to register {tx_buffer[0]}!")
print(f"SPI error during write to register {write_reg}!")
return rx_buffer
@staticmethod
def read(reg: int, length: int):
tx_buf = [0] * SPI_BUFFER_SIZE
tx_buf[0] = 0
tx_buf[1] = reg
tx_buf[2] = length
rx_buf = Spi.transfer(tx_buf)
return int.from_bytes(rx_buf[2:2 + length], byteorder='big', signed=False)
@staticmethod
def write(reg: int, length: int, value: int):
tx_buf = [0] * SPI_BUFFER_SIZE
tx_buf[0] = 1
tx_buf[1] = reg
tx_buf[2] = length
pos = 3
for i in value.to_bytes(length, 'big'):
tx_buf[pos] = i
pos += 1
rx_buf = Spi.transfer(tx_buf)
return int.from_bytes(rx_buf[2:2 + length], byteorder='big', signed=False)