11 SPIClass *
spi =
nullptr;
26 uint8_t mosi = 255)
override
36 digitalWrite(
cs, HIGH);
39 if (sck != 255 && miso != 255 && mosi != 255)
40 spi->begin(sck, miso, mosi,
cs);
52 uint8_t, uint8_t)
override
62 int8_t
read(uint8_t reg, uint8_t *data, uint32_t len)
override
64 if (!
spi || !data || len == 0)
67 SPISettings settings(
speed, MSBFIRST, SPI_MODE0);
69 spi->beginTransaction(settings);
70 digitalWrite(
cs, LOW);
71 delayMicroseconds(10);
76 spi->transfer(reg | 0x80);
78 delayMicroseconds(10);
83 for (uint32_t i = 0; i < len; i++)
84 data[i] =
spi->transfer(0x00);
86 digitalWrite(
cs, HIGH);
87 delayMicroseconds(10);
88 spi->endTransaction();
108 int8_t
write(uint8_t reg,
const uint8_t *data, uint32_t len)
override
110 if (!
spi || !data || len == 0)
113 SPISettings settings(
speed, MSBFIRST, SPI_MODE0);
115 spi->beginTransaction(settings);
116 digitalWrite(
cs, LOW);
117 delayMicroseconds(10);
122 spi->transfer(reg & 0x7F);
127 for (uint32_t i = 0; i < len; i++)
128 spi->transfer(data[i]);
130 digitalWrite(
cs, HIGH);
131 delayMicroseconds(10);
132 spi->endTransaction();
int8_t read(uint8_t reg, uint8_t *data, uint32_t len) override
bool beginSPI(uint8_t csPin, SPIClass &spiPort, uint32_t spiSpeed, uint8_t sck=255, uint8_t miso=255, uint8_t mosi=255) override
bool beginI2C(uint8_t, TwoWire &, uint32_t, uint8_t, uint8_t) override
int8_t write(uint8_t reg, const uint8_t *data, uint32_t len) override