Последний уровень раздела предыдущего изложения   Текущий уровень изложения предыдущего раздела   Неактивно   Неактивно   Уровень: Глоссарии:


Программируемый связной интерфейс

Программируемый связной интерфейс или универсальный (синхронно-)асинхронный приемо-передатчик (У(С)АПП или U(S)ART) предназначен для организации обмена данными между МП и удаленными ВУ в последовательном формате. По этой причине УСАПП называют также последовательным интерфейсом (IOS).В качестве передатчика УСАПП преобразует параллельный код в последовательный и отправляет его в линию связи, а в качестве приемника осуществляет обратное преобразование. УСАПП может обмениваться данными с удаленными устройствами в симплексном (движение информации в одном направлении) , полудуплексном (информация передается и принимается в обоих направлениях, но поочередно) и дуплексном режимах (обмен данными в обоих направлениях одновременно).



На рисунке приведено упрощенное условное обозначение УСАПП, схема его включения в микропроцессорную систему и типичная последовательность бит на входе приемника или выходе передатчика в асинхронном режиме работы. Микропроцессор на схеме не показан. Счетчик CT0 таймера (мог быть и другой) обеспечивает требуемую скорость обмена данными.



Назначение некоторых выводов: TxD - выход передатчика, RxD - вход приемника, CLK - вход частоты синхронизации, TxC - вход синхросигнала передатчика, RxC - вход синхросигнала приемника, ~CTS - инверсный вход готовности приемника терминала (удаленного устройства или модема). В простых системах связи вход ~CTS можно жестко связать с "землей", уведомляя передатчик, что приемник "всегда готов", а его действительная готовность к приему - это забота программиста! Если используется стандартный протокол связи, например RS-232C, то вход ~CTS должен быть отсоединен от нулевого провода. C/~D - функциональный вход "управление/данные". Если C/~D = 0 , то МП и УСАПП обмениваются байтом данных, если C/~D = 1, то происходит запись байта управления или чтение байта состояния. Назначение остальных выводов PCI аналогично назначению соответствующих выводов PPI. Приведенных на рисунке выводов достаточно для реализации связи с не очень удаленными объектами, например с компъютером или с другими МП.



ios.gif(8836bytes)



Из приведенного рисунка нетрудно вычислить адреса PCI. Для нулевого выхода дешифратора, подключенного к входу таймеру "выбор микросхемы" адреса уже найдены . Активизация инверсного  входа ~CS УСАПП производится подачей сигналов A4,A3,A2 = 111(BIN) = 7(DEC) и разрешающих работу дешифратора сигналов A7,A6,A5 = 100(BIN). В таблице приведены два из четырех возможных адресов PCI (A1 = 0).



ЛИНИИ ШИНЫ АДРЕСА ДАННЫЕ / РЕГИСТР УПРАВЛЕНИЯ (CSR) АДРЕС (HEX)
A7 A6 A5 A4 A3 A2 A1 A0
1 0 0 1 1 1 x 0 Адрес порта данных
1 0 0 1 1 1 x 1 Адрес порта CSR 9D


Одним из наиболее распространенных режимов работы УСАПП является асинхронный режим. В этом режиме каждый передаваемый символ (кадр) содержит следующие поля:





Кадры следуют непрерывно или отделяются паузами. Инфомационные биты передаются начиная со старших разрядов. На рисунке передается/принимается код 01011001, а не 10011010.



УСАПП программируется записью в него байта управления, который может быть двух типов:





ФОРМАТ ИНСТРУКЦИИ РЕЖИМА



Инструкция режима задает режим синхронизации, формат данных, скорость обмена, необходимость контроля. Ниже в таблице приведен формат инструкции режима.



D7 D6 D5 D4 D3 D2 D1 D0


 



D7 D6 Число стоп-бит Вид контроля D5 D4
0 0 Запрет Нет контроля 0 0
0 1 1 стоп-бит Контроль нечетности 0 1
1 0 "полтора" стоп-бита Нет контроля 1 0
1 1 2 стоп-бита Контроль четности 1 1


D3 D2 Число информационных бит Частота синхронизации D1 D0
0 0 5 fTxC(RxC)  / 1 0 1
0 1 6 fTxC(RxC) / 16 1 0
1 0 7 fTxC(RxC) / 64 1 1
1 1 8




ФОРМАТ КОМАНДЫ УПРАВЛЕНИЯ



Ниже в таблице приведены некоторые биты команды управления.



Разряд Обозначение НАЗНАЧЕНИЕ КОМАНДЫ
D0 TxEN Разрешение работы УСАПП в качестве передатчика, D0=1
D2 RxEN Разрешение работы УСАПП в качестве приемника, D2=1
D4 ER Сброс в ''0" флагов ошибок, D4=1
D6 RESET Программный сброс УСАПП в исходное состояние, D6=1


ФОРМАТ БАЙТА СОСТОЯНИЯ



В процессе работы можно осуществлять контроль за работой  УСАПП путем чтения байта его состояния. Ниже в таблице приведены некоторые наиболее употребительные в асинхронном режиме биты состояния УСАПП.



D7 D6 D5 D4 D3 D2 D1 D0
    FE OE PE   RxRDY TxRDY


Биты D5,D4,D3, называемые также флагами, устанавливаются/сбрасываются   приемником УСАПП сигнализируя:





Бит RxRDY (Готовность приемника), если RxRDY=0, то приемник еще не преобразовал последовательный код в параллельный и считывать его в микропроцессор бессмысленно.



Бит TxRDY (Готовность передатчика) - если TxRDY=0, то передатчик еще не преобразовал параллельный код в последовательный и загрузка следующего кода из МП в передатчик исказит текущее передаваемое значение.



Ниже приводится фрагмент программы передачи массива байтов, хранящихся в памяти.

Начальный адрес массива символов - 8007(HEX). Передается  8 байтов: fd,87,9c,88,40,55,8a,b8. Адреса таймера 80,83 и УСАПП 9c,9d были получены ранее. Коэффициент деления частоты fCLK(N0=5)>4.5.



;++++ настройка и запуск делителя частоты

mov al,1eh; CT0,1 мл.байт, режим 3, код BIN out 83h,al; вывод байта упр. 1e в порт 83 mov al,5 ; коэфф. деления частоты Fclk N0=5 out 80h,al; и запись его в CT0 по адресу 80

;++++ настройка УСАПП ...........

mov al,40h; программный сброс D6=1 out 9dh,al;

mov al,0cfh;инструкция режима: 2 стоп-бита, out 9dh,al ;нет контроля,8 инф. бит, fTxC(RxC) / 64

mov al,01h;разрешение передачи TxEN =1 out 9dh,al;



;++++ передача массива символов



mov cl, 8; число передаваемых символов
mov bx,8007h; начальный адрес блока
nxt: mov al,[bx]; переслать текущий байт в AL
out 9ch,al; и вывести его в УСАПП
wt: in al,9dh; чтение байта состояния
shr al,1; символ передан в линию? ( TxRDY =1?),
jnc wt; если нет,то подождать,
inc bx; если да, перейти к адресу след. байта
dec cl; переданы все байты?
jnz nxt; если нет,то повторить вывод след. байта
........; если да,то выйти из цикла.