1#if !defined(SPI_INTERFACES_COUNT) || \
2 (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0))
6#ifndef Adafruit_SPIDevice_h
7#define Adafruit_SPIDevice_h
10#if (defined(__AVR__) && !defined(ARDUINO_ARCH_MEGAAVR)) || \
11 defined(ESP8266) || defined(TEENSYDUINO) || defined(SPARK) || \
12 defined(ARDUINO_ARCH_SPRESENSE) || defined(MEGATINYCORE) || \
13 defined(DXCORE) || defined(ARDUINO_AVR_ATmega4809) || \
14 defined(ARDUINO_AVR_ATmega4808) || defined(ARDUINO_AVR_ATmega3209) || \
15 defined(ARDUINO_AVR_ATmega3208) || defined(ARDUINO_AVR_ATmega1609) || \
16 defined(ARDUINO_AVR_ATmega1608) || defined(ARDUINO_AVR_ATmega809) || \
17 defined(ARDUINO_AVR_ATmega808) || defined(ARDUINO_ARCH_ARC32)
24#elif defined(ESP32) || defined(__ASR6501__)
35#define SPI_BITORDER_MSBFIRST MSBFIRST
36#define SPI_BITORDER_LSBFIRST LSBFIRST
40#if defined(__AVR__) || defined(TEENSYDUINO)
43#define BUSIO_USE_FAST_PINIO
45#elif defined(ESP8266) || defined(ESP32) || defined(__SAM3X8E__) || \
46 defined(ARDUINO_ARCH_SAMD)
49#define BUSIO_USE_FAST_PINIO
51#elif (defined(__arm__) || defined(ARDUINO_FEATHER52)) && \
52 !defined(ARDUINO_ARCH_MBED) && !defined(ARDUINO_ARCH_RP2040)
55#if not defined(__ASR6501__)
56#define BUSIO_USE_FAST_PINIO
60#undef BUSIO_USE_FAST_PINIO
68 uint8_t dataMode = SPI_MODE0,
SPIClass *theSPI = &SPI);
71 uint32_t freq = 1000000,
73 uint8_t dataMode = SPI_MODE0);
77 bool read(uint8_t *buffer,
size_t len, uint8_t sendvalue = 0xFF);
78 bool write(uint8_t *buffer,
size_t len, uint8_t *prefix_buffer = NULL,
79 size_t prefix_len = 0);
81 uint8_t *read_buffer,
size_t read_len,
82 uint8_t sendvalue = 0xFF);
85 void transfer(uint8_t *buffer,
size_t len);
97#ifdef BUSIO_USE_FAST_PINIO
uint8_t BusIO_PortMask
Definition Adafruit_SPIDevice.h:42
volatile uint8_t BusIO_PortReg
Definition Adafruit_SPIDevice.h:41
_BitOrder
Definition Adafruit_SPIDevice.h:19
@ SPI_BITORDER_LSBFIRST
Definition Adafruit_SPIDevice.h:21
@ SPI_BITORDER_MSBFIRST
Definition Adafruit_SPIDevice.h:20
enum _BitOrder BusIOBitOrder
Definition Adafruit_SPIDevice.h:37
class HardwareSPI SPIClass
SPI is a bit odd on WICED.
Definition Adafruit_SPITFT.h:34
Definition Adafruit_SPIDevice.h:64
BusIO_PortMask mosiPinMask
Definition Adafruit_SPIDevice.h:99
Adafruit_SPIDevice(int8_t cspin, uint32_t freq=1000000, BusIOBitOrder dataOrder=SPI_BITORDER_MSBFIRST, uint8_t dataMode=SPI_MODE0, SPIClass *theSPI=&SPI)
Create an SPI device with the given CS pin and settins.
Definition Adafruit_SPIDevice.cpp:17
int8_t _miso
Definition Adafruit_SPIDevice.h:96
bool _begun
Definition Adafruit_SPIDevice.h:101
BusIO_PortMask misoPinMask
Definition Adafruit_SPIDevice.h:99
bool read(uint8_t *buffer, size_t len, uint8_t sendvalue=0xFF)
void endTransaction(void)
bool begin(void)
Initializes SPI bus and sets CS pin high.
Definition Adafruit_SPIDevice.cpp:93
BusIO_PortMask clkPinMask
Definition Adafruit_SPIDevice.h:99
BusIO_PortReg * misoPort
Definition Adafruit_SPIDevice.h:98
BusIO_PortReg * mosiPort
Definition Adafruit_SPIDevice.h:98
bool write_then_read(uint8_t *write_buffer, size_t write_len, uint8_t *read_buffer, size_t read_len, uint8_t sendvalue=0xFF)
uint8_t _dataMode
Definition Adafruit_SPIDevice.h:94
int8_t _cs
Definition Adafruit_SPIDevice.h:96
BusIOBitOrder _dataOrder
Definition Adafruit_SPIDevice.h:93
bool write(uint8_t *buffer, size_t len, uint8_t *prefix_buffer=NULL, size_t prefix_len=0)
BusIO_PortReg * csPort
Definition Adafruit_SPIDevice.h:98
int8_t _mosi
Definition Adafruit_SPIDevice.h:96
uint32_t _freq
Definition Adafruit_SPIDevice.h:92
SPISettings * _spiSetting
Definition Adafruit_SPIDevice.h:91
~Adafruit_SPIDevice()
Release memory allocated in constructors.
Definition Adafruit_SPIDevice.cpp:79
uint8_t transfer(uint8_t send)
void beginTransaction(void)
BusIO_PortReg * clkPort
Definition Adafruit_SPIDevice.h:98
int8_t _sck
Definition Adafruit_SPIDevice.h:96
SPIClass * _spi
Definition Adafruit_SPIDevice.h:90
BusIO_PortMask csPinMask
Definition Adafruit_SPIDevice.h:99