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

1"""SPI Transport Implementation 

2 

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

4""" 

5 

6from tropicsquare.transports import L1Transport 

7 

8 

9class SpiTransport(L1Transport): 

10 """L1 transport for MicroPython machine.SPI. 

11 

12 :param spi: SPI interface object (e.g., machine.SPI instance) 

13 :param cs: Chip select pin object (e.g., machine.Pin instance) 

14 """ 

15 

16 

17 def __init__(self, spi, cs): 

18 """Initialize SPI transport. 

19 

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) 

29 

30 

31 def _transfer(self, tx_data: bytes) -> bytes: 

32 """SPI transfer using write_readinto. 

33 

34 :param tx_data: Data to transmit 

35 

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) 

42 

43 

44 def _read(self, length: int) -> bytes: 

45 """SPI read operation. 

46 

47 :param length: Number of bytes to read 

48 

49 :returns: Read data 

50 """ 

51 return self._spi.read(length) 

52 

53 

54 def _cs_low(self) -> None: 

55 """Activate chip select (set to 0).""" 

56 self._cs.value(0) 

57 

58 

59 def _cs_high(self) -> None: 

60 """Deactivate chip select (set to 1).""" 

61 self._cs.value(1)