1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-08-01 03:47:23 +03:00

Adafruit_ILI9341 add functions for easy write a data stream to display.

Adafruit_ILI9341 allow biger size for spiwriteBytes
This commit is contained in:
Markus Sattler
2015-05-18 20:12:05 +02:00
parent b0a05473c3
commit 5a1c3a1ad5
2 changed files with 33 additions and 4 deletions

View File

@ -127,7 +127,7 @@ void Adafruit_ILI9341::spiwrite(uint8_t c) {
#endif
}
void Adafruit_ILI9341::spiwriteBytes(uint8_t * data, uint8_t size) {
void Adafruit_ILI9341::spiwriteBytes(uint8_t * data, uint32_t size) {
#ifdef ESP8266
SPI.writeBytes(data, size);
#else
@ -250,13 +250,21 @@ void Adafruit_ILI9341::writeCmdData(uint8_t cmd, uint8_t * data, uint8_t size) {
spiCsHigh();
}
uint16_t Adafruit_ILI9341::getHeight(void) {
return _height;
}
uint16_t Adafruit_ILI9341::getWidth(void){
return _width;
}
// If the SPI library has transaction support, these functions
// establish settings and protect from interference from other
// libraries. Otherwise, they simply do nothing.
#ifdef SPI_HAS_TRANSACTION
#ifdef ESP8266
SPISettings spiSettings = SPISettings(F_CPU, MSBFIRST, SPI_MODE0);
SPISettings spiSettings = SPISettings(SPI_MAX_SPEED, MSBFIRST, SPI_MODE0);
#else
SPISettings spiSettings = SPISettings(8000000, MSBFIRST, SPI_MODE0);
#endif
@ -438,6 +446,20 @@ void Adafruit_ILI9341::begin(void) {
}
void Adafruit_ILI9341::area_update_start(uint32_t x, uint32_t y, uint32_t w, uint32_t h) {
spiCsLow();
setAddrWindow_(x, y, x + w - 1, y + h - 1);
}
void Adafruit_ILI9341::area_update_data(uint8_t *data, uint32_t pixel){
spiwriteBytes(&data[0], (pixel*2));
}
void Adafruit_ILI9341::area_update_end(void){
spiCsHigh();
}
void Adafruit_ILI9341::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
spiCsLow();
setAddrWindow_(x0, y0, x1, y1);
@ -583,7 +605,7 @@ void Adafruit_ILI9341::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint
spiCsLow();
setAddrWindow_(x, y, x + w - 1, y + h - 1);
setAddrWindow_(x, y, (x + w - 1), (y + h - 1));
uint8_t colorBin[] = { (uint8_t) (color >> 8), (uint8_t) color };
spiwritePattern(&colorBin[0], 2, (w * h));

View File

@ -158,6 +158,13 @@ class Adafruit_ILI9341 : public Adafruit_GFX {
void writedata(uint8_t * data, uint8_t size);
void writeCmdData(uint8_t cmd, uint8_t * data, uint8_t size);
uint16_t getHeight(void);
uint16_t getWidth(void);
void area_update_start(uint32_t x, uint32_t y, uint32_t w, uint32_t h);
void area_update_data(uint8_t *data, uint32_t pixel);
void area_update_end(void);
private:
uint8_t spiread(void);
@ -166,7 +173,7 @@ class Adafruit_ILI9341 : public Adafruit_GFX {
#ifdef ESP8266
inline void spiwrite(uint8_t data);
inline void spiwrite16(uint16_t data);
inline void spiwriteBytes(uint8_t * data, uint8_t size);
inline void spiwriteBytes(uint8_t * data, uint32_t size);
inline void spiwritePattern(uint8_t * data, uint8_t size, uint32_t repeat);
inline void setAddrWindow_(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);