|
34 | 34 | from adafruit_register.register_accessor import I2CRegisterAccessor, SPIRegisterAccessor |
35 | 35 | from adafruit_register.register_bit import ROBit, RWBit |
36 | 36 | from adafruit_register.register_bits import ROBits, RWBits |
| 37 | +from busio import I2C |
37 | 38 | from micropython import const |
38 | 39 |
|
39 | 40 | try: |
40 | 41 | from typing import Union |
41 | 42 |
|
42 | | - from busio import I2C, SPI |
43 | 43 | from digitalio import DigitalInOut |
44 | 44 | except ImportError: |
45 | 45 | pass |
@@ -387,18 +387,26 @@ class SPA06_003: |
387 | 387 | 24, SPA06_003_REG_PSR_B2, 0, register_width=3, lsb_first=False, signed=True |
388 | 388 | ) |
389 | 389 |
|
390 | | - def __init__(self, bus_device: Union[I2CDevice, SPIDevice]): |
391 | | - if isinstance(bus_device, SPIDevice): |
| 390 | + def __init__(self, bus_or_device: Union[I2C, I2CDevice, SPIDevice]): |
| 391 | + if isinstance(bus_or_device, SPIDevice): |
392 | 392 | try: |
393 | | - self.register_accessor = SPIRegisterAccessor(bus_device) |
| 393 | + self._configure_spi_device(bus_or_device) |
| 394 | + self.register_accessor = SPIRegisterAccessor(bus_or_device) |
394 | 395 | except ValueError: |
395 | 396 | raise ValueError(f"No SPI device found.") |
396 | 397 |
|
397 | | - elif isinstance(bus_device, I2CDevice): |
| 398 | + elif isinstance(bus_or_device, I2CDevice): |
398 | 399 | try: |
399 | | - self.register_accessor = I2CRegisterAccessor(bus_device) |
| 400 | + self.register_accessor = I2CRegisterAccessor(bus_or_device) |
400 | 401 | except ValueError: |
401 | 402 | raise ValueError(f"No I2C device found.") |
| 403 | + elif isinstance(bus_or_device, I2C): |
| 404 | + try: |
| 405 | + i2c_device = I2CDevice(bus_or_device, SPA06_003_DEFAULT_ADDR) |
| 406 | + self.register_accessor = I2CRegisterAccessor(i2c_device) |
| 407 | + except ValueError: |
| 408 | + raise ValueError(f"No I2C device found.") |
| 409 | + |
402 | 410 | else: |
403 | 411 | raise ValueError("bus_device must be an instance of I2CDevice or SPIDevice.") |
404 | 412 |
|
@@ -440,6 +448,11 @@ def __init__(self, bus_device: Union[I2CDevice, SPIDevice]): |
440 | 448 | # Set measurement mode to continuous both |
441 | 449 | self.measurement_mode = SPA06_003_MEAS_MODE_CONTINUOUS_BOTH |
442 | 450 |
|
| 451 | + @staticmethod |
| 452 | + def _configure_spi_device(spi_device: SPIDevice): |
| 453 | + spi_device.polarity = 1 |
| 454 | + spi_device.phase = 1 |
| 455 | + |
443 | 456 | @property |
444 | 457 | def temperature(self): |
445 | 458 | """Temperature in Celsius""" |
|
0 commit comments