Rxd txd что это

Rxd txd что это

Настало время научиться работать с СОМ-портом. Несмотря на то, что на этом сайте есть статьи про него, в них не рассказывается, как он работает (на уровне схемотехники). Я считаю, что это может быть не интересно для прикладного программиста, но для человека, программирующего МК (т. е. электронщика) знание этой информиции лишним не будет.

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

Итак, слово USART расшифровывается как «универсальный синхронный и асинхронный приемник и передатчик» (УСАПП) («Universal Synchronous and Asynchronous Receiver and Transmitter»). Так называют устройство, умеющее работать с интерфейсом RS-232 (и его аналогами), на котором и построен СОМ-порт. Помимо этого, существуют еще устройства UART, которые могут работать только в асинхронном режиме. Мы будем использовать только асинхронный, т. к. современные компьютеры имеют 9-контактный СОМ порт без линии автоматических тактовых сигналов.

Напряжениями логического уровня в интерфейсе RS-232C (существуют еще RS-232A и RS-232B, но в компьютере используется RS-232C) являются +12 В (лог. 0) и -12 В (лог. 1). Состояние 0 В не используется для передачи данных и существует только при отключении питания СОМ-порта. В СОМ порте (на рисунке ниже представлена вилка) 9 проводников.

«Ножка» №Название сигналаОписание
1DCDОбнаружение устройства
2RXDПрием данных
3TXDПосылка данных
4DTRГотовность терминала к передаче данных
5GNDЗемля (общий)
6DSRData Set Ready. Готовность внешнего устройства к передаче данных
7RTSЗапрос на передачу
8CTSРазрешение передачи данных терминалу
9RIRing Indicator (специализированная сигнальная линия управления)

Как работать с компьютера с линиями 5 и 7 уже рассказывалось в статьях по СОМ-порту. Нас теперь интересуют линии 2 (RXD) и 3 (TXD). Именно по ним и происходит передача данных. Рассмотрим, как это реализовано.

Rx и Tx порты

Оба провода передачи данных работают совершенно одинаково. При этом RXD одного устройства соединяется с TXD другого и наоборот, TXD первого устройсва цепляется к RXD второго устройства. Только не забудьте соединить 5-й провод (землю)! 🙂

Изначально на линии передачи данных установлена лог. 1 (-12 В). Передача данных осуществляется кадрами по 5-8 бит. Чтобы обозначить начало и конец кадра, используют «старт-бит» и «стоп-бит». Приемник и передатчик заранее должны быть настроены на работу с одинаковыми параметрами для гарантированной передачи данных. Когда нужно передать данные, передатчик меняет состояние линии с лог. 1 на лог. 0 (+12 В). Это стартовый бит. После него начинается передача информационных битов. Этот момент (появление стартового бита) фиксируется приемником и в нем начинают «тикать часы». Биты передаются через одинаковые фиксированные моменты времени с определенной скоростью, называемой битрейтом (baudrate). Например, пусть этот интервал составляет 100 мкс. Передатчик держит стартовый бит (всегда лог. 0) в течение 100 мкс, а затем выставляет на линии первый информационный бит. Еще через 100 мкс он устанавливает второй бит и т.д.. Приемник, в свою очередь, обнаружив стартовый бит, ждет 100 мкс, затем ждет половину этого времени, т.е. 50 мкс (чтобы попасть как раз в середину первого бита), после чего начинает запоминать состояние линии каждые 100 мкс.

За информационными битами следуют бит четности и стоповые биты. Стоповые биты всегда имеют уровень -12 В (лог. 1) и служат одновременно паузой между кадрами данных. Если стоповый бит один, то пауза между кадрами меньше и скорость передачи данных выше. Если их два, то пауза будет дольше. Бит четности (P) служит для контроля правильности передачи данных. Если выставлен параметр четность как Odd (Нечетный), то бит четности будет таким, чтобы сумма всех отправленных информационных битов вместе с ним была обязательно нечетной. Если приемник, приняв кадр, установил, что сумма нечетная, то все верно, если она оказалась четной, значит, была ошибка в одном бите (или в 3-х, 5-ти, 7-ми, 9-ти). Этот способ достаточно примитивен и не обнаружит ошибки в 2-х, 4-х, 6-ти или 8-ми битах. Но наиболее вероятной является ошибка именно в 1 бит, а не в 2 и больше. Если четность установлена как Even (Четная), то сумма всех отправленных битов будет всегда четной.

Как видим, часы, по которым происходит передача и прием данных, синхронизируются по стартовому биту. Если они идут синхронно, то все отлично, если же нет, то момент считывания будет смещаться от середины бита в ту или иную сторону, но, поскольку битов немного (5-9, до 10 с битом четности), небольшая ошибка погоду не испортит и момент считывания не успеет сместиться в соседний бит. К тому же, МК содержит модуль коррекции принятых данных. В качестве часов в МК, используется, естественно, кварцевый резонатор. Вот здесь и нужно будет вспомнить о том, что я говорил в первой статье.

Существуют стандартные битрейты для передачи данных через интерфейс RS-232C.

  • 2400 bps (bps — бит в секунду)
  • 4800 bps
  • 9600 bps
  • 14400 bps
  • 19200 bps
  • 28800 bps
  • 38400 bps
  • 57600 bps
  • 76800 bps
  • 115.2 kbps
  • 230.4 kbps

Заметили связь между скоростями? Так вот, чаще всего используют 9600 бит/с. Для того, чтобы получить эти значения скоростей с высокой точностью, следует использовать резонаторы на те частоты, о которых говорилось в первой статье, например, 11,0592 МГц. Чем выше частота резонатора, тем выше и максимальная скорость. Для нашего МК с резонатором на 16 МГц возможна скорость до 2 Мбит/с. Но не надо забывать, что это скорость между битами в кадре, а в кадрах есть еще стоп-биты и биты четности. Поэтому реально скорость будет на 10-35% ниже. При использовании других резонаторов (4 МГц, 8 МГц и т. п.) будет возникать погрешность для первых 11 скоростей, скорости в 250 кбит/с и кратные будут без погрешностей. Чем больше погрешность, тем ниже устойчивость к помехам и выше вероятность ошибок. Наш МК может также передавать данные с двойной скоростью, что задается спецальным регистром. Ниже приведена схема модуля USART в МК AtMega16.

За работу USARTа отвечают несколько специальных регистров (они обозначены жирным шрифтом на рисунке выше). Во первых, следует выделить регистр UDR (USART Data Register). Он используется для хранения принятых/отправляемых данных. Сделан он особым образом, т.к. на самом деле регистров UDR 3 штуки. При записи значения в UDR происходит запись в тот, который изображен на рисунке верхним (UDR (transmit) или TXB). Это значение незамедлительно отправляется другому устройству через COM-порт и регистр очищается. Когда в МК приходит байт информации, он сохраняется в другом UDR-регистре (UDR (receive) или RXB), причем в верхнем RXB-регистре. Как только байт полностью принят, он автоматически копируется в нижний RXB-регистр, откуда его можно уже прочитать, а в верхний при этом принимается следующий байт (чтобы избежать пауз в работе и потери данных). Итак, при чтении данных из UDR берется принятый байт, а при записи в него данные сразу же отправляются через интерфейс приемнику. Если после приема двух байтов в оба RXB-регистра не произошло считывания из нижнего, то третий байт не будет принят USARTом и USART выставит флаг ошибки Data OverRun (DOR).

Существуют регистры управления и статуса USARTом: UCSRA, UCSRB и UCSRC. Рассмотрим в них подробно те биты, которые чаще всего используются.

    Бит 7 — RXC (Receive Comlete). Бит завершения приема. Автоматически устанавливается, если принимаются данные. При чтении принятых данных сбрасывается.

* Звездочку я поставил около тех битов, которые доступны для записи. Остальные биты доступны только для чтения. Некоторая информация, думаю, требует пояснения. Биты 7, 6, 5 могут использоваться для генерации прерываний. Обычно делают прерывание по приему данных. Многопроцессорный режим используется, когда к одному СОМ-порту цепляются сразу несколько МК. Например, Вы подключаете к компьютеру (или другому МК) устройство, в котором есть несколько МК, подключенных к одному интерфейсу RS-232C. Тогда обычно используют 9 битов данных, при этом первый бит сигнализирует о передаче адреса (если установлен) либо данных. МК, принимая остальные биты, если они являются адресом, сравнивает их со своим адресом. В случае совпадения он принимает кадры данных и отвечает на них, а все остальные МК «помалкывают». Если адрес не совпадает, МК реагирут только на первый бит, что уменьшает нагрузку на процессор.

    Бит 7 — RXCIE (Receive Comlete Interrupt Enable). Бит генерации прерывания при приеме данных. Если установлен, происходит прерывание для немедленной обработки принятых данных.

# Решеткой отмечен бит, доступный только для чтения. Все остальные доступны для чтения/записи.
Наконец, самый «страшный» регистр.

    Бит 7 — URSEL (USART Register SELect). Бит выбора регистра. 1 — UCSRC, 0 — UBRRH.

Чем же так страшен этот регистр управления USARTом? Он имеет тот же адрес, что и верхний регистр битрейта (0x80). Это означает, что процессор не видит разницы между этими регистрами. Для того, чтобы их можно было отличать, сделан седьмой бит URSEL. Если он равен единице, процессор работает с UCSRC, иначе с UBRRH. Это, возможно, справедливо не для всех МК серии MEGA, так что читайте Datasheet. Ниже обещанная таблица установки размера кадра данных.

Остались два регистра. Это регистры установки битрейта — UBRRH и UBRRL. В регистре UBRRH доступны биты 0-3 (если в UCSRC URSEL = 0). Регистр UBRRL доступен весь для сохранения восьми младших битов числа. В этих двух регистрах может быть сохранено 12-битное число (От 0 до 4095). Это число вычисляется по следующей формуле:

UBRR = fosc / (X * BAUD) — 1

Здесь X равно 16 при режиме с нормальной скоростью (бит U2X = 0) и 8 в режиме удвоенной скорости (бит U2X = 1), BAUD — нужный битрейт, fosc — частота кварцевого резнонатора. По этой формуле легко вычислить значение регистра самостоятельно, но существуют также специальные таблицы наиболее типичных битрейтов и соответствующих значений UBRR. Такую таблицу из-за её громоздкости приводить не буду. Ее можно найти в Datasheetе к МК. Для AtMega16 таблица находится на стр. 169 его Datasheetа.

В заключение хотелось бы отметить, что COM-порт гарантированно будет работать на больших скоростях (0,5 — 2 Мбит/с) при длине кабеля до 8 метров. При небольших скоростях длину кабеля можно увеличить до 15 метров. При большей длине, возможно, будут ошибки. Хотя. хотя можно в случае надобности придумывать различные ухищрения и особые алгоритмы, позволяющие увеличить длину кабеля, возможно, в ущерб скорости. Тем не менее, помимо RS-232 есть еще и другие подобные интерфейсы, среди которых есть и низковольтные помехоустойчивые с дифференциальными линиями, где можно использовать провода длиной до километра.

На этом теоретический материал закончен. Практическая реализация — в следующей статье.

Интерфейсы микроконтроллеров (Часть 1)

Итак что же такое интерфейс?
Вездесущая Википедия дает такой ответ: Физический (аппаратный) интерфейс — способ взаимодействия физических устройств. Чаще всего речь идёт о компьютерных портах.
Т.е. если мы попытаемся связать наш микроконтроллер с другими устройствами нам потребуется знать определенный набор правил, методов и характеристик оборудования, чтобы сделать это безболезненно. Давайте рассмотрим основные типы интерфейсов, которые мы можем встретить «на борту» микроконтроллера.

Последовательный интерфейс UART/USART

Универсальный асинхронный или универсальный синхронно/асинхронный приемопередатчик (Universal Synchronous/Asynchronous Receiver and Transmitter — UART или USART) — удобный и простой последовательный интерфейс для организации информационного канала обмена микроконтроллера с внешним миром. Способен работать в дуплексном режиме (одновременная передача и прием данных). Он поддерживает протокол стандарта RS-232, что обеспечивает возможность организации связи с персональным компьютером.
Изначально использовался в компьютерах для большинства периферийных устройств, таких как плоттер, удаленный принтер, мышь, внешний модем и т. д. До настоящего времени для последовательной связи IBM PC-совместимых компьютеров используются адаптеры с интерфейсом RS-232С (новое название EIA-232D). В современном IBM PC-совместимом компьютере может использоваться до четырех последовательных портов, имеющих логические имена соответственно COM1, COM2, COM3 и COM4. Основой последовательного адаптера является микросхема UART (Universal Asynchronous Receiver/Transmitter) — универсальный асинхронный приемопередатчик. Обычно используется микросхема UART 16550A. Она имеет 16-символьный буфер на прием и на передачу и, кроме того, может использовать несколько каналов прямого доступа в память DMA -habrahabr.ru/post/37455/ . При передаче микросхема UART преобразует параллельный код в последовательный и передает его побитно в линию, обрамляя исходную последовательность битами старта, останова и контроля. При приеме данных UART преобразует последовательный код в параллельный (разумеется, опуская служебные символы). Непременным условием правильной передачи (приема) является одинаковая скорость работы приемного и передающего UART, что обеспечивается стабильной частотой кварцевого резонатора. Основным преимуществом последовательной передачи является возможность пересылки данных на большие расстояния, как правило, не менее 30 метров. В IBM PC-совместимых персональных компьютерах из 25 сигналов, предусмотренных стандартом RS-232, используются в соответствии с EIA только 9; таким образом, в данном интерфейсе как правило применяются 9-контактные разъемы типа DB-Shell.
В современных компьютерах UART и СОМ порт уже не применяются напрямую, но они получили вторую жизнь для связи с различными нестандартными внешними устройствами в числе которых вошли и устройства на микроконтроллерах. Аппаратная часть при этом стала значительно проще для связи микроконтроллеров друг с другом подключение UART осуществляется по трём линиям: RXD – приём, TXD – передача и GND – общий (минус).

Rxd txd что это

Подключать UART надо, так сказать «наоборот» RXD к TXD, а TXD к RXD как на картинке ниже:

С помощью UART также можно можно связать микроконтроллер и компьютер, но есть одна проблема: у UART интерфейса логические уровни 0 и +5 вольт, а в компьютере логические уровни в интерфейсе RS-232 могут быть от -25 до -3 вольт и от +3 до +25 вольт. Для этого применяют специальный преобразователь уровней на микросхеме MAX232:

Все сигналы UART передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи. Отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю — высокий уровень. Более подробно о логических уровнях смотрите тут — www.drive2.ru/b/2528993/).
Формат передаваемых данных показан на рисунке 4. Собственно данные (5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение — не более 10%). Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.

Последовательный периферийный интерфейс SPI

Последовательный периферийный трехпроводный интерфейс SPI (Serial Peripheral Interface) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройствами, такими, как цифровые потенциометры, ЦАП/АЦП, FLASH-ПЗУ и др. С помощью этого интерфейса удобно производить обмен данными между несколькими микроконтроллерами AVR.
Кроме того, через интерфейс SPI может осуществляться программирование микроконтроллера.
Изначально он был придуман компанией Motorola, а в настоящее время используется в продукции многих производителей. Его наименование является аббревиатурой от ‘Serial Peripheral Bus’, что отражает его предназначение — шина для подключения внешних устройств. Шина SPI организована по принципу ‘ведущий-подчиненный’. В качестве ведущего шины обычно выступает микроконтроллер, но им также может быть программируемая логика, DSP-контроллер или специализированная ИС. Подключенные к ведущему шины внешние устройства образуют подчиненных шины. В их роли выступают различного рода микросхемы, в т.ч. запоминающие устройства (EEPROM, Flash-память, SRAM), часы реального времени (RTC), АЦП/ЦАП, цифровые потенциометры, специализированные контроллеры и др.

Главным составным блоком интерфейса SPI является обычный сдвиговый регистр, сигналы синхронизации и ввода/вывода битового потока которого и образуют интерфейсные сигналы. Таким образом, протокол SPI правильнее назвать не протоколом передачи данных, а протоколом обмена данными между двумя сдвиговыми регистрами, каждый из которых одновременно выполняет и функцию приемника, и функцию передатчика. Непременным условием передачи данных по шине SPI является генерация сигнала синхронизации шины. Этот сигнал имеет право генерировать только ведущий шины и от этого сигнала полностью зависит работа подчиненного шины.

Электрическое подключение
Существует три типа подключения к шине SPI, в каждом из которых участвуют четыре сигнала.

Самое простое подключение, в котором участвуют только две микросхемы, показано на рисунке 6. Здесь, ведущий шины передает данные по линии MOSI синхронно со сгенерированным им же сигналом SCLK, а подчиненный захватывает переданные биты данных по определенным фронтам принятого сигнала синхронизации. Одновременно с этим подчиненный отправляет свою посылку данных. Представленную схему можно упростить исключением линии MISO, если используемая подчиненная ИС не предусматривает ответную передачу данных или в ней нет потребности. Одностороннюю передачу данных можно встретить у таких микросхем как ЦАП, цифровые потенциометры, программируемые усилители и драйверы. Таким образом, рассматриваемый вариант подключения подчиненной ИС требует 3 или 4 линии связи. Чтобы подчиненная ИС принимала и передавала данные, помимо наличия сигнала синхронизации, необходимо также, чтобы линия SS была переведена в низкое состояние. В противном случае, подчиненная ИС будет неактивна. Когда используется только одна внешняя ИС, может возникнуть соблазн исключения и линии SS за счет жесткой установки низкого уровня на входе выбора подчиненной микросхемы. Такое решение крайне нежелательно и может привести к сбоям или вообще невозможности передачи данных, т.к. вход выбора микросхемы служит для перевода ИС в её исходное состояние и иногда инициирует вывод первого бита данных.

При необходимости подключения к шине SPI нескольких микросхем используется либо независимое (параллельное) подключение (рис. 7), либо каскадное (последовательное) (рис. 8).

Независимое подключение более распространенное, т.к. достигается при использовании любых SPI-совместимых микросхем. Здесь, все сигналы, кроме выбора микросхем, соединены параллельно, а ведущий шины, переводом того или иного сигнала SS в низкое состояние, задает, с какой подчиненной ИС он будет обмениваться данными. Главным недостатком такого подключения является необходимость в дополнительных линиях для адресации подчиненных микросхем (общее число линий связи равно 3+n, где n-количество подчиненных микросхем). Каскадное включение избавлено от этого недостатка, т.к. здесь из нескольких микросхем образуется один большой сдвиговый регистр. Для этого выход передачи данных одной ИС соединяется со входом приема данных другой, как показано на рисунке 8. Входы выбора микросхем здесь соединены параллельно и, таким образом, общее число линий связи сохранено равным 4. Однако использование каскадного подключения возможно только в том случае, если его поддержка указана в документации на используемые микросхемы. Чтобы выяснить это, важно знать, что такое подключение по-английски называется ‘daisy-chaining’.
Протокол передачи
Протокол передачи по интерфейсу SPI предельно прост и, по сути, идентичен логике работы сдвигового регистра, которая заключается в выполнении операции сдвига и, соответственно, побитного ввода и вывода данных по определенным фронтам сигнала синхронизации. Установка данных при передаче и выборка при приеме всегда выполняются по противоположным фронтам синхронизации. Это необходимо для гарантирования выборки данных после надежного их установления. Если к этому учесть, что в качестве первого фронта в цикле передачи может выступать нарастающий или падающий фронт, то всего возможно четыре варианта логики работы интерфейса SPI. Эти варианты получили название режимов SPI и описываются двумя параметрами:

CPOL — исходный уровень сигнала синхронизации (если CPOL=0, то линия синхронизации до начала цикла передачи и после его окончания имеет низкий уровень (т.е. первый фронт нарастающий, а последний — падающий), иначе, если CPOL=1, — высокий (т.е. первый фронт падающий, а последний — нарастающий));
CPHA — фаза синхронизации; от этого параметра зависит, в какой последовательности выполняется установка и выборка данных (если CPHA=0, то по переднему фронту в цикле синхронизации будет выполняться выборка данных, а затем, по заднему фронту, — установка данных; если же CPHA=1, то установка данных будет выполняться по переднему фронту в цикле синхронизации, а выборка — по заднему). Информация по режимам SPI обобщена в таблице.

Ведущая и подчиненная микросхемы, работающие в различных режимах SPI, являются несовместимыми, поэтому, перед выбором подчиненных микросхем важно уточнить, какие режимы поддерживаются ведущим шины. Аппаратные модули SPI, интегрированные в микроконтроллеры, в большинстве случаев поддерживают возможность выбора любого режима SPI и, поэтому, к ним возможно подключение любых подчиненных SPI-микросхем (относится только к независимому варианту подключения). Кроме того, протокол SPI в любом из режимов легко реализуется программно.

Реализация UART в Arduino

Все платы Arduino, построенные на основе оригинальных, имеют минимум один интерфейс UART, продвинутые же платы, типа Arduino Mega 2560 Или Arduino Due, имею сразу 4 аппаратных интерфейса! Они не загружают контроллер, так как они отделены от ядра; всё, что необходимо – это сконфигурировать порт и запихать данные в буфер, после чего операции передачи пойдут независимо от вас.

Конечно, существуют и программные реализации UART, но они нагружают процессор. В любом случае, лучше использовать сначала аппаратные интерфейсы, а потом уже начинать придумывать что-то программное.

Контроллеры Arduino используют логические уровни такие же, каким является питание, то есть для самой популярной платы Arduino UNO уровни будут равны – ноль = 0В, 1 = 5В.

Выводы подключены к преобразователю интерфейсов через резисторы с сопротивлением 1 КОм, а к гребёнкам по бокам платы – напрямую, поэтому сигналы с гребёнок будут иметь больший приоритет. Периодически это мешает прошивать платы с подключенным датчиком по UART, так как для прошивки тоже используется UART.

Микросхема преобразователя интерфейсов не делает из себя ещё один COM-интерфейс для компьютера, она лишь эмулирует его. Несмотря на это, все программы, которые работают с COM-портом посредством Windows API (Win32 API), не отличат порт от физического порта компьютера.

Класс Serial – RS232 в лучших традициях Arduino

Класс Serial – RS232

Для удобной работы с последовательным портом разработчики Arduino написали целую библиотеку, которая значительно упрощает работу с портом, абстрагируя конечного пользователя от простой, «железной» работы с регистрами. Класс имеет множество функций, которые будут рассмотрены нами далее. Но сначала надо понять, как же компьютер примет и обработает, а точнее покажет то, что мы ему передали.

Всё дело в том, что каждый символ раскладки клавиатуры – это тоже байт. И если просто взять и отправить в порт число 65, он не выведет две цифры 6 и 5, а выведет заглавную латинскую букву А. Почему так? Потому что в таблице кодировки буква А имеет код 65. Класс позволяет выбрать между текстовым и бинарным методом передачи данных, то есть мы сможем отправить число 65 и как букву, и как число.

Подробное объяснение txd

Для передачи данных txd обычно используется одна из логических линий связи, таких как провод растекания (например, провод медь), оптическое волокно, радиоволны и т.д. Когда устройство генерирует сигнал txd, это означает, что оно готово передавать данные.

Примером использования txd является последовательный порт RS232, широко используемый для подключения устройств к компьютерам. В RS232 есть две логические линии для передачи и приема данных – txd и rxd (прием данных). Когда устройство хочет отправить данные через последовательный порт, оно устанавливает линию txd в активное состояние, и данные начинают передаваться.

Кроме RS232, txd также используется в других коммуникационных протоколах, таких как USB, Ethernet, CAN и других. В каждом из этих протоколов существует спецификация, которая определяет формат данных и правила передачи данных через txd.

Подробное объяснение rxd

На линии RXD информация передается в виде электрических импульсов сигнала. RXD может быть использован в различных коммуникационных протоколах, таких как UART (Universal Asynchronous Receiver/Transmitter), SPI (Serial Peripheral Interface), I2C (Inter-Integrated Circuit) и других.

В простейшем случае, RXD используется для однонаправленной передачи данных от источника к получателю. Источник генерирует сигналы на линии RXD, а получатель считывает эти сигналы и принимает передаваемую информацию.

Например, если речь идет о передаче данных между компьютером и микроконтроллером через UART, то компьютер генерирует сигналы на линии RXD, которые интерпретируются микроконтроллером для получения передаваемой информации.

Таким образом, RXD является важной линией для приема данных и позволяет устройствам взаимодействовать друг с другом в процессе обмена информацией.

Подключение UART (Windows)

UART CP2103

Мы уже писали, что низковольтный последовательный порт UART может заметно облегчить процесс диагностики современной электронной техники. В этом материале расскажем, как его правильно подключить к компьютеру с операционной системой Windows.

Рассмотрим самый популярный UART, собранный на микросхеме CP2103.

Если подключить вновь приобретенный модуль к USB-разъему компьютера, мы увидим следующее сообщение:

В системе нет драйвера

Чтобы убедиться, что Windows обнаружила наш модуль UART, откроем панель управления, а в ней диспетчер устройств.

диспетчер задач

Теперь видно, что система обнаружила модуль UART на микросхеме CP2103, но драйвера к нему не нашла, так как около значка устройства стоит восклицательный знак. Далее нужно по этой ссылке сохранить драйвер устройства.

загрузка драйвера

Сохраненный файл нужно распаковать в предварительно созданную папку на компьютере.

установка драйвера

Если операционная система 32-х разрядная — необходимо запустить файл CP210xVCPInstaller_x86, а если 64-х разрядная — CP210xVCPInstaller_x64.

продолжение установки

завершение установки

Принимаем условия соглашения и нажимаем «далее».

проверка установки

Нажимаем «готово» и возвращаемся в диспетчер устройств.

проверка установки

Здесь видно, что наш модуль правильно определился и переехал в раздел «Порты (COM и LPT)». Нужно запомнить номер COM-порта, который система присвоила модулю UART.

Поскольку, начиная с Windows7 Microsoft перестала поставлять программу «Гипертерминал», найдем ей достойную замену. Можно скачать бесплатную терминальную программу PyTTY с официального сайта.

сайт PuTTY

На сайте предлагается выбрать файл с нужной разрядностью Windows для загрузки.

загрузка PuTTY

Затем нужно согласиться с тем, что мы собираемся открыть исполняемый файл.

подтверждение

Но на этом Windows не успокаивается, она не знакома с производителем файла, поэтому нажимаем кнопку «запустить».

еще одно

После установки в разделе «Программы» появляется пункт PuTTY. Для дальнейшей работы его необходимо запустить.

запуск PuTTY

В форме программы нужно выбрать «Connection type — Serial», затем в поле «Serial line» ввести номер COM-порта, который мы запомнили из диспетчера устройств и установить скорость соединения. Для приставок DVB-T2 выбираем 115200, для другого оборудования скорости могут быть другими.

Затем нужно проверить работоспособность модуля UART. Нажимаем кнопку «Open» и попадаем в терминал. Далее замыкаем контакты RX и TX модуля между собой и набираем символы на клавиатуре. При замкнутых между собой выводах RX и TX на экране терминала должен печататься текст, набираемый на клавиатуре, при разомкнутых — не должен печататься.

Проверка работы UART

Теперь можно подключать наш диагностический модуль к испытуемому устройству. Помните, что сигналы приема и передачи нужно «крестить» — то есть RX модуля UART соединять с TX устройства, а TX — с RX устройства.

Подключение UART к приставке

Если на экране терминала появляется масса нечитаемых символов, значит необходимо изменить скорость порта.

Программатор CH341a

Использовать в качестве UART можно и программатор на микросхеме CH341a. Для этого необходимо удалить перемычку PROG / UART и установить драйвер последовательного режима работы. Процедура установки драйвера и запуска PuTTY аналогична представленной выше.

Понравилась статья — поделитесь с друзьями:

Принципы обмена данными по последовательному интерфейсу RS-232C

