Смекни!
smekni.com

Візуальний облік вхідних даних інтерфейсу RS-232 (стр. 2 из 7)

Несиметричні лінії інтерфейсів RS-232C і RS-423A мають саму низьку захищеність від синфазної перешкоди, диференціальний вхід приймача RS-423A трохи зм'якшує ситуацію. Кращі параметри має двохточковий інтерфейс RS-422A і його магістральний аналог RS-485, що працюють на симетричних лініях зв'язку. У них для передачі кожного сигналу використовуються диференціальні сигнали з окремої парою проводів.

Найбільше поширення в PC одержав найпростіший з перерахованих — стандарт RS-232C, реалізований Сомами-портами. У промисловій автоматиці широко застосовується RS-485, а також RS-422A, що зустрічається й у деяких принтерах. Існують перетворювачі сигналів для узгодження цих родинних інтерфейсів.

Стандарт RS-232C використовує несиметричні передавачі і приймачі - сигнал передається щодо загального проводу — схемної землі. Інтерфейс НЕ ЗАБЕЗПЕЧУЄ ГАЛЬВАНІЧНОЇ РОЗВ'ЯЗКИ пристроїв. Логічній одиниці відповідає напруга на вході приймача в діапазоні -• 12...-3 В. Для ліній керуючих сигналів цей стан називається ON («включене»), для ліній послідовних Даних — MARK. Логічному нулеві відповідає діапазон +3...+12 В. Для ліній керуючих сигналів стан називається ОFF(«виключене»), а для ліній послідовних даних — SPACE. Діапазон -3...+3 В — зона нечутливості, що обумовлює гистерезис приймача: стан лінії буде вважатися зміненим тільки після Перетинання порога (мал. 2.5). Рівні сигналів на виходах передавачів повинні бути в діапазонах -12...-5 В и +5...+12 В для представлення одиниці і нуля відповідно. Різниця потенціалів між схемними землями пристроїв, що з'єднуються, повинна бути менш 2 В, при більш високій різниці потенціалів можливо невірне сприйняття сигналів. Інтерфейс припускає наявність ЗАХИСНОГО ЗАЗЕМЛЕННЯ для пристроїв, що з'єднуються, якщо вони обоє живляться від мережі змінного струму і мають мережеві фільтри.

Послідовний інтерфейс СОМ-порт (Communication Port — комунікаційний порт) з'явився в перших моделях IBM PC. Він був реалізований на мікросхемі асинхронного прийому передатчиків Intel 8250. Порт мав підтримку BIOS (INT 14h), однак широко застосовувалося (і застосовується) взаємодія з портом на рівні регістрів. Тому у всіх PC-сумісних комп'ютерах для послідовного інтерфейсу застосовують мікросхеми прийомопередатчиків, сумісні з 18250. У ряді вітчизняних PC-сумісних комп'ютерів для послідовного інтерфейсу застосовувалася мікросхема КР580ВВ51 — аналог i8251. Сумісності з PC на рівні регістрів Сома-порту такі комп'ютери не мають. Сумісність на рівні регістрів СОМ-порту вважається необхідною. Багато розроблювачів комунікаційних пакетів пропонують роботу і через BІOS INT 14h, однак на високих швидкостях це неефективно. Говорячи про СоОМ-порт PC, за замовчуванням будемо мати на увазі сумісність реєстрової моделі з i8250 і реалізацію асинхронного інтерфейсу RS-232C.

Хоча на даний час існують більш швидкі комунікаційні інтерфейси, однак виробники материнських плат включають в склад своїх продуктів підтримку цих портів. Адже в світі залишилося багато техніки, яка використовує старі СОМ та LPT порти. Для цих портів розробляють навіть деякі сучасні периферійні пристрої. До областей застосування СОМ-порту можна віднести:

підключення маніпуляторів (миша, трекбол)

підключення зовнішніх модемів

зв'язку двох комп'ютерів

підключення принтерів і плоттеров

підключення електронних Ключів

беспроводних комунікацій та деякі інші

Комп'ютер може мати до чотирьох послідовних портів СОМ 1-COM4 (для машин класу AT типова наявність двох портів). Сом-порти мають зовнішні раз’єми вилку DB25P або DB9P, виведені на задню панель комп'ютера.

Соми-порти реалізуються на мікросхемах UART, сумісних із сімейством 18250. Вони займають у просторі введення/висновку по 8 суміжних 8-бітних регістрів і можуть розташовуватися по стандартних базових адресах. Порти виробляють апаратні переривання. Можливість поділюваного використання однієї лінії запиту декількома портами (або її поділу з іншими пристроями) заноситься від реалізації апаратного підключення і ПО. При використанні портів, установлених на твань ISA, поділювані переривання звичайно не працюють.

2.4 Конфігурація СОМ-портів

Керування послідовним портом розділяється на дна етапу — попереднє конфигурування (Setup) апаратних засобів порту і поточне (оперативне) переключення режимів роботи прикладним або системним ПО. Конфигурування СОМ-порту залежить від його виконання. Порт на платі розширення конфигурується джамнерами на самій платі. Порт на системній платі конфигурується через BIOS Setup.

Конфигуруванню підлягають наступні параметри:

Базова адреса, що може мати значення 3F8h, 2F8h, 3E8h (3EOh, 338h) або 2E8h (2EOh, 238h). При ініціалізації BIOS перевіряє наявність портів по адресах саме в цьому порядку і привласнює виявленим портам логічні імена СОМ1, COM2, COM3 і COM4. Для PS/2 стандартними для портів СОМЗ-СОМ8 є адреси 3220h,3228h,4220h, 4228h, 5220h і 52281) відповідно.

