Существует ли стандарт, описывающий протокол кадров данных UART?

«U» в «UART» означает «Универсальный», но мне трудно найти какой-либо стандарт, описывающий протокол кадрирования, используемый в UART; например, стартовый бит, стоповый бит, параметры четности и скорости передачи, которые вы видите в клиентах последовательной связи, таких как minicom или putty.

Я понимаю, что на данный момент существуют хорошо известные соглашения о том, как это делается, но такие стандарты, как RS-232/RS-422/D-subminiature, похоже, не описывают и не предлагают ничего, кроме физической сигнализации .

У меня также возникли проблемы с поиском спецификации для отображения последовательной сигнализации на распиновку разъема DE9, которая позволила бы оборудованию UART от разных поставщиков эффективно взаимодействовать через общую распиновку (например, разъем «нуль-модем»).

Все это достигается по соглашению (например, благодаря историческому доминированию на рынке нескольких битов последовательного оборудования, такого как 16 * 50), или я упускаю некоторые стандарты? TIA за понимание!

В комментарии к моему сообщению ( electronics.stackexchange.com/questions/389574/… ) Джейсон говорит, что это официально называется «Асинхронный код NRZ».

Ответы (1)

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

Что касается сопоставления последовательных линий с контактами разъема DE9, поначалу это может немного сбить с толку. Когда два устройства подключены с помощью RS232 и прямого кабеля, одна сторона является оконечным оборудованием данных (DTE), а другая — оборудованием передачи данных (DCE). Независимо от того, какая сторона является какой, контакты на кабеле всегда называются с точки зрения DTE. Это приводит к запутанной ситуации, когда DCE передает по линии приема (поскольку DTE будет принимать этот сигнал) и принимает по линии передачи (поскольку именно по ней будет передавать DTE). Большинство людей, как правило, хотят быть DTE, чтобы им не приходилось все переворачивать в голове. Если у вас есть два DTE, которые хотят общаться друг с другом, вам нужен нуль-модемный кабель.

Контакты на разъеме DE9 следующие:

  • Контакт 1 — обнаружение несущей данных (DCD)
  • Контакт 2 — прием данных (RD)
  • Контакт 3 — передача данных (TD)
  • Контакт 4 — готовность терминала данных (DTR)
  • Контакт 5 — Земля
  • Контакт 6 — набор данных готов (DSR)
  • Контакт 7 — запрос на отправку (RTS)
  • Контакт 8 — готов к отправке (CTS)
  • Контакт 9 — кольцевой индикатор (RI)

Большинство этих булавок существуют по устаревшим причинам, и маловероятно, что они вам понадобятся. Три, которые вам понадобятся, это передача данных (контакт 3), прием данных (контакт 2) и заземление (контакт 5). Если вы действительно подключаете эти сигналы к разъему DE9, то данные передачи и приема данных будут подключаться к соответствующим контактам уровня сигнала RS232 на микросхеме приемопередатчика RS232 (например, MAX232), а сторона логического уровня микросхемы RS232 будет подключаться к УАПП. Контакт заземления подключается к контакту заземления микросхемы приемопередатчика RS232 и к контакту заземления UART. Если вы начнете измерять сигналы на разъеме DE9 с помощью измерителя или осциллографа, следует иметь в виду, что трансивер RS232 инвертирует и сдвигает уровень всех сигналов. То, что было сигналом низкого логического уровня 0 вольт на UART, станет положительным напряжением от 5 до 15 вольт на разъеме DE9. То, что было высоким логическим уровнем на UART, станет отрицательным напряжением от -5 до -15 вольт на разъеме DE9.

Если вы на самом деле не используете разъем DE9, а просто соединяете два UART вместе на одной плате, то вы можете пропустить микросхемы приемопередатчика RS232. Примером того, где вы можете столкнуться с этим, является приложение, в котором вы подключаете микропроцессор к готовому радиомодулю, который использует интерфейс UART.

Как я уже говорил ранее, маловероятно, что вам понадобятся другие контакты. В основном они были необходимы, когда удаленная связь осуществлялась через телефонные модемы с коммутируемым доступом. Если у вас есть приложение, в котором говорится, что оно использует аппаратное управление потоком, то вам потребуются некоторые или все эти контакты. Вот для чего они нужны:

  • DCD — это сигнал от телефонного модема (DCE) к DTE о том, что он обнаруживает сигнал несущей от модема на дальнем конце. В основном это означает, что у вас есть связь.
  • DTR — это сигнал от DTE к DCE, который сообщает, что устройство включено и готово к использованию.
  • DSR — это сигнал от DCE к DTE, который сообщает, что устройство включено и готово к работе.
  • RTS — это сигнал от DTE к DCE, говорящий о том, что он хочет отправить данные.
  • CTS — это сигнал от DCE к DTE, говорящий о готовности к приему данных.

RTS и CTS являются наиболее часто используемыми выводами для аппаратного управления потоком данных. Если у вас есть две части DTE, которые хотят соединиться друг с другом через нуль-модемный кабель и использовать аппаратное управление потоком, то кабель должен будет соединить RTS с одной стороны с CTS с другой, и наоборот. Затем этот сигнал будет проходить через сторону уровня сигнала RS232 вашего чипа приемопередатчика RS232, а логическая сторона будет подключаться к контактам ввода-вывода общего назначения на вашем микропроцессоре, который будет активировать вывод RTS, когда он хочет установить связь, и который будет контролировать вывод CTS, чтобы увидеть когда другая сторона канала связи была готова к общению.

Альтернативы использованию аппаратного управления потоком:

  • Всегда будьте готовы к общению.
  • Имейте приложение, которое может легко восстанавливаться после пропущенных сообщений.
  • Используйте программное управление потоком. Это включает в себя использование специальных символов (таких как символ ASCII XON (передача включена) и символ ASCII XOFF (передача отключена) для ограничения передач.

Управление потоком, будь то аппаратное или программное обеспечение, — это не то, с чем ваш UART справится сам. Вам нужно будет иметь программное обеспечение в вашем приложении, которое обрабатывает его, если это необходимо. Многие приложения вообще не используют низкоуровневое управление потоком. Они работают достаточно быстро, чтобы обрабатывать низкоскоростные сообщения, которые происходят через UART, без использования управления потоком для дросселирования на низком уровне. На высоком уровне (например, «Я действительно подключен к устройству на дальнем конце?») они используют программное обеспечение более высокого уровня. Примером этого может быть какой-нибудь маломощный процессор, который общается по последовательному каналу с модулем, который устанавливает канал Ethernet. В этом случае вопрос высокого уровня «Я подключен?» будет обрабатываться с использованием таких вещей, как TCP/IP.