Интерфейс RS-232C предназначен для соединения двух устройств (см. рисунок 5.1), находящихся на расстоянии до 15 м с предельной скоростью обмена данными около 10 кБайт/с. Линия TxD передачи первого устройства через преобразователь уровней RS-232C/ТТЛ соединяется с линией RxD приема второго и наоборот (режим обмена full duplex). Дополнительно используются общий и экранирующий сигналы интерфейса. Для управления соединенными устройствами применяется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем введения в протокол обмена дополнительных сигналов интерфейса для обеспечения функций определения статуса и управления.

Данные по интерфейсу RS-232C передаются в последовательном коде по кадрам – порциям данных, обрамленных служебной информацией (см. рисунок 5.2). Когда обмена данными нет, на линиях RxD или ТxD присутствует высокий уровень сигнала. Кадр начинается со стартового бита (сигнальные линии RxD или ТxD переводятся в состояние логического нуля), за которым следует младший бит слова данных, состоящего из 5-9 информационных разрядов). Далее (в зависимости от режима) может следовать бит четности (паритета). Завершают кадр один или два стоповых бита. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми (допустимое расхождение — не более 10%).

Рисунок 5.1 – Обобщенная функционально-структурная схема соединения

двух устройств с помощью интерфейса RS-232C

Рисунок 5.2 – Формат кадра при обмене данными по интерфейсу RS-232C

5.1.2 Организация модулей USART в микроконтроллере AVR АТMEGA128. Все микроконтроллеры AVR семейства MEGA имеют в своем составе модули универсального синхронно/асинхронного приемо-передатчика USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter). В микроконтроллер AVR АТMEGA128 встроены два таких модуля USART0 и USART1. Каждый модуль USART состоит из трех частей: блока тактирования, блока передатчика и блока приемника. Блок тактирования включает в себя устройство синхронизации (при работе в синхронном режиме) и контроллер скорости передачи данных. Блок передатчика включает одноуровневый буфер, регистр сдвига, схему формирования четности (для синхронного режима) и схему управления. Блок приемника состоит из схемы восстановления тактового сигнала и данных, схемы контроля четности (для синхронного режима), буферного и сдвигового регистров, а так же схемы управления. Для упрощения описания далее будут рассматриваться ресурсы только модуля USART1 микроконтроллера AVR АТMEGA128. Работа с модулем USART0 будет проводиться аналогично.

Модуль USART1 имеет следующие программно–доступные регистры:

UDR1 – регистр данных;

UСSR1A, UСSR1B, UСSR1C – регистры управления/статуса;

UBRR1H, UBRR1L – регистры скорости передачи данных.

Рассмотрим их функциональное назначение.

В режиме передатчика запись данных в регистр UDR1, расположенный по адресу 9Ch(BCh), инициирует передачу данных (данные из регистра UDR1 пересылаются в регистр сдвига и подаются на линию ТxD побитово). В режиме приемника считывание полученных данных осуществляется из регистра UDR1. Инициализация и контролирование режимов работы модуля UART1 происходит с помощью регистров управления/статуса UСSR1A (см. рисунок 5.3), UСSR1B (см. рисунок 5.4), UСSR1C (см. рисунок 5.5).

№ бита
9Вh(ВВh)RXC1TXC1UDRE1FE1DOR1UPE1U2X1MPCM1

Рисунок 5.3 – Регистр управления/статуса UCSR1A.

Описание битов регистра управления/статуса UCSR1A приведено ниже:

Бит 7 – RXC1 – устанавливается, если в буфере UDR есть непрочитанные данные, и сбрасывается, когда приемный буфер пуст (нет непрочитанных данных). Если прием запрещен, этот бит всегда читается как 0. Этот бит может использоваться для вызова прерывания по приему данных.

Бит 6 – TXC1 – устанавливается, когда буфер передачи UDR пуст.

Бит 5 – UDRE1 – устанавливается, когда регистр данных пуст.

Бит 4 – FE1 – признак ошибки кадра.

Бит 3 – DOR1 – переполнение приемного буфера.

Бит 2 – UPE1 – ошибка бита четности.

Бит 1 – U2X1 – бит управления скоростью передачи (0 – стандартная, 1 – удвоенная скорость).

Бит 0 – MPCM1 – 0 – стандартный, 1 – мультипроцессорный режим работы.

№ бита
9Ah(ВAh)RXCIE1TXCIE1UDRIE1RXEN1TXEN1UCSZ12RXB81TXB81

Рисунок 5.4 – Регистр управления/статуса UCSR1B

Описание битов регистра управления/статуса UCSR1В приведено ниже:

Бит 7 – RXCIE1 – разрешение прерывания по завершению приема (при установке бита RXC1 в регистре UCSR1А).

Бит 6 – TXCIE1 – разрешение прерывания по завершению передачи (при установке бита TXC1 в регистре UCSR1А).

Бит 5 – UDRIE1 – разрешение прерываний при очистке регистра данных UDR1 и установке флага UDRE1 регистре UCSR1А.

Бит 4 – RXEN1 – установка этого бита разрешает работу приемника USART.

Бит 3 – TXEN1 – установка этого бита разрешает работу передатчика USART.

Бит 2 – UCSZ12 – в сочетании с битами UCSZ11:UCSZ10 регистра UCSRC устанавливает размер кадра данных (см. таблицу 5.1).

Таблица 5.1. – Размер кадра данных

UCSZ12UCSZ11UCSZ10Размер данных
5 бит
6 бит
7 бит
8 бит
9 бит

Бит 1 – RXB81 – формат принимаемых данных 9 бит.

Бит 0 – TXB81 – формат передаваемых данных 9 бит.

№ бита
9Dh(BDh)UMSEL1UPM11UPM10USBS1UCSZ11UCSZ10UCPOL1

Рисунок 5.5 – Регистр управления/статуса UCSR1C.

Описание битов регистра управления/статуса UCSR1С приведено ниже:

Бит 6 – UMSEL – бит выбора режима работы USART (0-асинхронный. 1-синхронный).

Биты 5, 4 – UPM11, UPM10 – определяют режим проверки четности при приеме и при передаче данных (см. таблицу 5.2).

Таблица 5.2 – Установки режима четности

UPM1UPM0Режим четности
отключен
не используется
проверка четности
проверка нечетности

Бит 3 – USBS1 – определяет количество стоповых битов для передатчика. Приемник игнорирует этот бит (0 – один стоповый бит, 1 – два стоповых бита).

Биты 2,1 – UCSZ11, UCSZ10 – в сочетании с битом UCSZ12 регистра UCSR1В устанавливают размер кадра данных (см. таблицу 5.1);

Бит 0 – UCPOL1 – в асинхронном режиме должен быть равен 0.

Скорость передачи данных VBAUD (в бодах, бит/с) определяется из выражения 5.1 и задается путем записи 12-разрядного значения в регистры UBRR1L 98h(В8h) и UBRR1H 99h(B9h). В регистре UBRR1H используются только младшие 4 разряда.

Значение, записываемое в регистры UBRR1H:UBRR1L, будет соответственно определяться по формуле 5.2:

