Как мне заставить Arduino Due получать сигналы RS-232/422?

Справочная информация по этому вопросу здесь: Что я могу сделать, чтобы уменьшить задержку от этих последовательных портов, которые подключены к ПК через адаптер Serial to USB?

Я подумываю о покупке Arduino Due, чтобы принимать 3 (ну, в конечном итоге 5, но в настоящее время 3) последовательных сигнала, один RS-232 и два RS-422. Суть в том, чтобы получить точные временные метки перед отправкой их на реальный компьютер для обработки.

У платы есть USB-порт, но мне, вероятно, придется собрать что-то, что позволит микроконтроллеру получить доступ к последовательным сигналам.

Я случайно знаю bukis об оборудовании. Это не просьба к кому-то нарисовать мне схемы подключения (на самом деле я не знаю, имеют ли отношение схемы подключения к этой проблеме, и я бы не смог их прочитать [пока], если бы вы это сделали). У меня просто нет языка, чтобы исследовать это. Я, вероятно, должен спаять вещи вместе? Последовательный порт (x5) к какой-то печатной плате? Позволит ли Due мне сделать три последовательных входа? Может ли он поддерживать пять? Что еще более важно, как вы можете сказать? (Я предполагаю, что поскольку у Due 54 контакта, а у последовательного порта по 9, а 5 * 9 = 45, то Due может поддерживать все пять устройств. Я на правильном пути?)

Ответы (2)

Due, который на самом деле представляет собой Atmel AT91SAM3X8E, имеет только 4 полных аппаратных последовательных интерфейса (хотя есть дополнительный UART, который может работать).

Первое, что я настоятельно рекомендую, это перестать думать о плате как об «Arduino» . Инструменты Arduino просто описывают реальное устройство. Это плата разработчика AT91SAM3X8E.
Тем не менее, первое, с чего нужно начать, — это прочитать страницу продукта и техническое описание (pdf) .

Функционально RS-422 выглядит как дифференциальная асинхронная последовательная шина. В зависимости от реализации он может быть полудуплексным (например, данные могут передаваться только в одном направлении за раз) или полнодуплексным (например, данные могут передаваться в обоих направлениях одновременно). Этот режим определяется аппаратно, так как полный дуплекс занимает больше физических проводов. Полудуплекс — это одна дифференциальная пара (и земля), для полного дуплекса требуются две дифференциальные пары (и одна земля).

Для полного дуплекса в топологии без шины (например, только два устройства) аппаратное обеспечение, необходимое для интерфейса шины, может быть таким же простым, как просто вставить драйвер/приемник дифференциальной линии между USART вашего MCU и другим устройством.

Для шинных топологий или полудуплексных соединений это становится более сложным, так как вам нужно иметь возможность отключить линейный драйвер, чтобы позволить другим устройствам общаться через общие соединения.

Кроме того, одно примечание: вы увидите множество линейных драйверов «RS-422/RS-485» и т. д. Это связано с тем, что спецификации физического уровня для них одинаковы, поэтому драйвер, который работает для RS-422 обычно работает для RS-485 и наоборот. На самом деле часто встречаются устройства, поддерживающие оба протокола.


К счастью, RS-422 выглядит точно так же, как RS-232, просто с другими физическими уровнями передачи сигналов (и один из них дифференциальный). Таким образом, преобразовать RS232 в RS422 так же просто, как просто вставить преобразователь. (RS485 более задействован).

Это означает, что вы, вероятно, можете использовать 5-й UART в AT91SAM3X8E для своего 5-го канала без проблем (или вы все равно можете просто использовать его для соединения RS232).


Что касается того, как на самом деле заставить ваше устройство говорить по RS-422, вам понадобится микросхема драйвера RS422 . К счастью , вариантов много . _ В DIP есть даже варианты для простого прототипирования.

Разрывные платы найти труднее, так как RS-422 довольно необычен для любителей. Я нашел один , но он выглядит довольно плохо спроектированным (без клеммы заземления!). Хотя для экспериментов, наверное, подойдет.

С первого взгляда кажется, что Due поддерживает 4 аппаратных последовательных порта. Если вы хотите пятый серийник, вы всегда можете сделать это программно на микроконтроллере. Обратите внимание, что речь идет о последовательных данных (rx/tx). Я не знаю, как он обрабатывает CTS и все такое. Это, вероятно, стоит вопроса само по себе. Но поскольку вы все равно используете USB с FTDI от Arduino к ПК, это может не иметь большого значения.

Вам придется беспокоиться о смещении уровня , так как у Due всего 3,3 В, поэтому вам нужно следить за тем, чтобы оно не превышалось.

Удачи. :-)

Ему в любом случае нужно смещение уровня, так как это RS422.
@ConnorWolf Согласен. Просто кое-что, о чем нужно знать. :-)
@kmort что означает CTS?
@canisrufus Очистить для отправки. Есть пара других, таких как DTR. Проверьте эту ссылку: en.wikipedia.org/wiki/Serial_port
@canisrufus - это линии «аппаратного управления потоком». По сути, в старые времена устройствам часто не хватало вычислительной мощности для обработки непрерывного последовательного потока данных. Линия CTS позволяет приемнику сообщить передатчику: «Сейчас я могу обработать больше данных»/«Сейчас я не могу обработать больше данных», а линия RTS позволяет передатчику сообщить приемнику: «У меня есть доступные данные», чтобы приемник мог запросить для данных/подготовки к утверждению CTS.