Как использовать Serial2 на Raspberry Pi Pico

serial raspberrypi-pico

Я хочу использовать Serial1 и Serial2 в скетче в Arduino IDE для Raspberry pi pico. Моя цель - связаться с пико с двумя другими платами Arduino.

Я использую Arduino 1.8.9 и официальную плату для Raspberry Pi Pico: "Платы Arduino Mbed OS RP2040 от Arduino версии 2.1.0"

Serial2, похоже, не настроен. Когда я компилирую

    #include <Arduino.h>
    void setup() {
        Serial2.begin(9600);
    }

    void loop(){}

Я получаю: "неопределенная ссылка на '_UART2_'".

Я нашел несколько документов (не специфичных для rpi pico), в которых говорится, что вы можете определить второй UART следующим образом:

    #include "wiring_private.h"
    Uart mySerial (&sercom3, 1, 0, SERCOM_RX_PAD_1, UART_TX_PAD_0); // Создайте новый экземпляр UART, назначив ему контакты 1 и 0

Но это бросает - "Uart" не называет тип; вы имели в виду"sqrt"?

У кого-нибудь есть пример того, как использовать Serial1 и Serial2 (2 последовательных соединения с двумя другими платами) на Raspberry Pi Pico с использованием Arduino-IDE?

Большое спасибо!

, 👍0


2 ответа


2

Я нашел решение после прочтения https://github.com/arduino/ArduinoCore-mbed/issues/210#issuecomment-849502556.

Хотя предложенный код не компилировался так, как это было показано там.

UART Serial2(8, 9);  // не компилировался

Что сработало для меня, так это:

UART Serial2(8, 9, 0, 0);

Полный код:

#include <Arduino.h>

UART Serial2(8, 9, 0, 0);

void setup() {
  Serial2.begin(9600);
  // ...
  Serial2.write("hello world");
}

void loop {}
,

1

Я не использую плату "Mbed", я использую плату "Raspberry Pi Boards (1.9.7)" --> "Raspberry Pi Pico" и обнаружил, что:

Serial1 использует аппаратное обеспечение UART0

Serial2 использует аппаратное обеспечение UART1

Serial1.begin(SOME_BAUDRATE); // по умолчанию используется значение TX для GP0 и RX для GP1

Serial2.begin(SOME_BAUDRATE); // по умолчанию используется значение TX для GP8 и RX для GP9

Чтобы изменить контакты UART по умолчанию на другой вариант, если он соответствует распиновке Raspberry Pi Pico (найдите UARTx_TX / UARTx_RX рядом с выводами), смотрите Следующий пример:

#include <hardware/pio.h>

gpio_set_function(12, GPIO_FUNC_UART); // изменить TX по умолчанию для Serial1 (UART0)
                                       // быть GP12

gpio_set_function(13, GPIO_FUNC_UART); // измените значение RX по умолчанию на Serial1 (UART0)
                                       // быть GP13
,

Совершенно другая ситуация, поскольку вы используете другую плату., @LarryBud