Стандартные значения делителя , соответствующие стандартным скоростям передачи данных, для тактовой частоты МГц микроконтроллера, входящего в состав лабораторного макета, приводятся в таблице 5.3. При этом необходимо учитывать значение – бита U2X1 управления скоростью передачи (0 – стандартная, 1 – удвоенная скорость), расположенного в первом разряде регистра UCSR1A.

Таблица 5.3 – Значения делителей частоты модуля USART

для различных значений скорости передачи данных

при нулевой погрешности установки скорости

, бит/сМГц
U2X1=0U2X1=1

Пример программного кода инициализации модуля USART1 для режима асинхронного считывания данных на скорости 144400 бит/с (в формате 8 бит без бита четности) на языке С приводится ниже:

UCSR1A=0x00; установка стандартного режима задания скорости

UCSR1B=0x90; установка 7-го и 4-го битов регистра UCSR1B для

инициализации USART1 в режиме приемника и разрешения прерывания по завершению приема кадра;

UCSR1C=0x06; установка формата кадра: 8 бит данных с отключенным

UBRR1H=0x00; установка значения делителя (47) соответствующего

UBRR1L=47; скорости приемаданных 14400 бит/с.

5.2 Описание лабораторной установки

Лабораторная работа выполняется в индивидуальном порядке. На каждом рабочем месте должны быть установлены: многофункциональный лабораторный макет на базе микроконтроллера AVR ATMEGA 128, ПЭВМ типа IBM PC/AT c инсталлированным программным обеспечением: операционной системой MS–WINDOWS v. 9x, 2000, XP, программатором на основе кросс-компилятора языка программирования C CodeVision AVR, утилитой Terminal для работы с последовательным интерфейсом RS232C. Задания выполняются на лабораторном макете на базе 8-ми разрядного микроконтроллера AVR ATMEGA 128. Дополнительно в работе используется кабель с 9-контактными разъемами DB-9 (см. рисунок 1.8) для соединения лабораторного макета с ПЭВМ через последовательный интерфейс RS232C.

Назначение сигналов интерфейса RS232C следующее:

FG – защитное заземление (экран);

– TxD – данные, передаваемые компьютером в последовательном коде

– RxD – данные, принимаемые компьютером в последовательном коде

RTS – сигнал запроса передачи. Активен во все время передачи;

CTS – сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника;

DSR – готовность данных. Используется для задания режима модема;

SG – сигнальное заземление, нулевой провод;

DCD – линия детектирование принимаемого сигнала;

DTR – готовность выходных данных;

RI – индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети;

Для трехпроводной двунаправленной линии связи используются сигналы RxD, TxD и SG. Все 10 сигналов интерфейса задействуются только при работе с модемом. Модули USART0 и USART1 входят в состав микроконтроллера. Дополнительно в лабораторном макете содержится блок преобразования уровней RS232/ТТЛ. Для связи с ПЭВМ через СОМ – порт используется только асинхронный режим работы интерфейса RS232С. Подробное описание лабораторного макета приведено в пункте 1.2 лабораторной работы № 1.

Работа с программой Terminal (см. рисунок 5.6) выполняется путем настройки соответствующих параметров протокола обмена в верхней части рабочего окна и ввода отправляемых (в области Transmit) или наблюдения принимаемых (в области Receive) данных в десятичной, шестнадцатеричной или двоичной кодировке.

Рисунок 5.6 – Рабочее окно программы Terminal

5.3 Порядок проведения работы и указания по ее выполнению

Перед началом выполнения практической части лабораторной работы проводится экспресс–контроль знаний по принципам функционирования модулей USART, входящих в состав микроконтроллера AVR ATMEGA 128, а также по протоколу обмена данными по интерфейсу RS232C. При подготовке к лабораторной работе необходимо составить предварительный вариант листинга программы, в соответствие с индивидуальным заданием (см. таблицу 5.4).

Задание. Разработать в среде программирования Code Vision AVR программу на языке С для связи микроконтроллера AVR ATMEGA 128 с ПЭВМ по интерфейсу RS232C в соответствие с параметрами протокола обмена, приведенными в таблице 5.4.

Порядок выполнения задания:

1. Включить лабораторный макет (установить выключатель электропитания в положение I, и убедиться в свечении индикатора электропитания красным цветом).

2. Запустить компилятор Code Vision AVR.

3. Создать пустой проект.

4. Создать файл ресурса для кода программы и подключить его к проекту.

5. Ввести код исходного модуля программы обмена данными между микроконтроллером AVR ATMEGA 128 с ПЭВМ по интерфейсу RS232C в соответствие с индивидуальным заданием, приведенным в таблице 5.4.

6. Выполнить компиляцию (нажав клавишу F9) исходного модуля программы и устранить ошибки, полученные на данном этапе.

7. Настроить параметры программатора.

8. Проверить правильность подключения интерфейсного кабеля RS232 к разъемам лабораторного макета и ПЭВМ.

9. Запустить на ПЭВМ программу Terminal, установить необходимые параметры протокола обмена данными, выбрать номер последовательного порта (СОМ1 или СОМ2), к внешнему разъему которого подключен кабель микроконтроллера, и нажать на кнопку Connect в верхнем левом углу рабочего окна программы.

10. Создать загрузочный модуль программы (нажав комбинацию клавиш Shift+F9) и выполнить программирование микроконтроллера.

11. Проверить работоспособность загруженной в микроконтроллер программы и показать результаты работы преподавателю.

12. В случае некорректной работы разработанной программы, выполнить аппаратный сброс микроконтроллера, провести отладку исходного модуля программы и заново проверить функционирование программы, повторив выполнение пунктов 7 – 12.

Пример выполнения задания. Разработать программу для передачи 20 чисел (от 0 до 19) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 19200 бит/с, режим обмена асинхронный, 7 битов данных без бита четности.

Решение. Исходя из параметров обмена необходимо настроить регистры управления/статуса и скорости передачи данных модуля USART1 а затем в цикле вывести данные в регистр UDR1. Алгоритм программы приводится на рисунке 5.7, полный текст исходного модуля программы на языке С с подробными комментариями приводится ниже:

#include Подключить заголовочный файл mega128.h;

#include подключить заголовочный файл delay.h;

char i; описание глобальной переменной i;

UCSR1A=0x00; установка стандартного режима задания скорости передачи данных;

UCSR1B=0x08; установка 3-го бита регистра UCSR1B для

инициализации USART1 в режиме передатчика;

UCSR1C=0x04; установка формата кадра: 7 бит данных с отключенным режимом четности;

UBRR1H=0x00; установка значения делителя (35) соответствующего

UBRR1L=35; скорости приемаданных 19200 бит/с;

delay_ms(20); установить временную задержку 20 мс;

UDR1=i; > выполнить передачу значения параметра цикла i;

> завершающая операторная скобка программы;

Таким образом, 20 числовых значений (от 0 до 19) будут переданы в ПЭВМ и будут зафиксированы предварительно запущенной программой Terminal с соответствующими настройками протокола обмена данными.

Рисунок 5.7 – Алгоритм программы передачи данных из микроконтроллера

Т AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C

Таблица 5.4 – Варианты индивидуальных заданий

