Coverage for tropicsquare / transports / spi.py: 0%
17 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-27 21:24 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-27 21:24 +0000
1"""SPI Transport Implementation
3This module provides SPI transport implementation for MicroPython machine.SPI interface.
4"""
6from tropicsquare.transports import L1Transport
9class SpiTransport(L1Transport):
10 """L1 transport for MicroPython machine.SPI.
12 :param spi: SPI interface object (e.g., machine.SPI instance)
13 :param cs: Chip select pin object (e.g., machine.Pin instance)
14 """
17 def __init__(self, spi, cs):
18 """Initialize SPI transport.
20 :param spi: SPI interface object
21 :type spi: machine.SPI
22 :param cs: Chip select pin object
23 :type cs: machine.Pin
24 """
25 self._spi = spi
26 self._cs = cs
27 # Initialize CS to default state (high = inactive)
28 self._cs.value(1)
31 def _transfer(self, tx_data: bytes) -> bytes:
32 """SPI transfer using write_readinto.
34 :param tx_data: Data to transmit
36 :returns: Received data
37 """
38 rx_buffer = bytearray(len(tx_data))
39 tx_buffer = bytearray(tx_data)
40 self._spi.write_readinto(tx_buffer, rx_buffer)
41 return bytes(rx_buffer)
44 def _read(self, length: int) -> bytes:
45 """SPI read operation.
47 :param length: Number of bytes to read
49 :returns: Read data
50 """
51 return self._spi.read(length)
54 def _cs_low(self) -> None:
55 """Activate chip select (set to 0)."""
56 self._cs.value(0)
59 def _cs_high(self) -> None:
60 """Deactivate chip select (set to 1)."""
61 self._cs.value(1)