@@ -1326,7 +1326,13 @@ void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len) {
1326
1326
hwspi._spi ->write (lo);
1327
1327
}
1328
1328
} while (len);
1329
- #else // !ESP8266
1329
+ #elif defined(ARDUINO_ARCH_RP2040)
1330
+ spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
1331
+ color = __builtin_bswap16 (color);
1332
+
1333
+ while (len--)
1334
+ spi_write_blocking (pi_spi, (uint8_t *)&color, 2 );
1335
+ #else // !ESP8266 && !ARDUINO_ARCH_RP2040
1330
1336
while (len--) {
1331
1337
#if defined(__AVR__)
1332
1338
AVR_WRITESPI (hi);
@@ -2079,6 +2085,9 @@ void Adafruit_SPITFT::spiWrite(uint8_t b) {
2079
2085
AVR_WRITESPI (b);
2080
2086
#elif defined(ESP8266) || defined(ESP32)
2081
2087
hwspi._spi ->write (b);
2088
+ #elif defined(ARDUINO_ARCH_RP2040)
2089
+ spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
2090
+ spi_write_blocking (pi_spi, &b, 1 );
2082
2091
#else
2083
2092
hwspi._spi ->transfer (b);
2084
2093
#endif
@@ -2385,6 +2394,10 @@ void Adafruit_SPITFT::SPI_WRITE16(uint16_t w) {
2385
2394
AVR_WRITESPI (w);
2386
2395
#elif defined(ESP8266) || defined(ESP32)
2387
2396
hwspi._spi ->write16 (w);
2397
+ #elif defined(ARDUINO_ARCH_RP2040)
2398
+ spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
2399
+ w = __builtin_bswap16 (w);
2400
+ spi_write_blocking (pi_spi, (uint8_t *)&w, 2 );
2388
2401
#else
2389
2402
// MSB, LSB because TFTs are generally big-endian
2390
2403
hwspi._spi ->transfer (w >> 8 );
@@ -2437,6 +2450,10 @@ void Adafruit_SPITFT::SPI_WRITE32(uint32_t l) {
2437
2450
AVR_WRITESPI (l);
2438
2451
#elif defined(ESP8266) || defined(ESP32)
2439
2452
hwspi._spi ->write32 (l);
2453
+ #elif defined(ARDUINO_ARCH_RP2040)
2454
+ spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
2455
+ l = __builtin_bswap32 (l);
2456
+ spi_write_blocking (pi_spi, (uint8_t *)&l, 4 );
2440
2457
#else
2441
2458
hwspi._spi ->transfer (l >> 24 );
2442
2459
hwspi._spi ->transfer (l >> 16 );
0 commit comments