№ п.п.Задание
Разработать программу передачи 100 чисел (от 0 до 99) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 19200 бит/с, режим обмена асинхронный, 8 битов данных без бита четности.
Разработать программу передачи 50 чисел (от 20 до 69) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 38400 бит/с, режим обмена асинхронный, 8 битов данных без бита четности.
Разработать программу передачи 20 чисел (от 10 до 29) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 57600 бит/с, режим обмена асинхронный, 7 битов данных без бита четности.
Разработать программу передачи 10 чисел (от 0 до 9) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 14400 бит/с, режим обмена асинхронный, 6 битов данных без бита четности.
Разработать программу передачи 20 чисел (от 10 до 29) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 19200 бит/с, режим обмена асинхронный, 7 битов данных без бита четности, данные передаются через каждую секунду.*
Разработать программу передачи 50 чисел (от 10 до 59) из ПЭВМ в микроконтроллер AVR ATMEGA 128 по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 14400 бит/с, режим обмена асинхронный, 7 битов данных без бита четности. При получении последнего информационного кадра выдать сигнал завершения приема на блок светодиодной индикации.
Разработать программу передачи 200 чисел (от 0 до 199) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 38400 бит/с, режим обмена асинхронный, 8 битов данных без бита четности.
Разработать программу передачи номера нажатой клавиши 3-х кнопочной клавиатуры (см. лабораторную работу №2) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 19200 бит/с, режим обмена асинхронный, 8 битов данных без бита четности.*
Разработать программу передачи номера нажатой клавиши матричной клавиатуры (см. лабораторную работу №2) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 14400 бит/с, режим обмена асинхронный, 8 битов данных без бита четности.*
Разработать программу передачи 10 чисел (от 0 до 9) из ПЭВМ в микроконтроллер AVR ATMEGA 128 по интерфейсу RS232C в соответствие с протоколом: модуль USART1, скорость обмена данными 19200 бит/с, режим обмена асинхронный, 8 битов данных без бита четности. Выполнить индикацию принятых данных на экране цифрового индикатора.*

* задания повышенной сложности.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Rxd txd что это

Serial Programming Guide for POSIX Operating Systems

5th Edition
Michael R. Sweet
Copyright 1994-1999, All Rights Reserved.
Перевод А.Гавва
2002 Львов

Данное руководство: «The Serial Programming Guide for POSIX Operating Systems» — покажет вам как правильно, эффективно и переносимо программировать последовательные порты на вашей рабочей станции UNIX® и/или PC. Каждая глава предусматривает примеры программ которые используют POSIX (Portable Standard for UNIX) функции управления терминалом, и которые, с минимальными изменениями, должны работать на IRIX®, HP-UX, SunOS®, Solaris®, Digital UNIX®, Linux®, и большинстве других UNIX-подобных операционных системах. Наибольшие различия, которые вы обнаружите, затрагивают имена файлов устройств последовательных портов и файлов блокировки.

Руководство содержит следующие главы и приложения:

  • Глава 1, Основы передачи данных по последовательным линиям
  • Глава 2, Конфигурирование последовательного порта
  • Глава 3, Связь через модем
  • Глава 4, Низкоуровневое программирование последовательного порта
  • Приложение A, RS-232 Pinouts
  • Приложение B, ASCII Control Codes

Г лава 1, Основы передачи данных по последовательным линиям

Эта глава является введением в передачу данных по последовательным линиям, RS-232 и другие стандарты которые используются для большинства компьютеров, а также о том как получить доступ к последовательным портам из C программы.

Ч то такое последовательная передача данных?

Компьютер передает информацию (данные) посылками в один или более битов за один раз. Последовательная передача подразумевает передачу данных посылкой в один бит. Последовательная передача данных применяется в большинстве сетевых устройств, клавиатурах, мышках, модемах и терминалах.

При последовательной передаче, каждое пересылаемое слово (байт или символ) данных посылается побитно. Каждый бит имеет состояние on ( 1 ) или off ( 0 ). Другие возможные термины: mark для состояния on и space для состояния off .

Очень часто скорость последовательной передачи данных выражается в количестве битов переданных за секунду (bits-per-second / «bps») или в бодах («baud»). Это представляет только количество единиц и нулей которые могут быть переданы в течение одной секунды. На заре компьютерной техники, скорость передачи в 300 бод считалась достаточно быстрой, но в наше время компютеры могут обеспечить скорость передачи по RS-232 вплоть до 430,800 бод! Возможно, когда скорость передачи достигает 1,000, вы видите скорость показываемую в кило бодах, или kbps (т.е. 9.6k, 19.2k, и т.д.). Для скоростей выше 1,000,000 значения показываются в мега бодах, или Mbps (т.е. 1.5Mbps).

Когда говорят об устройствах последовательной передачи или о последовательных портах, их называют как Data Communications Equipment («DCE») или Data Terminal Equipment («DTE»). Различие между ними в том, что каждая сигнальная пара приема и передачи у них поменяна местами. При подключении двух DTE (или двух DCE) используется нуль-модемный кабель или адаптер, который меняет местами сигнальные пары приема и передачи.

Ч то такое RS-232?

RS-232 — это стандартный электрический интерфейс для последовательной передачи данных, объявленный Electronic Industries Association («EIA») . Реально, RS-232 встречается с тремя различными особенностями (A, B, и C) каждая из которых объявляет различный диапазон напряжений для уровней on и off . Наиболее часто встречаемая разновидность — RS-232C, которая объявляет уровень mark bit ( on ) как напряжение между -3V и -12V, и уровень space bit ( off ) как напряжение между +3V и +12V. Спецификация RS-232C говорит, что эти сигналы могут распространяться на расстояние до 25 футов (8 метров). Обычно вы можете передавать сигналы немного дальше, но при этом понижается скорость передачи.

Кроме сигналов принимаемых и передаваемых данных, существуют другие сигналы, предусматривающие синхронизацию, состояние и квитирование:

Таблица 1 — Назначение выводов RS-232

DSR — Data Set Ready

Signal Quality Detect

TXD — Transmitted Data

GND — Logic Ground

RXD — Received Data

DCD — Data Carrier Detect

Data Rate Select

RTS — Request To Send

CTS — Clear To Send

DTR — Data Terminal Ready

Также, вы можете встретить еще два стандарта на последовательный интерфейс: RS-422 и RS-574. RS-422 использует более низкое напряжение и дифференциальные сигналы, что позволяет увеличить длину кабеля до 1000 футов (300 метров). RS-574 описывает 9-контактный последовательный PC разъем и напряжения.

О писание сигналов

Стандарт RS-232 описывает 18 различных сигналов для обеспечения последовательного обмена. Однако, только шесть из них реально доступны в окружении UNIX.

GND — Logic Ground (логическая земля)

Технически, логическая земля сигналом не является, без нее ни один из других сигналов не будет работать.

TXD — Transmitted Data (передача данных)

Сигнал TXD содержит данные передаваемые с вашей рабочей станции на компьютер или устройство, подключенное к другому концу линии (например, модем). Напряжение уровня mark ( on ) интерпретируется как значение 1, а напряжение уровня space ( off ) интерпретируется как значение 0.