Використовувана лінія запиту переривання: для СОМ1 і COM3 звичайно використовується IRQ4 або IRQ11, для COM2 і COM4 — IRQ3 або IRQ10. У принципі номер переривання можна призначати в довільних сполученнях з базовою адресою (номером порту), але деякі програми і драйвери набудовані на стандартні сполучення. Кожному портові, що відповідає апаратному перериванні, призначають окрему лінію, що не збігається з лініями запиту переривань інших пристроїв. Переривання необхідні для портів, до яких підключаються пристрої введення, UPS або модеми.

Режим роботи порту за замовчуванням (2400 біт/з, 7 біт даних, 1 стогін-битий і контроль парності), заданий при ініціалізації порту під час BIOS POST, може змінюватися в будь-який момент при настроюванні комунікаційних програм або командою DOS MODE COMx: із указівкою параметрів.

У процесі початкового тестування POST BIOS перевіряє наявність послідовних портів (регістрів UART 8250 або сумісних) по стандартних адресах і поміщає базові адреси виявлених портів в осередки ВІOS Data Area 0:0400, 0402, 0404, 0406. Ці осередки зберігають адреси портів з логічними іменами СОМ1-COM4. Нульове значення адреси є ознакою відсутності порту з даним номером. В осередки 0:047С, 047D, 047Е, 047F заносяться константи, що задають тайм-аут для портів.

Виявлені порти иніціалізуються на швидкість обміну 2400 біт/з, 7 біт даних з контролем на парність, 1 стоп-битий. Керуючі сигнали інтерфейсу DTR і RTS переводяться у вихідний стан («виключена» — позитивна напруга).

Порти підтримуються сервісом BIOS INT 14h, що забезпечує наступні функції:

00h — ініціалізація (установка швидкості обміну і формату посилок, заданих регістром AL; заборона джерел переривань). На сигнали DTR і RTS впливу не робить (після апаратного скидання вони пасивні).

0lh — висновок символу з регістра AL (без апаратних переривань). Активуються сигнали DTR і RTS, і після звільнення регістра THR у нього міститься виведений символ. Якщо за заданий час регістр не звільняється, фіксується помилка тайм-ауту і функція завершується.

02h — уведення символу (без апаратних переривань). Активується тільки сигнал DTR (RTS переходить у пасивний стан), і очікується готовність прийнятих даних, прийнятий символ міститься в регістр AL. Якщо за заданий час дані не отримані, функція завершується з помилкою тайм-ауту.

03h — опитування стану модему і лінії (читання регістрів MSR і LSR). Цю гарантовано швидку функцію звичайно викликають перед функціями введення/висновку щоб уникнути ризику чекання тайм-ауту.

2.5 Структури управління портами

У літературі, найчастіше, керування послідовним і паралельним портами описується на рівні регістрів цих портів, причому приклади програм приводяться мовою Assembler. Послідовний порт досить повільний пристрій, до того ж специфічний. Тому в програмах працюючих з портами використовуються переривання. Паралельний порт швидший, але теж повільний і не менш специфічний. Узяти хоча б можливість цього порту працювати в двох напрямках.

З послідовними і паралельними портами в Win32 працюють як з файлами, проте для правильного функціонування необхідно заповнити певні структури, які задають параметри роботи портів. Працюючи з портами починати треба з його відкриття як файлу. Для цього необхідно використовувати стандартні функції роботи з файлами open і fopen. При цьому необхідно скористатися функцією CreateFile. Ця функція описана у Win32 API. Її прототип виглядає так:

HANDLE CreateFile(

LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDistribution,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile

);

Функція має багато параметрів. Розглянемо короткий опис параметрів даної функції: lpFileName

Вказівник на рядок з ім'ям, що відкривається або створюваного файлу. Формат цього рядка може бути дуже складним. Зокрема можна вказувати мережеві імена для доступу до файлів на інших комп'ютерах. Можна відкривати логічні розділи або фізичні диски і працювати в обхід файлової системи. Послідовні порти мають імена "COM1", "COM2", "COM3", "COM4". Паралельні порти називаються "LPT1", "LPT2" і так далі. Необхідно врахувати, що якщо до порту СОМ1 підключена миша, Windows не дасть відкрити цей порт. Аналогічно не вдасться відкрити LPT1 якщо підключено принтер.

dwDesiredAccess Задає тип доступу до файлу. Можливе використання наступних значень:

0- Опитування атрибутів пристрою без одержання доступу до нього.

GENERIC_READ - Файл буде зчитуватися.

GENERIC_WRITE - Файл буде записуватися.

GENERIC_READ|GENERIC_WRITE- Файл буде і зчитуватися і записуватися.

dwShareMode

Задає параметри спільного доступу до файлу. Комунікаційні порти не можна робити роздільними, тому даний параметр повинний дорівнювати 0.

lpSecurityAttributes

Задає атрибути захисту файлу. Підтримується тільки в Windows NT. Однак при роботі з портами повинний у будь-якому випадку дорівнювати NULL.

dwCreationDistribution

Для комунікаційних портів даний параметр завжди повинен задаватися як OPEN_EXISTING.

dwFlagsAndAttributes

Задає атрибути створюваного файлу. Так само керує різними режимами обробки. Для наших цілей цей параметр повинний бути або рівним 0, або FILE_FLAG_OVERLAPPED. Нульове значення використовується при синхронній роботі з портом, а FILE_FLAG_OVERLAPPED при асинхронної, або іншими словами, при фоновій обробці введення/виведення.