|
30 | 30 | import time |
31 | 31 |
|
32 | 32 | from adafruit_bus_device.i2c_device import I2CDevice |
33 | | -from adafruit_register.i2c_bit import ROBit, RWBit |
34 | | -from adafruit_register.i2c_bits import ROBits, RWBits |
35 | | -from adafruit_register.i2c_struct import ROUnaryStruct |
| 33 | +from adafruit_bus_device.spi_device import SPIDevice |
| 34 | +from adafruit_register.register_accessor import I2CRegisterAccessor, SPIRegisterAccessor |
| 35 | +from adafruit_register.register_bit import ROBit, RWBit |
| 36 | +from adafruit_register.register_bits import ROBits, RWBits |
36 | 37 | from micropython import const |
37 | 38 |
|
38 | 39 | try: |
39 | 40 | import typing |
40 | 41 |
|
41 | | - from busio import I2C |
| 42 | + from busio import I2C, SPI |
| 43 | + from digitalio import DigitalInOut |
42 | 44 | except ImportError: |
43 | 45 | pass |
44 | 46 |
|
|
152 | 154 | } |
153 | 155 |
|
154 | 156 |
|
155 | | -class SPA06_003_I2C: |
| 157 | +class SPA06_003: |
156 | 158 | """ |
157 | 159 | SPA06-003 temperature and pressure sensor breakout CircuitPython driver. |
158 | 160 |
|
@@ -386,11 +388,26 @@ class SPA06_003_I2C: |
386 | 388 | 24, SPA06_003_REG_PSR_B2, 0, register_width=3, lsb_first=False, signed=True |
387 | 389 | ) |
388 | 390 |
|
389 | | - def __init__(self, i2c_bus: I2C, address: int = SPA06_003_DEFAULT_ADDR): |
390 | | - try: |
391 | | - self.i2c_device = I2CDevice(i2c_bus, address) |
392 | | - except ValueError: |
393 | | - raise ValueError(f"No I2C device found at address 0x{address:02X}") |
| 391 | + def __init__( |
| 392 | + self, |
| 393 | + i2c: I2C = None, |
| 394 | + address: int = SPA06_003_DEFAULT_ADDR, |
| 395 | + spi: SPI = None, |
| 396 | + cs: DigitalInOut = None, |
| 397 | + ): |
| 398 | + if spi is not None and cs is not None: |
| 399 | + try: |
| 400 | + self.spi_device = SPIDevice(spi, cs, baudrate=1000000, phase=1, polarity=1) |
| 401 | + self.register_accessor = SPIRegisterAccessor(self.spi_device) |
| 402 | + except ValueError: |
| 403 | + raise ValueError(f"No SPI device found.") |
| 404 | + |
| 405 | + elif i2c is not None: |
| 406 | + try: |
| 407 | + i2c_device = I2CDevice(i2c, address) |
| 408 | + self.register_accessor = I2CRegisterAccessor(i2c_device) |
| 409 | + except ValueError: |
| 410 | + raise ValueError(f"No I2C device found.") |
394 | 411 |
|
395 | 412 | if self.chip_id != 0x11: |
396 | 413 | raise ValueError("SPA06_003_I2C device not found") |
|
0 commit comments