Add RTS/CTS to Arduino Nano Connect Serial2(NINA) (#525)

Fixes #524
This commit is contained in:
Earle F. Philhower, III 2022-03-30 14:12:24 -07:00 committed by GitHub
parent 9971bda9cb
commit 061b38f0b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 7 deletions

View file

@ -18,7 +18,7 @@ See https://arduino-pico.readthedocs.io/en/latest/ along with the examples for m
* Adafruit QTPy RP2040 * Adafruit QTPy RP2040
* Adafruit STEMMA Friend RP2040 * Adafruit STEMMA Friend RP2040
* Adafruit Trinkey RP2040 QT * Adafruit Trinkey RP2040 QT
* Arduino Nano RP2040 Connect (preliminary) * Arduino Nano RP2040 Connect
* Cytron Maker Pi RP2040 * Cytron Maker Pi RP2040
* Cytron Maker Nano RP2040 * Cytron Maker Nano RP2040
* DeRuiLab FlyBoard2040 Core * DeRuiLab FlyBoard2040 Core

View file

@ -114,12 +114,12 @@ bool SerialUART::setFIFOSize(size_t size) {
return true; return true;
} }
SerialUART::SerialUART(uart_inst_t *uart, pin_size_t tx, pin_size_t rx) { SerialUART::SerialUART(uart_inst_t *uart, pin_size_t tx, pin_size_t rx, pin_size_t rts, pin_size_t cts) {
_uart = uart; _uart = uart;
_tx = tx; _tx = tx;
_rx = rx; _rx = rx;
_rts = UART_PIN_NOT_DEFINED; _rts = rts;
_cts = UART_PIN_NOT_DEFINED; _cts = cts;
mutex_init(&_mutex); mutex_init(&_mutex);
mutex_init(&_fifoMutex); mutex_init(&_fifoMutex);
} }
@ -339,8 +339,17 @@ SerialUART::operator bool() {
return _running; return _running;
} }
#if defined(PIN_SERIAL1_RTS)
SerialUART Serial1(uart0, PIN_SERIAL1_TX, PIN_SERIAL1_RX, PIN_SERIAL1_RTS, PIN_SERIAL1_CTS);
#else
SerialUART Serial1(uart0, PIN_SERIAL1_TX, PIN_SERIAL1_RX); SerialUART Serial1(uart0, PIN_SERIAL1_TX, PIN_SERIAL1_RX);
#endif
#if defined(PIN_SERIAL2_RTS)
SerialUART Serial2(uart1, PIN_SERIAL2_TX, PIN_SERIAL2_RX, PIN_SERIAL2_RTS, PIN_SERIAL2_CTS);
#else
SerialUART Serial2(uart1, PIN_SERIAL2_TX, PIN_SERIAL2_RX); SerialUART Serial2(uart1, PIN_SERIAL2_TX, PIN_SERIAL2_RX);
#endif
void arduino::serialEvent1Run(void) { void arduino::serialEvent1Run(void) {
if (serialEvent1 && Serial1.available()) { if (serialEvent1 && Serial1.available()) {

View file

@ -31,7 +31,7 @@ extern "C" typedef struct uart_inst uart_inst_t;
#define UART_PIN_NOT_DEFINED (255u) #define UART_PIN_NOT_DEFINED (255u)
class SerialUART : public HardwareSerial { class SerialUART : public HardwareSerial {
public: public:
SerialUART(uart_inst_t *uart, pin_size_t tx, pin_size_t rx); SerialUART(uart_inst_t *uart, pin_size_t tx, pin_size_t rx, pin_size_t rts = UART_PIN_NOT_DEFINED, pin_size_t cts = UART_PIN_NOT_DEFINED);
// Select the pinout. Call before .begin() // Select the pinout. Call before .begin()
bool setRX(pin_size_t pin); bool setRX(pin_size_t pin);

View file

@ -49,6 +49,8 @@ static const uint8_t A3 = (29u);
#define PIN_SERIAL2_TX (D25) #define PIN_SERIAL2_TX (D25)
#define PIN_SERIAL2_RX (D26) #define PIN_SERIAL2_RX (D26)
#define PIN_SERIAL2_CTS (D27)
#define PIN_SERIAL2_RTS (D28)
// SPI // SPI
#define PIN_SPI0_MISO (D12) #define PIN_SPI0_MISO (D12)