120class Adafruit_SPITFT :
public Adafruit_GFX {
130 Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, int8_t mosi,
131 int8_t sck, int8_t rst = -1, int8_t miso = -1);
138 Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc,
145 Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass, int8_t cs,
146 int8_t dc, int8_t rst = -1);
154 Adafruit_SPITFT(uint16_t w, uint16_t h,
tftBusWidth busWidth, int8_t d0,
155 int8_t wr, int8_t dc, int8_t cs = -1, int8_t rst = -1,
160 ~Adafruit_SPITFT(){};
170 virtual void begin(uint32_t freq) = 0;
196 void initSPI(uint32_t freq = 0, uint8_t spiMode = SPI_MODE0);
197 void initSPI(uint32_t freq, uint8_t spiMode,
bool reset);
198 void setSPISpeed(uint32_t freq);
200 void startWrite(
void);
203 void sendCommand(uint8_t commandByte, uint8_t *dataBytes,
204 uint8_t numDataBytes);
205 void sendCommand(uint8_t commandByte,
const uint8_t *dataBytes = NULL,
206 uint8_t numDataBytes = 0);
207 void sendCommand16(uint16_t commandWord,
const uint8_t *dataBytes = NULL,
208 uint8_t numDataBytes = 0);
209 uint8_t readcommand8(uint8_t commandByte, uint8_t index = 0);
210 uint16_t readcommand16(uint16_t addr);
218 void writePixel(int16_t x, int16_t y, uint16_t color);
219 void writePixels(uint16_t *colors, uint32_t len,
bool block =
true,
220 bool bigEndian =
false);
221 void writeColor(uint16_t color, uint32_t len);
222 void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h,
224 void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
225 void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
231 inline void writeFillRectPreclipped(int16_t x, int16_t y, int16_t w,
232 int16_t h, uint16_t color);
238 bool dmaBusy(
void)
const;
239 void swapBytes(uint16_t *src, uint32_t len, uint16_t *dest = NULL);
246 void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
247 void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
248 void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
252 void pushColor(uint16_t color);
254 using Adafruit_GFX::drawRGBBitmap;
255 void drawRGBBitmap(int16_t x, int16_t y, uint16_t *pcolors, int16_t w,
258 void invertDisplay(
bool i);
259 uint16_t color565(uint8_t r, uint8_t g, uint8_t b);
262 void spiWrite(uint8_t b);
263 void writeCommand(uint8_t cmd);
264 uint8_t spiRead(
void);
265 void write16(uint16_t w);
266 void writeCommand16(uint16_t cmd);
267 uint16_t read16(
void);
274 void SPI_WRITE16(uint16_t w);
275 void SPI_WRITE32(uint32_t l);
293#if defined(USE_FAST_PINIO)
294#if defined(HAS_PORT_SET_CLR)
298 *csPortSet = csPinMask;
301 *csPort |= csPinMaskSet;
304 digitalWrite(
_cs, HIGH);
315#if defined(USE_FAST_PINIO)
316#if defined(HAS_PORT_SET_CLR)
320 *csPortClr = csPinMask;
323 *csPort &= csPinMaskClr;
326 digitalWrite(
_cs, LOW);
334#if defined(USE_FAST_PINIO)
335#if defined(HAS_PORT_SET_CLR)
339 *dcPortSet = dcPinMask;
342 *dcPort |= dcPinMaskSet;
345 digitalWrite(
_dc, HIGH);
353#if defined(USE_FAST_PINIO)
354#if defined(HAS_PORT_SET_CLR)
358 *dcPortClr = dcPinMask;
361 *dcPort &= dcPinMaskClr;
364 digitalWrite(
_dc, LOW);
374 inline void SPI_MOSI_HIGH(
void);
375 inline void SPI_MOSI_LOW(
void);
376 inline void SPI_SCK_HIGH(
void);
377 inline void SPI_SCK_LOW(
void);
378 inline bool SPI_MISO_READ(
void);
379 inline void SPI_BEGIN_TRANSACTION(
void);
380 inline void SPI_END_TRANSACTION(
void);
381 inline void TFT_WR_STROBE(
void);
382 inline void TFT_RD_HIGH(
void);
383 inline void TFT_RD_LOW(
void);
393#if defined(USE_FAST_PINIO)
394#if defined(HAS_PORT_SET_CLR)
404#if defined(__cplusplus) && (__cplusplus >= 201100)
409#if defined(SPI_HAS_TRANSACTION)
410 SPISettings settings;
417#if defined(USE_FAST_PINIO)
419#if defined(HAS_PORT_SET_CLR)
424#if !defined(KINETISK)
436#if !defined(KINETISK)
445#if defined(USE_FAST_PINIO)
447#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
448 volatile uint32_t *writePort;
449 volatile uint32_t *readPort;
451 volatile uint8_t *writePort;
452 volatile uint8_t *readPort;
454#if defined(HAS_PORT_SET_CLR)
457#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
458 volatile uint32_t *dirSet;
459 volatile uint32_t *dirClr;
461 volatile uint8_t *dirSet;
462 volatile uint8_t *dirClr;
468#if !defined(KINETISK)
475 volatile uint8_t *portDir;
489#if defined(__cplusplus) && (__cplusplus >= 201100)
492#if defined(USE_SPI_DMA) && \
493 (defined(__SAMD51__) || \
494 defined(ARDUINO_SAMD_ZERO))
495 Adafruit_ZeroDMA dma;
496 DmacDescriptor *dptr = NULL;
497 DmacDescriptor *descriptor = NULL;
498 uint16_t *pixelBuf[2];
500 uint16_t lastFillColor = 0;
501 uint32_t lastFillLen = 0;
504#if defined(USE_FAST_PINIO)
505#if defined(HAS_PORT_SET_CLR)
506#if !defined(KINETISK)