Раздел: Документация
0 1 2 3 4 ... 55 конкретных микросхем преобразователей уровней RS232.) Эта скорость в большинстве случаев должна быть не менее 30 В/мкс. Рассмотрим передачу по линии единичного импульса, длительность которого соответствует времени передачи 1 бита при скорости обмена 115200 бод. При уровнях логической единицы и логического нуля соответственно +10 и -10 В и скорости изменения состояний линии из логического нуля в логическую единицу и обратно, составляющей 30 В/мкс, длительность фронта и спада импульса будет равна (каждая) около 0,67 мкс (в сумме 1,33 мкс). Таким образом, длительность состояния линии в логической единице будет 8,68 - 1,33 = 7,35 мкс, что соответствует приблизительно 84,7% длительности всего импульса. Превышение длительностей фронта и спада импульса и, как следствие, уменьшение указанного процентного соотношения может привести к срыву обмена и потере информации. Необходимо отметить, что далеко не все выпускаемые микросхемы преобразователей уровней интерфейсов RS232 могут обеспечить такую высокую скорость обмена, хотя некоторые из них могут работать значительно быстрее (до 460 кбод). Кроме того, следует также знать, что скорость обмена 115 кбод могут обеспечить только высокоскоростные оптроны (если речь идет о гальванических развязках). (Этот вопрос будет еще не раз обсуждаться в гл. 3.) На практике чаще всего используются три скорости обмена: 9600, 115200 и (реже) 57600 бод . 1.2. Контакты разъемов RS232 в компьютере В компьютере могут присутствовать как 25-штырьковый (DB25), так и 9-штырьковый (DB9) разъемы RS232. В табл.1.1 приведены названия сигналов и соответствующие им номера контактов обоих типов разъемов. Как видно из таблицы, разъем содержит контакты как входных линий, так и выходных. Таб л и ца 1.1 Контакты разъемов интерфейса RS232 в компьютере
Основными линиями, по которым осуществляется обмен данными, являются две: TxD — линия, по которой из компьютера передаются данные во внешнее устройство, и RxD — линия, по которой компьютером принимаются данные из внешнего устройства. Сигналы на этих линиях изменяются в соответствии с рис. 1.1. Линии DTR и RTS являются выходными. Это означает, что уровнями сигналов на этих линиях можно управлять, устанавливая биты соответствующих регистров в нуль или единицу программным способом. Линии CTS, DSR, DCD и RI являются входными. Это означает, что состояния этих линий можно проверять (т.е. выяснять, в каком состоянии - нулевом или единичном они находятся), читая соответствующие регистры состояний и выделяя соответствующие биты (§ 1.3). Необходимо отметить следующие свойства линий TxD и RxD. Линия TxD является выходной. Помимо того, что по ней передаются данные, в отсутствие передачи состоянием этой линии можно также управлять программно, т.е. устанавливать в единичное или нулевое состояние. Линия RxD является входной. Однако прочитать состояние этой линии (как линий CTS, DSR, DCD и RI) при отсутствии передачи нельзя! Кроме того, заметим, что линии DTR, RTS, CTS, DSR, DCD и RI называют еще линиями квитирования (иногда модемными, так как они используются в модемах). Существует как множество алгоритмов обмена по RS232, в которых эти линии (или некоторые из них) используются, так и множество алгоритмов обмена, в которых эти линии не используются вообще (задействованы только линии RxD и TxD). В связи с этим аббревиатура линий квитирования достаточно условна, и поэтому детальное рассмотрение функций (и названий) линий квитирования без рассмотрения конкретного алгоритма обмена лишено всякого смысла. Этот вопрос мы обсудим при рассмотрении предложенного автором достаточно простого и надежного алгоритма обмена, особенно эффективного при использовании гальванических развязок (§ 6.2). 1.3. Программирование интерфейса RS232 Программирование интерфейса RS232 в компьютере состоит из нескольких этапов. 1.3.1. Выбор языка программирования Выбор языка программирования должен определяться, прежде всего, поставленной целью. Кроме того, язык должен, на наш взгляд, содержать встроенные функции ввода-вывода через порт. Если целью является проверка работы конкретного устройства или его, например, интерфейсной части - "погонять" его на высоких скоростях обмена, - то желательно использовать наиболее "скоростной" язык, т.е. ассемблер, либо Бейсик с ассемблерными вставками. Для более простых применений достаточно только Бейсика. И, наконец, если на компьютере пишется сложная программа, которая, например, обслуживает систему сбора информации, имеет множество меню, поддержку мыши, большое число экранных форм и форм для распечатки информации на бумаге, то мы считаем, что следует использовать такой язык программирования, как Кларион, с помощью которого можно выполнить все перечисленные функции и который обладает достаточно высоким быстродействием, а самое главное, — встроенными функциями ввода-вывода через порт (командами in и out). В связи с вышесказанным фрагменты программ будут приводиться именно на этих языках в зависимости от контекста. Спорить и указывать достоинства и недостатки этих и других языков программирования - дело неблагодарное и бессмысленное, тем более, что, с одной стороны, писать программы на том или ином языке — это дело вкуса, а с другой — команды ввода-вывода через порты (in и out) на всех языках выглядят однотипно. А именно эти команды в первую очередь, на наш взгляд, необходимо правильно применять для программирования работы последовательного порта компьютера. Что касается встроенных функций DOS, пользуясь которыми также можно запрограммировать последовательный порт, то либо их недостаточно, либо они имеют ограниченную область применения, либо не всегда выполняют заданные действия. 13.2. Управление состояниями и чтение состояний линий RS232 В подавляющем большинстве компьютеров имеются два последовательных порта с интерфейсом RS232: СОМ1 и COM2, реже встречаются компьютеры, оснащенные четырьмя последовательными портами: СОМ1, COM2, COM3 и COM4. Базовые адреса портов следующие: СОМ1 - 3f8h, COM2 - 2f8h, COM3 - 3e8h и COM4 — 2e8h. Порт СОМ1 занимает адресное пространство от 3f8h flo3ffh. Все программы будут приводиться для порта СОМ1. Адаптировать программы к другим портам не составляет большого труда. В скобках дано международное название регистра порта. Рассмотрим регистры порта СОМ 1 более детально. Регистр данных (data register). Адрес 3f8h. Доступен по записи и по чтению. Используется для двух целей. 1. Ввод из порта и вывод в порт байта данных. 0 1 2 3 4 ... 55
|