Arduino при одинаковом Baudrate принимает по uart с stm32 сообщения, а в монитор порта пишет краказябру

Stm32 присылает по uart на Arduino расстояние между датчиками. Если подключить stm32 по uart к компу по скорости 115200, то Putty в понятном виде выдает данные о расстоянии. Если же stm32 по uart с той же скоростью передает в arduino данные, то в мониторе порта ардуины появляются непонятные символы или по простому краказябра, что делать в данной ситуации? пробовал менять скорость на обоих контроллерах на 9600 не помогает.

void setup() {
  Serial.begin(115200);
  Serial.setTimeout(5);
}

void loop() {
  Serial.print(Serial.readString());
}

Ответы (1 шт):

Автор решения: eri

Arduino на основе на основе процессоров AVR имеет уровень сигналов Vcc*0.3V .. Vcc*0.6V. Это значит то что ниже 1.5В это 0, то что выше 3В это 1.

У STM32 Vcc = 3.3 В. Единицу он выйдет с уровнем 2.7 В , это меньше 3 и ардуина не может точно определить 1 или 0. Отсюда и кракозябры.

Решить вопрос можно или подтяжкой с открытым коллектором или через конвертор уровней.

→ Ссылка