2.1.2 Будова і принцип роботи послідовного порта
Послідовна передача даних
Послідовний потік даних складається з бітів синхронізації і власне бітів даних. Формат послідовних даних містить чотири частини: стартовий біт, біти даних (5-8 біт), перевірочний і стоповий біти; уся ця конструкція іноді називається символом. На рис. 2.1 зображений типовий формат послідовних даних. Коли дані не передаються, на лінії встановлюється рівень логічної одиниці. Це називається режимом очікування. Початок режиму передачі даних характеризується передачею рівня логічного нуля тривалістю в одну елементарну посилку. Такий біт називається стартовим. Біти даних посилаються послідовно, причому молодший біт - першим; усього їх може бути від п'яти до восьми.
За бітами даних випливає перевірочний біт, призначений для виявлення помилок, що виникають під час обміну даними. Останньою передається стопова посилка, що інформує про закінчення символу. Стоповий біт передається рівнем логічної одиниці. Тривалість стопової посилки - 1, 1.5 чи 2 біти. Спеціально розроблений електронний пристрій, що генерує і приймає послідовні дані, називається універсальним асинхронним прийомо-передавачем (UniversalAsynchronousReceiverTransmitter, UART).
Рис. 2.1. Формат послідовних даних, які формує UART
Обмін інформацією за допомогою мікросхем UARTвідбувається в такий спосіб. Приймач виявляє перший фронт стартового біта і вичікує один чи півтора тактових інтервали, оскільки зчитування повинне початися точно в середині першої посилки. Через один тактовий інтервал зчитується другий біт даних, причому це відбувається точно в середині другої посилки. Після закінчення інформаційного обміну приймач зчитує перевірочний біт для виявлення помилок і стоповий біт, а потім переходить у режим чекання наступної порції даних.
Швидкість передачі інформації в послідовному інтерфейсі вимірюється в бодах (бод - кількість переданих бітів за 1 с). Стандартні швидкості рівні 110, 150, 300, 600, 1200, 2400, 4800, 9600 і 19200 бод. Знаючи швидкість у бодах, можна обчислити число переданих символів за секунду. Наприклад, якщо мається вісім біт даних без перевірки на парність й один стоповий біт, то загальна довжина послідовності, включаючи стартовий біт, дорівнює 10. Швидкість передачі символів відповідає швидкості в бодах, діленої на 10. Таким чином, при швидкості 9600 бод (див. рис. 1.6) буде передаватися 960 символів у секунду.
Перевірочний біт призначений для виявлення помилок у переданих бітах даних. Коли він присутній, здійснюється перевірка на парність чи непарність. Якщо інтерфейс націлений на перевірку за парністю, такий біт буде виставлятися в одиницю при непарній кількості одиниць у бітах даних, і навпаки. Це найпростіший спосіб перевірки на наявність однократних помилок у переданому блоці даних. Однак, якщо під час передачі було спотворено декілька бітів, подібна помилка не виявиться. Перевірочний біт генерується передаючим UART таким чином, щоб загальна кількість одиниць була непарним чи парним числом в залежності від настройки інтерфейсу; приймаючий пристрій повинен мати таку ж настройку. Прийомний UART рахує кількість одиниць у прийнятих даних. Якщо дані не проходять перевірку, генерується сигнал помилки.
Більшість комп'ютерів, сумісних з IBMPC, використовує UART 16450, з IBMPCXT - UART 8250. В UART застосовуються рівні напруги ТТЛ. Для передачі даних по каналу зв'язку напруга за допомогою спеціалізованих перетворювачів конвертується з інверсією: логічному нулю відповідає діапазон напруг від +3 до + 12 В, логічній одиниці - від -3 до -12 В.
а)
б)Рис. 2.2. Функції контактів роз’ємів RS232 на комп’ютері: а) - блочна частина 9-контактного штирьового роз’єму, вигляд зі сторони задньої стінки комп’ютера; б) - блочна частина 25-контактного штирьового роз’єму, вигляд зі сторони задньої стінки комп’ютера;
Таблиця 2.1. Призначення контактів роз’ємів послідовного порту
25 контактів | 9контактів | Найменування | Напрямвідносно ПК | Опис |
1 | PROT | Захисне заземлення | ||
2 | 3 | TD | вихід | Дані, що передаються |
3 | 2 | RD | вхід | Дані, що приймаються |
4 | 7 | RTS | вихід | Запит на передачу |
5 | 8 | CTS | вхід | Очищений для передачі |
6 | 6 | DSR | вхід | Готовність зовнішнього пристрою |
7 | 5 | GND | Сигнальне заземлення | |
8 | 1 | DCD | вхід | Виявлення інформаційного сигналу |
20 | 4 | DTR | вихід | Комп’ютер до обміну даними готовий |
22 | 9 | RI | вхід | Індикатор дзвоника |
23 | DSRD | вхід/вихід | Детектор швидкості передачі даних |
Роз’єм та кабель порту RS232
Стандартний послідовний порт має 25- чи 9-контактний роз’єм. На рис. 2.1.2. приведені призначенняконтактів цих роз’ємів.
У табл. 1.2. вказано призначення сигналів послідовного інтерфейсу.
На рис. 2.2 представлені два типи з'єднань між комп'ютером і зовнішнім пристроєм по протоколу RS232. Стрілки показують напрямок потоків даних. На рис. 2.2 а представлене так зване нуль-модемне з'єднання. На рис. 2.2 бзображене з'єднання, що використовує тільки три лінії: перша - для передачі даних, друга - для прийому, третя - загальна. З'єднання організоване таким чином, що передані дані від першого пристрою надходять на прийомну лінію другого.
Рис. 2.3. З’єднання комп’ютера та зовнішнього пристрою по протоколу RS232: а) – з використанням нуль-модемного кабеля; б) за допомогою трьох ліній
Таблиця 2.2 Призначення сигналів послідовного інтерфейсу
PRO | Захисне заземлення. З'єднується з металевим екраном кабелю і корпусом устаткування. |
GND | Лінія заземлення. Загальний провід для всіх сигналів. |
TD | Передані дані. Послідовні дані передаються комп'ютером по цій лінії. |
RD | Прийняті дані. Послідовні дані приймаються комп'ютером по цій лінії. |
RTS | Запит на передачу. Лінія взаємодії, яка показує, щокомп'ютер готовий до прийому даних. Лінія керується з боку комп'ютера. Якщо взаємодії не потрібно, вона можевикористовуватися як двійковий вихід. |
CTS | Готовність до передачі. Лінія взаємодії, за допомогою якої зовнішній пристрій повідомляє комп'ютеру, що воно готове до передачі даних. Якщо взаємодії не потрібно, вона може використовуватися як двійковий вхід. |
DTR | Комп'ютер готовий. Лінія взаємодії показує, що комп'ютер ввімкнений та готовий до зв'язку. Лінія керується з боку комп'ютера. Якщо взаємодії не потрібно, во-на може використовуватися як двійковий вихід. |
DSR | Готовність зовнішнього пристрою. Лінія взаємодії, за допомогою якої зовнішнійпристрій повідомляє комп’ютеру, що воно ввімкнене і готове до зв'язку. Якщо взаємодії не потрібно, вона може використовуватися як двійковий вхід. |
Внутрішній апаратний пристрій
Комп'ютер, сумісний з IBMPC, може мати до чотирьох послідовних портів. Вони маркуються як COМ1 - COM4. Кожен СОМ-порт формується окремим UART16450, встановленим усередині комп'ютера.
UART8250/16450
На рис. 2.4 показана внутрішня структура UART. У ньому маються вісім восьмибітових регістрів. Адреси введення/виведення цих регістрів обчислюються додаванням зсуву регістра до базової адреси СОМ-порту.
Зсуви і функції регістрів UART такі:
00h - буферний регістр передавача/буферний регістр приймача:
використовується для обміну даними;
01h- регістр дозволу переривань: установлює режим запиту переривань;
02h - регістр ідентифікації переривань: перевіряє режим запиту перери
вань;
03h - регістр формату даних: встановлює формат послідовних даних;
04h - регістр керування модемом: установлює керування модемом (RTS,
DTRі т.д.);
05h - регістр стану прийомопередавача: містить інформацію про стан
приймача і передавача;
06h - регістр стану модему: містить поточний стан ліній DCD, RI, DSR і
CTS;
07h - регістр надоперативної пам'яті: працює як байт пам'яті.
Зсув 00h вказує на буферний регістр читання приймача і регістр запису передавача, що доступний, коли біт DLAB у регістрі формату даних (зсув 03h) дорівнює нулю. Якщо по цій адресі записаний байт, то він передається в регістр зміщення передавача і послідовно надходить на вихід. Під час прийому відбувається зворотна операція: після того як дані успішно прийняті і за допомогою регістра зміщення перетворені в рівнобіжний формат, вони передаються в буферний регістр приймача. Коли інформація з цього регістра зчитана, він очищається і готовий до прийому наступного блоку даних.
По зсуву 01hвід базового знаходиться регістр дозволу переривань, за допомогою якого можна конфігурувати переривання, що генеруються UART. Призначення бітів цього регістра приведені нижче:
0 0 0 0 SINPERBKTBERxRD
біти з 7 по 4 завжди нулі
SINP1 = переривання по зміні стану ліній CTS, DSR, DCD і RI
0 = немає переривання
ERBK1 = переривання при помилці прийому даних
0 = немає переривання
ТВЕ 1 = переривання, коли регістр передавача порожній
0 = немає переривання
RxRD1 = переривання при одержанні цаннх
0 = немає переривання
По зсуву 02h знаходиться регістр ідентифікації переривань. При виникненні переривання нульовий біт цього регістра встановлюється в 0. Біти 1 і 2 указують причину переривання. Біти з 7 по 3 не використовуються і завжди дорівнюють нулю. Призначення бітів регістра наступне: