Обучение : Программирование на Ассемблере для PIC


Описание интерфейса RS-232

Интерфейс RS-232-C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс). Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления.


Компьютер имеет 25-контактный (DB25P) или 9-контактный (DB9P) разъем для подключения RS-232C. Назначение контактов разъема приведено в таблице.

 

Наименование линий RS-232, их направление и номер контакта

(IN – в сторону ПК, OUT – со стороны от ПК)

 

Наименование

Направление

Описание

Контакт

Контакт

(9-контактный разъем)

(25-контактный разъем)

DCD (RLSD)

IN

Carrie Detect

(Определение несущей)

1

8

RxD

IN

Receive Data

(Принимаемые данные)

2

3

TxD

OUT

Transmit Data

(Передаваемые данные)

3

2

DTR

OUT

Data Terminal Ready

(Готовность терминала)

4

20

GND

System Ground

(Корпус системы)

5

7

DSR

IN

Data Set Ready

(Готовность данных)

6

6

RTS

OUT

Request to Send

(Запрос на отправку)

7

4

CTS

IN

Clear to Send

(Готовность приема)

8

5

RI

IN

Ring Indicator

(Индикатор)

9

22

FG

(Экран)

корпус разъема

корпус разъема


Назначение сигналов

 

DCD (RLSD)

обнаружение несущей данных (детектирование принимаемого сигнала)

RxD

данные, принимаемые компьютером в последовательном коде (логика отрицательная)

TxD

данные, передаваемые компьютером в последовательном коде (логика отрицательная)

DTR

готовность выходных данных

GND

сигнальное заземление, нулевой провод

DSR

готовность данных, используется для задания режима модема

RTS

сигнал запроса передачи, активен во все время передачи

CTS

сигнал сброса (очистки) для передачи, активен во все время передачи, говорит о готовности приемника

RI

индикатор вызова, говорит о приеме модемом сигнала вызова по телефонной сети

FG

защитное заземление (экран)

 

 

Для того чтобы отвлечься от сложностей описания линий интерфейса RS-232, всё вышеперечисленное объясним на примере работы COM-порта:

– на линиях DTR и RTS компьютер может устанавливать высокий и низкий уровни сигналов;

– по линиям DCD, DSR и CTS компьютер может определять внешние сигналы соответствующих логических уровней;

– по линии RI компьютер может зафиксировать факт перевода по внешнему сигналу из логического низкого в логический высокий;

– по линиям TxD и RxD ведется обмен байтами, причем физическому низкому уровню соответствует логическая единица (т.е. передача инвертированный сигнал).

Как видим – всё достаточно просто. Назвать и описать линии можно как угодно. Нам важно понять направление работы линий и особенности линий для передачи данных. В отличии от параллельного порта, состоящего из восьми информационных линий и за один такт передающего байт, порт RS232, строго говоря, требует наличия только одной такой линии, по которой последовательно передается бит за битом. Это позволяет сократить количество информационных линий для передачи данных между устройствами, но уменьшает скорость.

 

Уровни сигналов RS-232C на передающем
и принимающем концах линии связи

 

 

На данном рисунке под передатчиком понимается компьютер.

Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи.

Еще раз отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю – высокий уровень). Данные в один и тот же момент времени могут передаваться в обе стороны: по одной линии в одну сторону, по другой линии в другую сторону (дуплексный режим).




 

Последовательный поток данных состоит из битов синхронизации и собственно битов данных. Формат последовательных данных содержит четыре части: стартовый бит, биты данных (5-8 бит), проверочный и стоповый биты; вся эта конструкция иногда называется символом.

Когда данные не передаются, на линии устанавливается уровень логической единицы. Это называется режимом ожидания. Начало режима передачи данных характеризуется передачей уровня логического нуля длительностью в одну элементарную посылку. Такой бит называется стартовым. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Биты данных посылаются последовательно, причем младший бит первым, всего их может быть от пяти до восьми. За битами данных следует проверочный бит, предназначенный для обнаружения ошибок, которые возникают во время обмена данными. Последней передается стоповая посылка, информирующая об окончании символа. Стоповый бит передается уровнем логической единицы. Длительность стоповой посылки – 1, 1,5 или 2 бита. Специально разработанное электронное устройство, генерирующее и принимающее последовательные данные, называется универсальным асинхронным приемопередатчиком (Universal Asynchronous Receiver Transmitter, UART). В большинстве современных микроконтроллеров UART реализован на аппаратном уровне. В случае с PIC16F84A мы будем UART реализовывать программно.

Обмен информацией с помощью UART происходит следующим образом. Приемник обнаруживает первый фронт стартового бита и выжидает полтора тактовых интервала, поскольку считывание должно начаться в середине первой посылки. Через один тактовый интервал считывается второй бит данных, причем это происходит в середине второй посылки. После окончания информационного обмена приемник считывает проверочный бит для обнаружения ошибок и стоповый бит, а затем переходит в режим ожидания следующей порции данных.

Скорость передачи информации в последовательном интерфейсе измеряется в бодах (бод – количество передаваемых битов за 1 сек). Стандартные скорости можно выбрать из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бод (бит/с). Зная скорость в бодах, можно вычислить число передаваемых символов в секунду. Например, если имеется восемь бит данных без проверки на четность и один стоповый бит, то общая длина последовательности, включая стартовый бит, равна 10. Скорость передачи символов соответствует скорости в бодах, деленной на 10. Таким образом, при скорости 9600 бод будет передаваться 960 символов в секунду.

Проверочный бит предназначен для обнаружения ошибок в передаваемых битах данных. Когда он присутствует, осуществляется проверка на четность или нечетность. Если интерфейс настроен на проверку по четности, такой бит будет выставляться в единицу при нечетном количестве единиц в битах данных, и наоборот. Это простейший способ проверки на наличие одиночных ошибок в передаваемом блоке данных. Однако, если во время передачи искажению подверглись несколько битов, подобная ошибка не обнаруживается. Проверочный бит генерируется передающим UART таким образом, чтобы общее количество единиц было нечетным или четным числом в зависимости от настройки интерфейса; приемное устройство должно иметь такую же настройку. Приемный UART считает количество единиц принятых данных. Если данные не проходят проверку, генерируется сигнал ошибки.

Теперь рассчитаем длительность битовой посылки для всего ряда скоростей (1000000 микросекунд/скорость) и количество пересылаемых символов в секунду (скорость/10).

 

 Скорость, бит/с  Длительность битовой посылки, микросекунд   Количество символов в сек.
110  9090,9  11
 150  6666,6  15
 300  3333,3  30
 600  1666,7  60
 1200  833,3  120
 2400  416,7  240
 4800  208,3  480
 9600  104,2  960
 19200  52,1  1920
 38400  26,0  3840
 57600  17,4  5760
 115200  8,7  11520

 


<<< назад далее >>>

Просмотров: 33018

 








 
 
 

В русском Интернете бестолку защищать свои права. Хотите использовать материалы - используйте,
но с письменного согласия авторов. В противном случае будут высланы соответствующие письма
в поисковые системы об ограничении индексации ваших сайтов. Не доводите до греха.