Как использовать Serial2 на Raspberry Pi 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?
Большое спасибо!
@mvermand, 👍0
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 {}
Я не использую плату "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
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды
Совершенно другая ситуация, поскольку вы используете другую плату., @LarryBud