Соответствие скорости передачи данных на последовательном мониторе
Я использую разные коды, которые устанавливают разные значения скорости передачи через функцию Serial.begin(). Нужно ли мне изменить скорость передачи последовательного монитора, чтобы она соответствовала инициализированному значению кода, который я запускаю каждый раз, или я могу просто оставить скорость передачи последовательного монитора на самой высокой частоте всех моих скетчей (115200)?
@Aleix, 👍1
Обсуждение2 ответа
Лучший ответ:
Если ваш скетч имеет
...
void setup() {
Serial.begin(115200);
// ... other stuff here;
}
...
Если вы запустите последовательный монитор IDE на частоте 9600, вы получите тарабарщину. То же самое происходит и наоборот. Вам необходимо согласовать монитор со скоростью передачи данных, которую вы определили в вызове Serial.begin();
.
Интересно, что я не стал нести чушь из-за того, что у меня есть строка Serial.begin(9600);
, а для моего последовательного монитора установлено значение 115200. Но ладно, я обязательно изменю скорость передачи данных монитора, чтобы она всегда соответствовала тому, что в код, на всякий случай. Спасибо!, @Aleix
Иногда да, а иногда нет.
Большинство плат Arduino подключаются к вашему компьютеру через соединение USB (в некоторых редких внешних случаях используются другие соединения, такие как Bluetooth или RS485...). Это USB-подключение можно разделить на две большие категории:
- Адаптер USB-UART, который затем подключается к UART на основном микроконтроллере Arduino, и
- Прямое USB-подключение к основному MCU.
Тип 1 — это такие платы, как Uno, Mega и Nano. По сути, любая плата, имеющая как основной MCU, так и вторичный чип, расположенный между USB-соединением и этим MCU.
В этом случае скорость передачи в последовательном мониторе передается на микросхему интерфейса USB и сообщает этой микросхеме: «Вы должны обмениваться данными с основным MCU на этой скорости». Затем вам также необходимо, чтобы основной MCU обменивался данными с USB-чипом с той же скоростью. Поэтому обязательно, чтобы эти две скорости совпадали.
Во втором случае это неверно. Сам USB не имеет реального понятия «скорость передачи». Вместо этого установленная вами скорость передачи данных — это просто часть информации о конфигурации, которую устройство в конце USB-соединения может использовать для чего-то, если сочтет нужным (что это «что-то», полностью зависит от устройства). Изменение этой скорости передачи не оказывает реального влияния на связь. В эту категорию попадают такие платы, как Leonardo и Mini. Все они имеют U-образный чип, как ATMega32U4, который напрямую общается с USB.
Итак, вкратце:
- Если у вас есть плата на основе чипа "Non-U" с чипом интерфейса USB, вы должны совпадать со скоростью передачи данных и
- Если у вас есть плата на базе микросхемы "U" (или другая плата с прямым интерфейсом USB), тогда вся концепция скорости передачи данных не имеет смысла1 и на самом деле не имеет значения. какие числа вы хотите использовать где.
1. 1200 бод — это особый случай для USB-плат Arduino, поскольку он используется для запуска загрузчика для загрузки нового кода.
- ESP8266 12e Arduino IDE выводит мусорные значения на serial monitor
- Скорость передачи устанавливается на 9600 автоматически, даже если указано другое значение.
- ESP8266-01 неправильные настройки управления потоком
- EEPROM.get возвращает неверные данные
- Два сериала не могут работать на одной скорости
- HC06 правильная скорость передачи данных, но отсутствуют символы / нет AT-команд
- Взаимодействие A9G с Arduino для тестирования AT-команд
- Как разделить входящую строку?
Если в какой-то момент скорости между получателем и отправителем различаются, получатель не сможет правильно декодировать данные. Вы увидите странные символы после Serial.read(), @Filip Franik
вы можете оставить последовательный монитор установленным на одну скорость передачи данных ... вам нужно только изменить его, если вы хотите иметь возможность читать вывод, @jsotola