TFT_eSPI/Processors/TFT_eSPI_SWSPI.h

63 lines
2.4 KiB
C

////////////////////////////////////////////////////
// TFT_eSPI Sotware SPI driver functions //
////////////////////////////////////////////////////
// This is a software api driver for Arduino boards, it supports SPI interface displays
#ifndef _TFT_eSPI_SWSPI_
#define _TFT_eSPI_SWSPI_
// Initialise processor specific SPI functions, used by init()
#define INIT_TFT_DATA_BUS // Not used
// Processor specific code used by SPI bus transaction startWrite and endWrite functions
#define SET_BUS_WRITE_MODE // Not used
#define SET_BUS_READ_MODE // Not used
// Code to check if DMA is busy, used by SPI bus transaction startWrite and endWrite functions
#define DMA_BUSY_CHECK // Not used so leave blank
////////////////////////////////////////////////////////////////////////////////////////
// Define the DC (TFT Data/Command or Register Select (RS))pin drive code
////////////////////////////////////////////////////////////////////////////////////////
#ifndef TFT_DC
#define DC_C // No macro allocated so it generates no code
#define DC_D // No macro allocated so it generates no code
#else
#define DC_C digitalWrite(TFT_DC, LOW)
#define DC_D digitalWrite(TFT_DC, HIGH)
#endif
////////////////////////////////////////////////////////////////////////////////////////
// Define the CS (TFT chip select) pin drive code
////////////////////////////////////////////////////////////////////////////////////////
#ifndef TFT_CS
#define CS_L // No macro allocated so it generates no code
#define CS_H // No macro allocated so it generates no code
#else
#define CS_L digitalWrite(TFT_CS, LOW)
#define CS_H digitalWrite(TFT_CS, HIGH)
#endif
////////////////////////////////////////////////////////////////////////////////////////
// Macros to write commands/pixel colour data to a SPI
////////////////////////////////////////////////////////////////////////////////////////
// Write 16 bits to TFT
#define tft_Write_16(C) tft_Write_8(C>>8); tft_Write_8(C)
// Write Swapped 16 bits to TFT
#define tft_Write_16S(C) uint16_t Cswap = ((C) >>8 | (C) << 8); \
tft_Write_16(Cswap)
// Future option for transfer without wait
#define tft_Write_16N(C) tft_Write_16(C)
// Write two concatenated 16 bit values to TFT
#define tft_Write_32C(C,D) tft_Write_16(C); tft_Write_16(D);
// Write same value twice
#define tft_Write_32D(C) tft_Write_16((uint16_t) (C)); tft_Write_16((uint16_t) (C))
#endif // Header end