Rs232 ring indicator что это
Rs232 ring indicator что это
У стандартного модемного интерфейса (rs232) кроме линий RxD и TxD есть еще куча разных, их называют “сигналами квитирования”. Я всегда путался в них — во всех этих RTS’ах, CTS’ах и прочих DSR’ах. В этой статье, я попробую систематизировать и кратко описать эти сигналы.
Итак, первое что стоит знать – интерфейс rs232 соединяет два типа устройств
Сигналы я буду описывать на примере 9-контактного разъема, так как он самый распространенный. Взглянем на него.
Как видно, контакты на разъемах перевернуты. Таким образом, прямой провод соединит контакты с одинаковыми номерами, тоесть, к примеру, контакту 2 на “папе” будет соответствовать контакт 2 на “маме”.
А вот и сводная табличка сигналов. Под названием вывода – номер его штырька в 9-контактном разъеме.
Передача данных компьютером, прием модемом | TxD 3 | ||
RxD 2 | Передача данных модемом, прием компьютером | ||
Компьютер готов передавать данные, либо компьютер разрешает модему передавать данные | RTS 7 | ||
CTS 8 | Модем разрешает компьютеру передавать данные | ||
DSR 6 | Готовность модема к работе. | ||
Готовность компьютера к работе. | DTR 4 | ||
RI 9 | Индикатор звонка | ||
DCD 1 | Индикатор наличия несущей. Устанавливается после соединения. | ||
Земля | SG 5 | SG 5 | Земля |
Ну, и немного подробнее опишем каждый сигнал.
Я буду рассматривать сигналы обычных логических уровней – так, как они выглядят на выходах или входах микроконтроллера.
Сигналы в кабеле (после преобразователя уровня, к примеру max232) перевернуты и уровни сдвинуты. Так, логической 1 на выходе контроллера соответствуют уровни напряжения от –3 до –15 вольт, а логическому нулю – +3…+15 вольт.
TxD (Tramsmit Data)
Сразу скажу, что откуда в сокращении буква “x” – я не знаю.
По этой линии происходит передача данных от компьютера к модему. По умолчанию на ней — высокий уровень. Прием байта начинается по стартовому биту (а точнее, по переходу линии из высокого состояния в низкое). Стартовый бит всегда является логическим нулем.
Далее, передаются данные. Обычно это 8 бит, хотя бывает и по другому. Данные передаются младшим битом вперед и в прямой логике (нулю на ножке контроллера соответствует принятый нулевой бит).
После этого идет не обязательный бит четности (на картинке его нет). Бит четности дополняет количество единиц до четного (even) или нечетного (odd). К примеру, если в байте было 3 единицы и четность установлена как “even”, то бит четности будет равен 1, чтобы дополнить количество единиц до четырех – четного числа. Четность служит для проверки правильности передачи байта.
После бита четности идет один, один с половиной или два стоп-бита. Стоп бит используется, чтобы правильно отработался старт-бит (чтобы между байтами всегда был перепад из высокого уровня в низкий). Это бит всегда установлен в логическую 1.
К примеру, передача 0xEE будет выглядеть на линии UART’а так:
Параметры последовательного порта обычно пишут так – “9600, 8N1”. 9600 – это скорость передачи бит/с, 8 – количество бит данных в посылке, N – бит четности не используется (может быть E или O, если используется), 1 – один стоп бит.
Заметьте, что количество передаваемых байт в секунду зависит не только от скорости передачи, но и от формата байта. К примеру, один байт в формате 8N1 занимает 10 бит (стартовый + 8 бит данных + стоповый), а в формате 8E1 уже 11бит – добавляется бит четности. Соответственно, байтовая скорость при битовой 9600бод станет 960байт/с в первом случае и 872.7байт/с во втором.
RxD (Receive Data)
Тоже самое, что и TxD, только хозяин этой линии – модем.
CTS (Clear To Send)
Рассмотрим такую ситуацию – компьютер отправляет модему большое количество данных на скорости 38400 бод, а модем подключен к другому модему на скорости 9600 бод.
Буфер внутри модема быстро заполняется, и, для того, чтобы он не переполнился, модем должен сообщить компьютеру “прекрати передачу!”. Для этого и служит линия CTS.
Активный уровень CTS – низкий. Тоесть, модем разрешает передачу данных, когда на ножке контроллера 0.
Пример из руководства по LPC17xx.
Как видно, компьютер передавал данные, пока на ножке был ноль. Когда появился высокий уровень, компьютер закончил передавать текущий байт и остановился.
RTS (Request To Send)
Вот с этой ножкой неразбериха. Проблема в том, что на месте этой ножки по стандарту могут быть два сигнала – RTS (номер цепи по стандарту — 105) и RTR (номер 133).
RTS (Ready To Send) – компьютер сигнализирует модему о том, что он сейчас будет передавать данные. Модем должен приготовиться и активировать CTS, после чего компьютер начинает передавать данные.
RTR (Ready To Receive) – компьютер сообщает модему о том, что он готов принимать данные. Это – аналог CTS, только со стороны компьютера.
Сейчас основная часть оборудования использует RTS как RTR! И даже аппаратное квитирование у LPC17xx, LPC2xxx, AT91SAM7 реализует именно механизм RTR.
Активный уровень как и у CTS – низкий.
Рассмотрим механизм подробнее на примере из руководства по LPC17xx
Сначала — сигнал RTS – низкий, принимаются байты.
Как только буфер приемника заполнился N символами, RTS переходит в высокое состояние, что запрещает модему передавать данные. Но, как видно, модем не успел среагировать на RTS и передал еще один байт, поэтому очень важно оставлять в буфере запас для как минимум одного байта.
Далее, байты читаются, и, когда их количество в буфере становится равным M, RTS возвращается в низкое состояние (разрешает модему передавать данные).
DTR (Data Terminal Ready)
Сигнал от компьютера к модему, обозначающий, что компьютер включен и котов к работе с модемом. Активное состояние, как обычно, низкое. Тоесть, если на ножке контроллера 0, то модем должен подготовиться к подключению к линии. Если-же компьютер выставит на этой ножке логическую 1, то модем обязан отключиться от линии (положить трубку, к примеру)
DTR также часто использовался как источник питания для внешнего малопотребляющего оборудования (к примеру, для мышки).
DSR (Data Set Ready)
Сигнал от модема к компьютеру. Говорит о том, что модем включен, проинициализирован, и готов к общению с компьютером. До тех пор, пока этот сигнал не активен нет смысла передавать что-либо в модем. Модем готов, когда на ножке контроллера логический 0.
RI (Ring Indicator)
Сигнал от модема к компьютеру. Как не сложно догадаться, этот сигнал дергается, когда на модем звонят. Скорость переключения сигнала – маленькая, порядка секунд, сигнал довольно точно повторяет огибающую звонка (огибающую того, что вы слышите, когда звонит аналоговый телефон).
На практике, этот сигнал используется редко. Обычно программа просто ждет сообщения “RING” от модема.
Логический 0 на ножке контроллера значит, что идет вызов.
DCD (Data Carrier Detect)
Сигнал от модема к компьютеру. Сообщает компьютеру о том, что модем подключен к удаленному модему. Эта ножка – очень важна, так как дает возможность определить спонтанные отключения.
Логический 0 означает, что связь между модемами активна.
Теперь кратко про кабель
Теперь про кабель. Стандарт определяет максимальную емкость кабеля как 2.5нФ. Это, примерно, 25метров.
Однако, на практике, это ограничение игнорируют, так как целостность сигнала определяется не только емкостью но и скоростью. Вот максимальные длинны, используемые на практике для низких скоростей.
Скорость (бод) | Длинна экранированного кабеля, метры | Длинна неэкранированного кабеля, метры |
110 | 1500 | 300 |
300 | 1200 | 300 |
1200 | 900 | 150 |
2400 | 600 | 150 |
4800 | 150 | 75 |
9600 | 75 | 30 |
Стандарт
Если у вас остались какие-то вопросы, то лучше обратиться непосредственно к стандарту. как оказалось, найти его довольно сложно, поэтому выкладываю еще и у себя.
Разводка (сигналы) последовательного интерфейса
Сигналы и контакты интерфейса RS232 | |||||
---|---|---|---|---|---|
Разъем 9-ти пиновый # | Разъем 25 пиновый # | Обозначение | Полное наименование | Направление | Что значит |
1 | DCD | Data Carrier Detect | 1 | DCD | Data Carrier Detect |
2 | RxD | Receive Data | 2 | TxD | Transmit Data |
3 | TxD | Transmit Data | 3 | RxD | Receive Data |
4 | DTR | Data Terminal Ready | 4 | DSR | Data Set Ready |
5 | GND | Ground (Signal) | 5 | GND | Ground (Signal) |
6 | DSR | Data Set Ready | 6 | DTR | Data Terminal Ready |
7 | RTS | Request to Send | 7 | CTS | Clear to Send |
8 | CTS | Clear to Send | 8 | RTS | Request to Send |
9 | RI | Ring Indicator | 9 | RI | Ring Indicator |
Преобразование DB-9 в DB-25
DB-9 | DB-25 | Назначение | |
---|---|---|---|
1 | 8 | DCD | Data Carrier Detect |
2 | 3 | RxD | Receive Data |
3 | 2 | TxD | Transmit Data |
4 | 20 | DTR | Data Terminal Ready |
5 | 7 | GND | Ground (Signal) |
6 | 6 | DSR | Data Set Ready |
7 | 4 | RTS | Request to Send |
8 | 5 | CTS | Clear to Send |
9 | 22 | RI | Ring Indicator |
RS-232 соединения
Прямой кабель используется для соединения DTE (например, компьютера) с DCE (например, модемом), причем все сигналы на одной стороне соединяются с соответствующими сигналами на другой стороне один на один (напрямую). Пересекающийся (нуль-модемный) кабель используется для непосредственного соединения двух DTE без промежуточного модема. Они пересекают передачу и прием сигналов данных между двумя сторонами, и есть много вариантов того, как другие сигналы управления подключены, ниже одни из них:
Прямое соединение (DB-9) | Нуль-модемное, кроссовое соединение (DB-9) | ||||||||
---|---|---|---|---|---|---|---|---|---|
(DTE) | (DCE) | (DTE) | (DTE) | ||||||
1 | DCD | ——- | DCD | 1 | 1 | DCD | DCD | 1 | |
2 | RxD | ——- | TxD | 2 | 2 | RxD | ——- | TxD | 3 |
3 | TxD | ——- | RxD | 3 | 3 | TxD | ——- | RxD | 2 |
4 | DTR | ——- | DSR | 4 | 4 | DTR | ——- | DSR | 6 |
5 | GND | ——- | GND | 5 | 5 | GND | ——- | GND | 5 |
6 | DSR | ——- | DTR | 6 | 6 | DSR | ——- | DTR | 4 |
7 | RTS | ——- | CTS | 7 | 7 | RTS | ——- | CTS | 8 |
8 | CTS | ——- | RTS | 8 | 8 | CTS | ——- | RTS | 7 |
9 | RI | ——- | RI | 9 | 9 | RI | RI | 9 |
Логическая форма сигнала RS-232 (8N1)
Шаг 2: Узнайте о протоколе
Синхронная и асинхронная передача данных
Развертывание: биты и байты
Внутренняя компьютерная связь состоит из цифровой электроники, представленной только двумя условиями: ВКЛ или ВЫКЛ. Мы представляем их двумя числами: 0 и 1, которые в двоичной системе называются битами. Байт состоит из 8 битов, которые представляют десятичное число от 0 до 255 или шестнадцатеричное число от 0 до FF. Как описано выше, байт является основной единицей асинхронной связи.
Скорость передачи, биты данных, четность и стоповый бит
В компания KS-is возможно купить адаптеры RS232 различных моделей и ценовых сегментов.
Контрольная сумма
Многие последовательные протоколы используют контрольную сумму (дополнительные байты добавляются в конце строки данных) для проверки целостности данных, поскольку при передаче данных могут возникать ошибки. Существует много типов контрольных сумм, от простейшего использования в Modula или BCC до сложных вычислений CRC. Используя Modula в качестве примера, мы узнаем, что перед передачей данных отправитель складывает все командные байты вместе, а затем модифицирует его на 255 (десятичный), чтобы получить дополнительный байт. Это должно быть добавлено в конце командной строки. Когда получатель получает командную строку, он сначала проверяет добавленный байт, чтобы увидеть, остаются ли данные неизменными или нет. Если это так, он примет данные, а если нет, то попросит отправителя повторно отправить данные.
Примеры протокольных команд
Команда протокола представляет собой строку данных, отправленную с одного последовательного устройства (например, компьютера) на другое (то есть модем). Вот некоторые примеры:
Пример команды ASCII: ATI1 для запроса информации производителя модема. (Примечание: контрольные коды возврата каретки и перевода строки).
Преобразуйте приведенную выше командную строку в шестнадцатеричное, и она становится: 41 54 49 31 0D 0A
Преобразуйте приведенную выше командную строку в десятичную, и она становится: 065 084 073 049 013 010
Преобразуйте приведенную выше строку команды в восьмеричное, и оно становится: 101 124 111 061 015 012
Преобразуйте приведенную выше командную строку в двоичную, и она становится: 01000001 01010100 01001001 00110001 00001101 00001010
Шаг 3: Управляйте своими устройствами RS232 с помощью 232Analyzer
Расчет контрольной суммы
232Analyzer поставляется с калькулятором контрольной суммы, который позволяет вам вычислять сложный байт контрольной суммы в секундах, вот пример:
Предположим, что вы управляете проектором, и протокол проектора использует xOR для получения дополнительного байта контрольной суммы, строка команды для включения проектора: «1A 2B 3C» плюс байт контрольной суммы. Используйте следующие процедуры для вычисления байта контрольной суммы:
Выберите Hex в качестве формата операндов
Выберите xOr в качестве оператора
Введите строку команды и добавьте запятую (,) после каждого байта кода команды: например, 1A, 2B, 3C,
Нажмите на кнопку «Рассчитать», и вы получите результат 0D (0 опущен)
Выберите COM-порт и настройте форматы связи
В приведенном выше примере панели инструментов COM-порт, подключенный к проектору, был настроен следующим образом: COM-порт: 5, скорость передачи данных: 19 200 бит / с, бит данных: 8, четность: четный, стоп-бит: 1. Примечание. После того, как вы установили правильные форматы связи (они должны совпадать с настройками COM-порта проектора), нажмите кнопку «Подключить» слева, чтобы активировать COM-порт.
Настройки управления потоком
Управление потоком можно установить из окна выше. Можно выбрать «Программное обеспечение» (XON / XOFF), «Оборудование» (RTS / CTS), «Оба» («Программное обеспечение + оборудование») или «Нет».
Управляйте своими устройствами RS232 Контроль / мониторинг состояния линии
Команды отправки / получения
Используйте приведенный выше пример для управления проектором (включите проектор), введите полную командную строку «1A, 2B, 3C, 0D» в поле Send_Command_Pane, как показано выше, а затем нажмите кнопку «Отправить».
Примечания:
В бесплатной версии режим Hex недоступен. Вы можете использовать десятичный формат для отправки командной строки: «26,43,60,13»
Вы можете использовать любое устройство RS-232 для тестирования, если Вы знаете команды протокола.