X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/30d6cd0ac14df67350f14f67a5fa52eb43e59838..c2bc4a90827f28abb6b51eae659a1f80a65c0497:/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py diff --git a/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py b/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py index 69fe66f..d5f1e91 100644 --- a/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py +++ b/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py @@ -1,5 +1,13 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT """SPI Class for FTDI MPSSE""" from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.pin import Pin +from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.url import ( + get_ft232h_url, + get_ft2232h_url, +) + # pylint: disable=protected-access class SPI: @@ -7,17 +15,17 @@ class SPI: MSB = 0 - def __init__(self, id=None): + def __init__(self, spi_id=None): # pylint: disable=import-outside-toplevel from pyftdi.spi import SpiController # pylint: enable=import-outside-toplevel self._spi = SpiController(cs_count=1) - if id is None: - self._spi.configure("ftdi://ftdi:ft232h/1", frequency=frequency) - else - self._spi.configure("ftdi://ftdi:ft2232h/{}".format(id+1), frequency=frequency) + if spi_id is None: + self._spi.configure(get_ft232h_url()) + else: + self._spi.configure(get_ft2232h_url(spi_id + 1)) self._port = self._spi.get_port(0) self._port.set_frequency(100000) self._port._cpol = 0 @@ -63,13 +71,15 @@ class SPI: chunk_end = chunk_start + self._spi.PAYLOAD_MAX_LENGTH self._port.write(buf[chunk_start:chunk_end]) if rest: - self._port.write(buf[-1 * rest :]) + rest_start = start + chunks * self._spi.PAYLOAD_MAX_LENGTH + self._port.write(buf[rest_start:end]) # pylint: disable=unused-argument def readinto(self, buf, start=0, end=None, write_value=0): """Read data from SPI and into the buffer""" end = end if end else len(buf) - result = self._port.read(end - start) + buffer_out = [write_value] * (end - start) + result = self._port.exchange(buffer_out, end - start, duplex=True) for i, b in enumerate(result): buf[start + i] = b