Соответствие скорости передачи данных на последовательном мониторе

Я использую разные коды, которые устанавливают разные значения скорости передачи через функцию Serial.begin(). Нужно ли мне изменить скорость передачи последовательного монитора, чтобы она соответствовала инициализированному значению кода, который я запускаю каждый раз, или я могу просто оставить скорость передачи последовательного монитора на самой высокой частоте всех моих скетчей (115200)?

, 👍1

Обсуждение

Если в какой-то момент скорости между получателем и отправителем различаются, получатель не сможет правильно декодировать данные. Вы увидите странные символы после Serial.read(), @Filip Franik

вы можете оставить последовательный монитор установленным на одну скорость передачи данных ... вам нужно только изменить его, если вы хотите иметь возможность читать вывод, @jsotola


2 ответа


Лучший ответ:

1

Если ваш скетч имеет

  ...
void setup() {
  Serial.begin(115200);
  // ... other stuff here;
}
  ...

Если вы запустите последовательный монитор IDE на частоте 9600, вы получите тарабарщину. То же самое происходит и наоборот. Вам необходимо согласовать монитор со скоростью передачи данных, которую вы определили в вызове Serial.begin();.

,

Интересно, что я не стал нести чушь из-за того, что у меня есть строка Serial.begin(9600);, а для моего последовательного монитора установлено значение 115200. Но ладно, я обязательно изменю скорость передачи данных монитора, чтобы она всегда соответствовала тому, что в код, на всякий случай. Спасибо!, @Aleix


0

Иногда да, а иногда нет.

Большинство плат Arduino подключаются к вашему компьютеру через соединение USB (в некоторых редких внешних случаях используются другие соединения, такие как Bluetooth или RS485...). Это USB-подключение можно разделить на две большие категории:

  1. Адаптер USB-UART, который затем подключается к UART на основном микроконтроллере Arduino, и
  2. Прямое 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, поскольку он используется для запуска загрузчика для загрузки нового кода.

,