Skip to content

Commit c450adb

Browse files
authored
Merge pull request #470 from caternuson/iss469_rp2040_spi
Fix RP2040 SPI peripheral mapping
2 parents 87e1550 + 9709959 commit c450adb

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

Adafruit_SPITFT.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,7 @@ void Adafruit_SPITFT::writePixels(uint16_t *colors, uint32_t len, bool block,
10321032

10331033
return;
10341034
#elif defined(ARDUINO_ARCH_RP2040)
1035-
spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
1035+
spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE;
10361036

10371037
if (!bigEndian) {
10381038
// switch to 16-bit writes
@@ -1410,7 +1410,7 @@ void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len) {
14101410
}
14111411
} while (len);
14121412
#elif defined(ARDUINO_ARCH_RP2040)
1413-
spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
1413+
spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE;
14141414
color = __builtin_bswap16(color);
14151415

14161416
while (len--)
@@ -2169,7 +2169,7 @@ void Adafruit_SPITFT::spiWrite(uint8_t b) {
21692169
#elif defined(ESP8266) || defined(ESP32)
21702170
hwspi._spi->write(b);
21712171
#elif defined(ARDUINO_ARCH_RP2040)
2172-
spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
2172+
spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE;
21732173
spi_write_blocking(pi_spi, &b, 1);
21742174
#else
21752175
hwspi._spi->transfer(b);
@@ -2454,7 +2454,7 @@ void Adafruit_SPITFT::SPI_WRITE16(uint16_t w) {
24542454
#elif defined(ESP8266) || defined(ESP32)
24552455
hwspi._spi->write16(w);
24562456
#elif defined(ARDUINO_ARCH_RP2040)
2457-
spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
2457+
spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE;
24582458
w = __builtin_bswap16(w);
24592459
spi_write_blocking(pi_spi, (uint8_t *)&w, 2);
24602460
#elif defined(ARDUINO_ARCH_RTTHREAD)
@@ -2512,7 +2512,7 @@ void Adafruit_SPITFT::SPI_WRITE32(uint32_t l) {
25122512
#elif defined(ESP8266) || defined(ESP32)
25132513
hwspi._spi->write32(l);
25142514
#elif defined(ARDUINO_ARCH_RP2040)
2515-
spi_inst_t *pi_spi = hwspi._spi == &SPI ? spi0 : spi1;
2515+
spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE;
25162516
l = __builtin_bswap32(l);
25172517
spi_write_blocking(pi_spi, (uint8_t *)&l, 4);
25182518
#elif defined(ARDUINO_ARCH_RTTHREAD)

Adafruit_SPITFT.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,16 @@ typedef volatile ADAGFX_PORT_t *PORTreg_t; ///< PORT register type
103103
/*! For first arg to parallel constructor */
104104
enum tftBusWidth { tft8bitbus, tft16bitbus };
105105

106+
// SPI defaults for RP2040
107+
#if defined(ARDUINO_ARCH_RP2040)
108+
#ifndef __SPI0_DEVICE
109+
#define __SPI0_DEVICE spi0
110+
#endif
111+
#ifndef __SPI1_DEVICE
112+
#define __SPI1_DEVICE spi1
113+
#endif
114+
#endif
115+
106116
// CLASS DEFINITION --------------------------------------------------------
107117

108118
/*!

0 commit comments

Comments
 (0)