RXD — Received Data (прием данных)

Сигнал RXD содержит данные передаваемые с компьютера или устройства, подключенного к другому концу линии, на вашу рабочую станцию. Также как и в случае сигнала TXD уровни mark и space интерпретируются как значения 1 и 0, соответственно.

DCD — Data Carrier Detect (обнаружение несущей удаленного модема/устройства)

Сигнал DCD принимается от компьютера или устройства, подключенного к другому концу линии. Уровень space ( off ) индицирует, что компьютер или устройство в текущий момент подключено к линии. Сигнал DCD не всегда используется и не всегда присутствует в реализации.

DTR — Data Terminal Ready (готовность терминала к передаче данных)

Сигнал DTR генерируется вашей рабочей станцией и указывает компьютеру или устройству, подключенному к другому концу линии, что вы готовы (уровень space ( off )) или не готовы (уровень mark ( on )) к передаче данных. Обычно сигдал DTR автоматически устанавливается в состояние готовности когда вы открываете (open) последовательный интерфейс вашей рабочей станции.

CTS — Clear To Send (разрешение передачи данных терминалу)

Сигнал CTS принимается с другого конца последовательной линии. Уровень space ( off ) индицирует готовность к посылке последовательных данных с вашей рабочей станции.

Обычно, CTS используется для управления потоком передачи данных от вашей рабочей станции на другой конец линии.

RTS — Request To Send (запрос на передачу)

Сигнал RTS, установленный в состояние уровня space ( off ) вашей рабочей станции, указывает о готовности вашей рабочей станции к пересылке данных.

Сигнал RTS, также как и сигнал CTS, используется для управления потоком передачи данных между вашей рабочей станцией и компьютером или устройством, подключенным к другому концу последовательной линии. Большинство рабочих станций удерживают этот сигнал в состоянии уровня space ( off ) все время.

А синхронная передача

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

В асинхронном режиме, линия последовательной передачи данных остается в состоянии mark (1) пока нет передачи символа. start -бит предшествует передаче каждого символа и немедленно сопровождается битами передаваемого символа, одним опциональным битом четности, и одним или более stop -битами. start -бит всегда передается уровнем space (0), и указывает компьютеру, что доступны новые данные для последовательной передачи. Данные могут быть посланы или приняты в любой момент времени, поэтому передача называется асинхронной.

Рисунок 1 — Асинхронная передача данных

Опциональный бит четности — это простая сумма битов данных, которая индицирует что данные содержат или не содержат четное или нечетное число единичных битов. При при установке передачи четной четности ( even parity ), бит четности равен 0 если в переданом символе четное число единичных битов. При при установке передачи нечетной четности ( odd parity ), бит четности равен 0 если в переданных данных нечетное число единичных битов. Вы также можете встретить термины: space parity , mark parity , и no parity . Space parity подразумевает, что бит четности всегда равен 0. Mark parity подразумевает, что бит четности всегда равен 1. No parity подразумевает, что бит четности отсутствует и не передается.

Оставшиеся биты называются stop -битами. Может быть представлено 1, 1.5, или 2 стоп-бита между передаваемыми символами. Стоп-биты всегда имеют значение 1. Традиционно, стоп-биты использовались для того, чтобы дать компьютеру время для обработки предидущего переданного символа, но в настоящее время стоп-биты используются только для синхронизации передачи данных.

Формат передачи асинхронных данных обычно выражается как «8N1», «7E1», и т.д. Это указывает «8 битов данных, нет четности, 1 стоп-бит», и «7 битов данных, четная (even) четность, 1 стоп-бит» соответственно.

Ч то такое дуплексная и полудуплексная передача?

Full duplex (полный дуплекс) подразумевает, что компьютер может одновременно передавать и принимать данные — существует два раздельных канала данных (один для входящих данных, и один для исходящих).

Half duplex (полудуплекс) подразумевает, что компьютер не может одновременно передавать и/или принимать данные. Обычно это подразумевает, что существует только один канал передачи данных. Однако, это не подразумевает, что любой из сигналов RS-232 не используется. Скорее это подразумевает, что комуникационная линия использует какой-нибудь другой стандарт, отличный от RS-232, который не поддерживает полнодуплекснуюработу.

У правление потоком передачи данных (Flow Control)

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

Первый метод, часто называемый как «программное» управление потоком передачи данных («software» flow control), использует специальные символы для начала (XON или DC1, восьмеричное значение 021) или остановки (XOFF или DC3, восьмеричное значение 023) передачи данных. Эти символы объявлены в American Standard Code for Information Interchange («ASCII») . Эти коды полезны при передаче текстовой информации, однако они не могут быть использованы припередаче других типов данных без дополнительного специального программирования.

Второй метод, называемый как «аппаратное» управление потоком передачи данных («hardware» flow control), вместо специальных символов использует сигналы CTS и RTS интерфейса RS-232. Приемник устанавливает CTS в уровень space ( off ) когда он готов к приему последующих данных и в уровень mark ( on ) когда он не готов. Также, передатчик устанавливает RTS в уровень space ( off ) когда он готов к передаче последующих данных. Поскольку аппаратный метод управления потоком использует различные сигналы он намного быстрее программного метода, которому требуется пересылка множества битов для выполнения той же задачи. Однако, CTS/RTS управление потоком не всегда поддерживается аппаратной частью или операционной системой.

Ч то такое Break?

Обычно, сигнал приема или посылки данных находится в состоянии уровня mark ( on ) до начала передачи нового символа. Если сигнал переходит в состояние уровня space ( off ) на длительный период времени, обычно от 1/4 до 1/2 секунды, то говорят о возникновении условия break .

Иногда break используется для переустановки (сброса) коммуникационной линии или изменения режима работы коммуникационного оборудования подобного модему. Глава 3, Управление модемом описывает это более подробно.

С инхронная передача

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

Даже при такой синхронизации компьютер должен каким-нибудь образом обозначать начало данных. Наиболее общий способ решения этой задачи — использование пакетного протокола передачи данных, подобного Serial Data Link Control («SDLC») или High-Speed Data Link Control («HDLC»).

Каждый протокол объявляет определенные битовые последовательности для представления начала и конца пакета данных. Каждый протокол также описывает битовые последовательности которые используются при отсутствии данных. Эти битовые последовательности позволяют компьютеру обнаружить начало пакета данных.

Поскольку протоколы синхронной передачи не используют биты посимвольной синхронизации, они предоставляют как минимум 25% увеличение производительности по сравнению с асинхронной передачей данных, и пригодны для удаленной сетевой работы и конфигурирования более чем двух последовательных интерфейсов.

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

Д оступ к последовательным портам

Подобно всем устройствам, UNIX предоставляет доступ к последовательным портам через файлы устройств ( device files ). Для доступа к последовательному порту вы просто открываете соответствующий файл устройства.

Ф айлы последовательных портов

Каждый последовательный порт в системе UNIX имеет один или более файлов устройств (файлы в каталоге /dev ) ассоциированных с ним:

Таблица 2 — Файлы устройств последовательных портов

Оцените статью
TutShema
Добавить комментарий