13enum { SPI_MODE0, SPI_MODE1, SPI_MODE2, _SPI_MODE4 };
89class Adafruit_SPIDevice {
91#ifdef BUSIO_HAS_HW_SPI
92 Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000,
93 BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST,
94 uint8_t dataMode = SPI_MODE0, SPIClass *theSPI = &SPI);
96 Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000,
97 BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST,
98 uint8_t dataMode = SPI_MODE0, SPIClass *theSPI =
nullptr);
100 Adafruit_SPIDevice(int8_t cspin, int8_t sck, int8_t miso, int8_t mosi,
101 uint32_t freq = 1000000,
102 BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST,
103 uint8_t dataMode = SPI_MODE0);
104 ~Adafruit_SPIDevice();
107 bool read(uint8_t *buffer,
size_t len, uint8_t sendvalue = 0xFF);
108 bool write(
const uint8_t *buffer,
size_t len,
109 const uint8_t *prefix_buffer =
nullptr,
size_t prefix_len = 0);
110 bool write_then_read(
const uint8_t *write_buffer,
size_t write_len,
111 uint8_t *read_buffer,
size_t read_len,
112 uint8_t sendvalue = 0xFF);
113 bool write_and_read(uint8_t *buffer,
size_t len);
115 uint8_t transfer(uint8_t send);
116 void transfer(uint8_t *buffer,
size_t len);
117 void beginTransaction(
void);
118 void endTransaction(
void);
119 void beginTransactionWithAssertingCS();
120 void endTransactionWithDeassertingCS();
123#ifdef BUSIO_HAS_HW_SPI
124 SPIClass *_spi =
nullptr;
125 SPISettings *_spiSetting =
nullptr;
127 uint8_t *_spi =
nullptr;
128 uint8_t *_spiSetting =
nullptr;
131 BusIOBitOrder _dataOrder;
133 void setChipSelect(
int value);
135 int8_t _cs, _sck, _mosi, _miso;
136#ifdef BUSIO_USE_FAST_PINIO
137 BusIO_PortReg *mosiPort, *clkPort, *misoPort, *csPort;
138 BusIO_PortMask mosiPinMask, misoPinMask, clkPinMask, csPinMask;