Насколько надежен Arduino Uno Serial, через USB (ATmega16U2), требуется CRC?

serial atmega328 atmega16u2 reliability

У меня есть вопрос о надежности последовательной связи, в частности, нужно ли мне реализовывать CRC/контрольную сумму/ECC из-за ошибок передачи битов? Я

Однако я думаю, что общего ответа не существует, поскольку существуют различные способы реализации последовательной связи с чипом Arduino Uno Atmega328P.

  • (a) Последовательная связь осуществляется между двумя чипами Atmega328P и использует довольно длинные провода
  • (b) Последовательная связь осуществляется между двумя чипами Atmega328P с использованием довольно коротких проводов
  • (c) Последовательная связь осуществляется между одним Atmega328P и ATmega16U2, который принимает и пересылает сигналы по протоколу USB (например, на ПК)

Мой вопрос касается ATmega16U2. Расстояние (длина провода/линии) на плате Arduino R3 составляет около 2 см/1" максимум, что, как я ожидаю, снизит вероятность искажения сигнала. Предполагая, что протокол USB, который далее используется для передачи сигнала, сам по себе обеспечивает ECC/CRC/контрольные суммы, я задаюсь вопросом, не будет ли излишним реализовывать CRC при приеме и отправке сообщений через последовательную связь в случае (c), хотя я, однако, ожидаю, что это будет более необходимо для (b) и почти наверняка необходимо для (c).

Кроме того, если это имеет значение для ответа на вопрос, мне было интересно, повлияет ли источник питания (т. е. если Arduino Uno питается от USB-порта напряжением ~4,5 В или, скорее, через внешний адаптер питания 12 В) на «повреждаемость» сигналов на последовательных линиях TX/RX?

, 👍0


1 ответ


1

Если вы используете соответствующую буферизацию сигнала 0/5 В по длинным проводам, случай A, обнаружение и исправление ошибок не требуется. RS232, RS485, ваши данные будут в порядке (могут передаваться на расстояние до тысяч футов).

Более короткие провода, от устройства Atmega к устройству Atmega, мне никогда не приходилось использовать, даже на скоростях 115200, случай B, случай C.

16U2 к ПК, это будет зависеть от качества кабеля USB. Дифференциальный сигнал +/-3 В (аналогичный уровням RS485) имеет довольно высокую скорость, около 4 Мбит/с, поэтому вам нужен хороший кабель с хорошим экранированием.

,