]> Repositories - Adafruit_Blinka-hackapet.git/blob - src/adafruit_blinka/microcontroller/generic_micropython/spi.py
Merge pull request #549 from makermelissa/main
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / generic_micropython / spi.py
1 """SPI Class for Generic MicroPython"""
2 from machine import SPI as _SPI
3
4 # pylint: disable=protected-access, no-self-use
5 class SPI:
6     """SPI Class for Generic MicroPython"""
7
8     MSB = _SPI.MSB
9     LSB = _SPI.LSB
10
11     def __init__(self, portId, baudrate=100000):
12         self._frequency = baudrate
13         self._spi = _SPI(portId)
14
15     # pylint: disable=too-many-arguments,unused-argument
16     def init(
17         self,
18         baudrate=1000000,
19         polarity=0,
20         phase=0,
21         bits=8,
22         firstbit=_SPI.MSB,
23     ):
24         """Initialize the Port"""
25         self._frequency = baudrate
26         self._spi.init(
27             baudrate=baudrate,
28             polarity=polarity,
29             phase=phase,
30             bits=bits,
31             firstbit=firstbit,
32             mode=_SPI.MASTER,
33         )
34
35     # pylint: enable=too-many-arguments
36
37     @property
38     def frequency(self):
39         """Return the current frequency"""
40         return self._frequency
41
42     def write(self, buf, start=0, end=None):
43         """Write data from the buffer to SPI"""
44         self._spi.write(buf)
45
46     def readinto(self, buf, start=0, end=None, write_value=0):
47         """Read data from SPI and into the buffer"""
48         self._spi.readinto(buf)
49
50     # pylint: disable=too-many-arguments
51     def write_readinto(
52         self, buffer_out, buffer_in, out_start=0, out_end=None, in_start=0, in_end=None
53     ):
54         """Perform a half-duplex write from buffer_out and then
55         read data into buffer_in
56         """
57         self._spi.write_readinto(
58             buffer_out,
59             buffer_in,
60             out_start=out_start,
61             out_end=out_end,
62             in_start=in_start,
63             in_end=in_end,
64         )
65
66     # pylint: enable=too-many-arguments