Стандарт RS-232. Универсальный асинхронный приемо-передатчик (UART), микросхема 8250.
Структура UART
CU – ControlUnit (устройство управления)
BF – Buffer (буфер)
T – Transmit
R – Receive
M – Modem
D – Data (данные)
Состав UART
D – буфер данных – служит для обмена данными между микросхемами и процессором
DUCU – блок управления чтением и записью
MCU – блок управления модемом
TCU – блок управления передатчиком
TBF – буфер
RBF – буфер приемника
RCU – блок управления приемником
Таблица контактов разъема DB9
№контакта | Назначение | Обозначение | Тип |
1 | Детектор принимаемого сигнала | DCD | Вход |
2 | Принимаемые данные | RD | Вход |
3 | Передаваемые данные | TD | Выход |
4 | Готовность данных | DTR | Выход |
5 | Сигнальное заземление | SG | |
6 | Готовность данных | DSR | Вход |
7 | Запрос для передачи | RTS | Выход |
8 | Сброс для передачи | CTC | Вход |
9 | Индикатор вызова | RI | Вход |
Программно-доступные регистры UART
UART имеет десять программно-доступных регистров. Доступ к ним осуществляется по 8 адресам.
Регистры
THR – буфер передатчика
RBR – буфер приемника
ICR – управления прерыванием
IIR – идентификация прерывания
MCR – управление модемом
LSR – состояние линии
MSR – состояние модема
BAUD0 – делитель частоты (младший байт)
BAUD1 – делитель частоты (старший байт)
LCR – управление линией
Функции регистров
Регистр данных (DLAB)
Зависит от 7 бита регистра управления линией (управляет адресацией регистра данных). Должен находится в состоянии 0.
Адресация регистров
А0 | А1 | А2 | Доступные регистры |
0 | 0 | 0 | DLAB=0Передача: регистр данных передатчика. Запись в порт. Прием: Регистр данных приемника. Чтение из порта. DLAB=1Делитель частоты (младший байт) |
0 | 0 | 1 | DLAB=0Регистр управления прерыванием. DLAB=1Делитель частоты (старший байт) |
0 | 1 | 0 | Регистр идентификации прерывания |
1 | 0 | 0 | Регистр управления модемом |
1 | 0 | 1 | Регистр состояния линии |
1 | 1 | 0 | Регистр состояния модема |
А1, А2, А3 – младшие разряды адреса порта
Регистры данных
Адресуется адресом 000. Прием/передача DLAB=0.
Запись в порт регистр данных передатчика сдвиговый регистр Младший бит Sout. Чтение порта последний принятый байт данных.Регистр делителя частоты (DLAB=1). Адреса 000, 001.
Частота передачи данных (в бодах).
CLK – частота кварца 1,8432 МГц (8250), N – делитель частоты.
Бод – количество бит в секунду.
Частота передачи | Делитель |
115 200 бит/с | 1 |
57 600 бит/с | 2 |
38 400 бит/с | 3 |
Регистр управления линией.
Служит для задания формата слова данных.
Биты регистра | Длина слова | |||
D1 | D0 | 00 – 5 бит01 – 6 бит10 – 7 бит11 – 8 бит | ||
D2 – число стоповых битов | 0 – 1 стоп-бит1 – 2 стоп-бита | |||
D5*0011 | D4*0101 | D301111 | Способ контроля по паритетуОтсутствие бита контроляБит контроля по четностиБит контроля по нечетностиБит контроля равен 1Бит контроля равен 0 | |
D6 – выбор режима работы | 0 – обычный режим1 – установить низкий уровень на линии SOUT (обрыв линии) | |||
D7 – бит определения адреса (DLAB) |
Регистр управления модемом
Определяет уровень сигнала на четырех линиях: DTR, OUT1, OUT2, RTS.
D7, D6, D5 – не используются
D0 – дополнение сигнала DTR
D1 - дополнение сигнала RTS
D2 - дополнение сигнала OUT1
D3 - дополнение сигнала OUT2
D4 – выбор обратной связи для тестирования UART.
Тестирование:
SOUT – сигнал высокого уровня
Вход SIN отсоединяется
Регистр передачи –> регистр приема
соединение:
DTR –> DSR
RTS –> CTS
OUT1 –> RI
OUT2 –> RLS0
Регистр состояния линии
D0=1 | При загрузке данных в буферный регистр приемника |
D1=1 | Обнаружена ошибка переполнения |
D2=1 | Обнаружена ошибка четности |
D3=1 | Обнаружена ошибка кадра |
D4=1 | На линии SIN разрыв |
D5=1 | THR –> сдвиговый регистр передачи |
D6=1 | Сдвиговый регистр передатчика пуст |
D7=0 | Всегда |
Бит D0 сбрасывается в 0, когда процессор прочитает содержимое буфера приема. D5 – процессор пишет в буфер передачи очередной байт. D1 – D4 – читает содержимое регистра статуса линии. D6 – устанавливается в 1, когда регистр передачи пуст.
Регистр состояния модема
D0 | Изменение состояния на линии | CTS |
D1 | Изменение состояния на линии | DSR |
D2 | Изменение состояния на линии | RI |
D3 | Изменение состояния на линии | DCD |
D4 | Сигнал на линии | CTS |
D5 | Сигнал на линии | DSR |
D6 | Сигнал на линии | RI |
D7 | Сигнал на линии | DCD |
4 старших бита показывают уровень напряжения на линии, а 4 младших – наличие изменения уровня. Любое чтение регистра обнуляет младшие биты этого регистра.
Регистры прерывания
регистры управления прерыванием (001)
регистры идентификации (010)
Существует 10 условий возникновения запроса на прерывание (INTRPT) на линии UART.
Высокий приоритет:
Ошибка: переполнения, четности, кадра, разрыв линии.
Доступны принятые данные
Буфер передатчика пуст
Изменение на входах управления модемом.
Назначение млдаших битов регистра управления прерыванием
00 – готовы принятые данные
01 – буфер передатчика пуст
02 – разрыв линии или наличие ошибки
03 – изменение уровня сигналов RIS0, RI, DSR, CTS.
Нуль – модем
Соединение передатчика и приемника через кабель. RS – 232 стандартизирует обмен между двумя устройствами.
Нуль – модем (9 pin)
С помощью такого можно реализовать более сложные протоколы.
Программирование последовательного порта
СОМ1: 0040: 00003F8H – базовый адрес
СОМ2: 0040: 00022F8H – базовый адрес
СОМ3: 3E8H
СОМ4: 2E8H
Адреса регистров:
Смещение от базы | Регистр |
0, OUT | DLAB=0, регистр хранения передатчика |
0, IN | DLAB=0, регистр данных приемника |
0, OUT | DLAB=1, делитель скорости обмена, младший байт |
1, OUT | DLAB=1, делитель скорости обмена, старший байт |
1, OUT | DLAB=0, регистр разрешения прерывания |
3, OUT | DLAB=0, регитср управления линией |
4, OUT | Регистр управления модемом |
5, IN | Регистр статуса линии |
6, IN | Регистр статуса модема |
Скорость обмена
Делитель | Делитель HEX | Скорость бод |
1040 | 600 | 110 |
768 | 300 | 150 |
384 | 180 | 300 |
192 | С0 | 600 |
96 | 60 | 1200 |
48 | 30 | 2400 |
24 | 18 | 4800 |
12 | С | 9600 |
Пример простейшей коммуникационной программы (см. рисунок ниже)
Алгоритм работы программы:
Инициализация портов связи
Ввести символ с клавиатуры, отобразить на экране, передать в порт.
Ввести символ с порта, отобразить в окне «прием».
Инициализация порта
Установка вормата передаваемых данных.
Установка скорости передачи.
Инициализация регистра прерывания.
Задание формата.
Считывается текущее состояние регистра управления линией.
Изменяется нужные биты регистра.
Записывается новое значение.
Задание скорости:
Старший бит регистра управления линией устанавливается в 1 (DLAB=1).
Младший байт делителя частоты записывается в регистр данных.
Старший байт делителя записывается в регистр разрешения прерывания.
Инициализация:
Старший бит регистра управления линией устанавливается в 0 (DLAB=0).
Записать в регистр разрешения прерываний соответствующее значение (0 – запрещено).
Передача данных:
Перед записью байта в регистр передатчика проверяется пятый бит регистра статуса линии.
Прием данных:
Необходимо убедиться, что байт принят из линии и находится в регистре приемника (нулевой бит установлен в 1).
Глобальные компьютерные сети
Глобальная сеть ЭВМ – это сеть вычислительных машин, распределенных на обширной территории, включая в себя определенные ЭВМ и локальные сети ЭВМ, использующие национальные сети передачи данных.
Локальные сети ЭВМ – включает отдельные машины или сети вычислительных машин, распределенных на ограниченной территории (до 50 км) и не использующая национальные сети.