TFT_eSPI/Processors/TFT_eSPI_SWSPI.c

37 lines
1.6 KiB
C

////////////////////////////////////////////////////
// TFT_eSPI Software SPI driver functions //
////////////////////////////////////////////////////
/***************************************************************************************
** Function name: tft_Write8_8
** Description: basic softare SPI write function
***************************************************************************************/
void tft_Write_8(uint8_t c)
{
for(uint8_t bit = 0x80; bit; bit >>= 1) {
if(c & bit) digitalWrite(TFT_MOSI, HIGH);
else digitalWrite(TFT_MOSI, LOW);
digitalWrite(TFT_SCLK, HIGH);
digitalWrite(TFT_SCLK, LOW);
}
}
/***************************************************************************************
** Function name: pushPixels - for software SPI
** Description: Write a sequence of pixels
***************************************************************************************/
void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){
uint16_t *data = (uint16_t*)data_in;
if (_swapBytes) while ( len-- ) {tft_Write_16(*data); data++;}
else while ( len-- ) {tft_Write_16S(*data); data++;}
}
/***************************************************************************************
** Function name: pushBlock - for software SPI
** Description: Write a block of pixels of the same colour
***************************************************************************************/
void TFT_eSPI::pushBlock(uint16_t color, uint32_t len){
while (len--) {tft_Write_16(color);}
}