Program Listing for File spi3w.py
↰ Return to documentation for file (src/framework/microPython/lib/spi3w.py)
# spi3w_ard.py
# MicroPython 3-wire SPI cover
# Author: Infineon Technologies AG
# Version: 4.0.0
# Copyright: 2020-2024 Infineon Technologies AG
# SPDX-License-Identifier: MIT
from machine import Pin, SPI
import time
class SPI3W:
def __init__(self, spi_num=0):
# self.mCS = Pin(15, Pin.OUT) # Default CS pin
# self.mMISO = Pin(12) # Default MISO pin
# self.mMOSI = Pin(13) # Default MOSI pin
# self.mSCK = Pin(14) # Default SCK pin
self.mSpiNum = spi_num
#self.spi = SPI(spi_num, baudrate=1000000, polarity=0, phase=1, bits=8, firstbit=SPI.MSB)
def begin(self, misoPin='P9_1', mosiPin='P9_0', sckPin='P9_2', cs='P9_3'):
#self.mMOSI = Pin(mosiPin)
#self.mMISO = Pin(misoPin)
#self.mSCK = Pin(sckPin)
self.setCSPin(cs)
self.mCS.value(1)
#self.spi = SPI(baudrate=1000000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=sckPin)
self.spi = SPI(baudrate=1000000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=sckPin, mosi=mosiPin, miso=misoPin)
def setCSPin(self, cs):
self.mCS = Pin(cs, Pin.OUT)
def trigger_update(self):
self.mSCK.off()
self.mMOSI.on()
self.mCS.off()
# grace period for register snapshot
time.sleep_us(5)
self.mCS.on()
def send_receive(self, sent_data, size_of_sent_data, received_data, size_of_received_data):
data_index = 0
# Send via TX
self.mCS.value(0)
#self.mMISO.init(Pin.IN)
#self.mMOSI.init(Pin.OUT)
print("sent_data: ", sent_data)
print("size_of_sent_data: ", size_of_sent_data)
print("received_data: ", received_data)
print("size_of_received_data: ", size_of_received_data)
for data_index in range(size_of_sent_data):
#self.spi.write_readinto(sent_data[data_index], received_data[data_index:data_index+2])
received_data[0] = self.spi.write_readinto(int(sent_data[data_index]).to_bytes(2, 'big'), bytearray(2))
# Receive via RX
#self.mMISO.init(Pin.OUT)
#self.mMOSI.init(Pin.IN)
time.sleep_us(5)
for data_index in range(size_of_received_data):
received_data[data_index] = int.from_bytes(self.spi.read(2), 'big')
self.mCS.value(1)