Source code for tropicsquare.transports.spi

"""SPI Transport Implementation

This module provides SPI transport implementation for MicroPython machine.SPI interface.
"""

from tropicsquare.transports import L1Transport


[docs] class SpiTransport(L1Transport): """L1 transport for MicroPython machine.SPI. :param spi: SPI interface object (e.g., machine.SPI instance) :param cs: Chip select pin object (e.g., machine.Pin instance) """
[docs] def __init__(self, spi, cs): """Initialize SPI transport. :param spi: SPI interface object :type spi: machine.SPI :param cs: Chip select pin object :type cs: machine.Pin """ self._spi = spi self._cs = cs # Initialize CS to default state (high = inactive) self._cs.value(1)
def _transfer(self, tx_data: bytes) -> bytes: """SPI transfer using write_readinto. :param tx_data: Data to transmit :returns: Received data """ rx_buffer = bytearray(len(tx_data)) tx_buffer = bytearray(tx_data) self._spi.write_readinto(tx_buffer, rx_buffer) return bytes(rx_buffer) def _read(self, length: int) -> bytes: """SPI read operation. :param length: Number of bytes to read :returns: Read data """ return self._spi.read(length) def _cs_low(self) -> None: """Activate chip select (set to 0).""" self._cs.value(0) def _cs_high(self) -> None: """Deactivate chip select (set to 1).""" self._cs.value(1)