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

Інтерфейс RS-232C призначений для з'єднання двох пристроїв (див. рисунок 5.1), що перебувають на відстані до 15 м із граничною швидкістю обміну даними близько 10 кбайт/с. Лінія Tx передачі першого пристрою через перетворювач рівнів RS-232C/ТТЛ з'єднується з лінією Rx прийому другого й навпаки (режим обміну full duplex). Додатково використовуються загальний і екрануючі сигнали інтерфейсу. Для керування з'єднаними пристроями застосовується програмне підтвердження (введення в потік переданих даних відповідних керуючих символів). Можлива організація апаратного підтвердження шляхом введення до протоколу обміну додаткових сигналів інтерфейсу для забезпечення функцій визначення статусу й керування.

Дані по інтерфейсу RS-232C передаються в послідовному коді по кадрам - порціям даних, обрамлених службовою інформацією (див. рисунок 5.2). Коли немає обміну даними, на лініях Rx або Тx присутній високий рівень сигналу. Кадр починається зі стартового біта (сигнальні лінії Rx або Тx переводяться в стан логічного нуля), за яким слідує молодший біт слова даних, що складається з 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 пересилаються в регістр зсуву й подаються на лінію Тx побітно). У режимі приймача зчитування отриманих даних здійснюється з регістра UDR1. Ініціалізація й контролювання режимів роботи модуля UART1 відбувається за допомогою регістрів керування/статусу UСSR1A (див. рисунок 5.3), UСSR1B (див. рисунок 5.4), UСSR1C (див. рисунок 5.5).

 

 

№ біта                
9Вh(ВВh) RXC1 TXC1 UDRE1 FE1 DOR1 UPE1 U2X1 MPCM1

Рисунок 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) RXCIE1 TXCIE1 UDRIE1 RXEN1 TXEN1 UCSZ12 RXB81 TXB81

Рисунок 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. - Розмір кадру даних

 

UCSZ12 UCSZ11 UCSZ10 Розмір даних
      5 біт
      6 біт
      7 біт
      8 біт
      9 біт

 

Біт 1 - RXB81 - формат прийнятих даних 9 біт.

Біт 0 - TXB81 - формат переданих даних 9 біт.

 

№ біта                
9Dh(BDh) - UMSEL1 UPM11 UPM10 USBS1 UCSZ11 UCSZ10 UCPOL1

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

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

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

Біти 5, 4 - UPM11, UPM10 - визначають режим перевірки парності при прийомі й при передачі даних (див. таблицю 5.2).

 

Таблиця 5.2 - Установки режиму парності

 

UPM1 UPM0 Режим парності
    відключений
    не використовується
    перевірка парності
    перевірка непарності

 

Біт 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 розряди.

. (5.1)

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

. (5.2)

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

 

Таблиця 5.3 - Значення дільників частоти модуля USART

для різних значень швидкості передачі даних

при нульовій погрішності установки швидкості

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

Приклад програмного коду ініціалізації модуля USART1 для режиму асинхронного зчитування даних на швидкості 14400 біт/с (у форматі 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 – захисне заземлення (екран);

-Tx – дані, передані комп'ютером у послідовному коді

(логіка негативна);

-Rx – дані, прийняті комп'ютером у послідовному коді

(логіка негативна);

RTS – сигнал запиту передачі. Активний весь час передачі;

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

DSR – готовність даних. Використовується для завдання режиму модему;

SG – сигнальне заземлення, нулевий дріт;

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

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

RI – індикатор виклику. Говорить про прийом модемом сигналу виклику по телефонній мережі;

Для трьохпровідної двунаправленної лінії зв'язку використовуються сигнали Rx, Tx і 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> Підключити заголовний файл mega128.h;

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

char i; опис глобальної змінної i;

main() { основна частина програми;

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

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

ініціалізації USART1 у режимі передавача;

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

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

UBRR1L=35; швидкості прийомуданих 19200 біт/с;

for (i=0; i<=19; i++) { організувати цикл на 20 ітерацій;

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 бітів даних без біта парності. Виконати індикацію прийнятих даних на екрані цифрового індикатора.*

 

* завдання підвищеної складності.

 

 

Зміст звіту

У звіті необхідно привести наступне:

характеристики лабораторної обчислювальної системи;

вихідний модуль розробленої програми;

аналіз отриманих результатів і короткі виводи по роботі, у яких необхідно відбити особливості використання вбудованих у мікроконтролер модулів USART при реалізації обміну даними між лабораторним макетом і ПЕОМ.

 

 

5.5 Контрольні питання й завдання

1. Поясніть принципи передачі інформації з послідовних і паралельних інтерфейсів.

2. Назвіть сучасні універсальні інтерфейси й приведіть їхні основні характеристики.

3. Поясніть принципи обміну даними по інтерфейсі RS232C.

4. Які регістри використовуються для настроювання параметрів передачі даних за допомогою вбудованого в мікроконтролер AVR MEGA128 блоку USART?

5. Які сигнали переривань можуть генеруватися блоком USART?

6. Поясніть формат кадру при обміні даних по інтерфейсі RS-232C.

 

 


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



double arrow
Сейчас читают про: