Проектирование устройств сопряжения (1083567), страница 22
Текст из файла (страница 22)
// Функция инициализации.
// Определяет адрес порта, к которому подключен модуль
// (по сигналу BUSY).
// Возвращает: 1 — модуль подключен, 0 — не подключен
int Init_UPA (void)
{
int *b;
b = (int *) MK_FP (0, 0x408); // Указатель на ячейку 0:408
while ( *b != 0 ) // Если порт установлен
{
Cent_Base = *b; // Считываем
// его базовый адрес
if (Cent_Status_drv() & BUSY != 0) continue;
// Модуль не подключен
// к этому порту
Cent_Control_drv (0xF); // Строб записи = 1 -
// исходное состояние
return 1; // Модуль подключен
}
return 0; // Модуль не подключен
}
// Функция записи управляющего слова УПА
void WriteCW_UPA (void)
{
WriteP_UPA (7, CW);
}
// функция записи данных в порт УПА
// Вход: data — байт данных, port — номер порта (0...7)
void WriteP_UPA (unsigned port, unsigned char data)
{
Cent_Control_drv ( (port^0x7) | SLCTIN ); // Номер порта
// (с инверсией) и
// строб записи =1
outportb (Cent_Base, data); // Установка байта данных
Cent_Control_drv (port^0х7); // Строб записи = 0
Cent_Control_drv ( (port^0х7) | SLCTIN ); // Строб записи =1
}
// Функция чтения данных из порта УПА
// Вход: port — номер порта (0...6).
// Возвращает: байт данных
unsigned char ReadP_UPA (unsigned port)
{
unsigned char data;
// Чтение младшей тетрады
WriteCW_UPA (CW | T1_T2); // Режим чтения младшей тетрады
Cent_Control_drv ( (port^0x7) | SLCTIN ); // Номер порта
// (с инверсией) и
// строб записи = 1
data = Cent_Status_drv() & STATUS_DATA; // Чтение
// младшей тетрады
// Чтение старшей тетрады
WriteCW_UPA (CW); // Режим чтения
// старшей тетрады
Cent_Control_drv ( (port^0х7) | SLCTIN ); // Номер порта
// (с инверсией) и
// строб записи = 1
data += (Cent_Status_drv() & STATUS_DATA) << 4; // Чтение
// старшей
// тетрады
return data;
}
// Конец драйверов
Разработка устройств сопряжения для RS-232C
Наряду с параллельными методами обмена информацией, к которым относятся применение интерфейса CENTRONICS и подключение к системной магистрали ISA, можно использовать и интерфейс последовательного обмена RS-232C Его применение имеет свои особенности, о которых уже упоминалось в первой главе.
Несмотря на очевидные скоростные преимущества параллельных методов, их применение оказывается затруднительным, а часто и вовсе невозможным, в случаях, когда по ряду причин требуется организовать обмен со сколько-нибудь удаленным внешним устройством. В подобных ситуациях, если интенсивность обмена не слишком высока (предполагается, что разработчик знает основные требования, предъявляемые к системе), применение интерфейса RS-232C вполне оправданно, тем более, что персональный компьютер, не имеющий встроенных последовательных каналов ввода-вывода (портов RS-232C) встречается в наше время крайне редко.
Таким образом, выбор в пользу применения интерфейса RS-232С может быть сделан при наличии следующих требований:
- относительная удаленность объекта обмена информацией (внешнего устройства) от компьютера (стандартом оговорена длина кабеля до 15 м при наличии общего контура заземления, однако во многих практических случаях она может быть существенно увеличена, хотя и с некоторым снижением рабочих скоростей);
- сравнительно (по отношению к параллельным методам и локальным вычислительным сетям) невысокая скорость обмена данными (максимально возможная скорость передачи данных стандартного последовательного порта компьютера составляет 115200 бит/сек, что ограничивает скорость обмена величиной около 10 Кбайт/сек),
- применение стандартного интерфейса для подключения к компьютеру без его вскрытия (несмотря на то, что времена, когда установка любой дополнительной платы в компьютер представлялась кощунством и вызывала дрожь его хозяина, прошли, применение RS-232C для подключения внешних устройств существенно упрощает процесс подключения и повышает оперативность в работе).
Далее в настоящей главе приведена информация, пользуясь которой разработчик сможет осуществить сопряжение проектируемого устройства с компьютером при помощи интерфейса RS-232С. Следует, однако, иметь в виду, что при изложении материала авторы нисколько не претендовали на всестороннее освещение вопроса, что потребовало бы отдельной книги, а стремились только донести до читателя некоторые свои проверенные на практике технические решения.
4.1. Постановка задачи сопряжения
При использовании интерфейса RS-232C задача сопряжения объекта обмена информацией с компьютером обычно формулируется следующим образом- требуется обеспечить связь с удаленным контроллером, обслуживающим технологическую или лабораторную установку. Именно этот контроллер играет в данном случае роль УС.
Чаще всего такой контроллер представляет собой микроЭВМ, имеющую собственную магистраль и набор внешних устройств, осуществляющих передачу входных сигналов с разнообразных датчиков (если таковые имеются) и выдачу управляющих воздействий на органы управления (если они присутствуют). Для нас существенным моментом является наличие в контроллере процессора, обрабатывающего информацию, представленную в параллельной форме, и магистрали, обеспечивающей взаимодействие различных его узлов. Если же требуется организовать сопряжение с устройством, не имеющим собственного интеллекта, задача сразу же существенно усложняется и часто становится практически невыполнимой. Поэтому в таком случае стоит подумать о выборе других путей сопряжения.
Этапы преобразования сигналов интерфейса RS-232C на пути от компьютера к микропроцессору удаленного контроллера достаточно очевидны и проиллюстрированы рис. 4.1. Здесь и далее мы считаем, что для сопряжения через RS-232C используется наиболее распространенная простейшая 4-проводная линия связи.
Блок преобразователей уровня обеспечивает электрическое согласование уровней сигналов последовательного интерфейса, формируемых контроллером, входящим в состав компьютера (±12 В), с уровнями сигналов, присутствующими в микропроцессорной системе (здесь и далее предполагаем, что в микро процессорной системе действуют уровни ТТЛ).
Рис. 4.1. Организация сопряжения через интерфейс RS-232C.
Блок преобразователя кода переводит последовательное представление информации в параллельное (и наоборот), осуществляя распознавание начала и конца посылки, синхронизацию приема-передачи битов кадра, слежение за наличием ошибок, информирование о готовности к выполнению операций и т. п.
Интерфейс шины обеспечивает сопряжение преобразователя кода с локальной магистралью микропроцессорной системы, осуществляя двунаправленную передачу данных в соответствии с алгоритмами и временными соотношениями, принятыми в ней.
Таким образом, даже на этапе постановки задачи ситуация в случае использования RS-232C существенно отличается от рассмотренных ранее (при использовании ISA и Centronics).
4.2. Схемотехника преобразователей уровня
В зависимости от требований, предъявляемых к проектируемой системе, преобразователи уровня могут быть выполнены самыми различными способами.
Так, когда требуется передача и прием всего лишь одной пары сигналов (TxD и RxD), и желательно иметь возможность быстро восстановить работоспособность системы в случае выхода ее из строя, можно применить передатчик, выполненный на дискретных компонентах (рис 4.2).
Рис. 4.2. Передатчик на дискретных компонентах.
Функционирование схемы вряд ли нуждается в комментариях, а транзисторы КТ315 и КТ361, как правило, являются непременным атрибутом любой лаборатории.
Для простейшего приемника сигналов последовательного порта вообще не требуется никаких дополнительных схем кроме входных ограничителей уровня и инвертора, но все же неплохо, если приемник будет обладать некоторым гистерезисом. Вполне пригодная к использованию схема приведена на рис. 4.3.
Часто однако случается, что применение дискретных элементов является нежелательным, а если к тому же требуется наличие более двух сигналов последовательного интерфейса, то лучшим решением может оказаться использование специализированных интерфейсных интегральных микросхем преобразователей уровня, например IFC1488 (КР559ИП19) и IFC1489 (КР559ИП20), представленных на рис. 4.4 и рис. 4.5.
Рис. 4.3. Простейший приемник сигналов.
Рис. 4.4. Микросхема передатчика IFC1488 (КР559ИП19). Корпус DIP-14. Вывод 1 — -12В, вывод 14 — +12В, вывод 7 — общий.
Рис. 4.5. Интегральная микросхема приемника IFC1489 (КР559ИП20). Корпус DIP-14. Вывод 14 - +5 В, вывод 7 — общий.
Выходы микросхемы IFC1488 имеют последовательно включенные резисторы номиналом 300 Ом и обеспечивают биполярные уровни Uвых i ± 6 В.По информационным входам (RxD) микросхема обладает гистерезисом, положение которого определяется напряжением, поданным через токоограничительный резистор на выводы g. Допускается оставлять эти выводы неподсоединенными.
Микросхемы КР559ИП19 и ИП20 выпускаются в настоящее время белорусским объединением "Интеграл" (г. Минск).
С точки зрения разработчика цифровой аппаратуры, очевидным недостатком обоих типов преобразователей уровня является необходимость наличия источника двуполярного напряжения питания ±12 В. Несмотря на то, что в компьютере такие напряжения имеются, на разъем интерфейса RS-232C они не выведены, и использовать их довольно-таки затруднительно. Обойтись без дополнительных источников питания возможно, применив специально разработанные для этой цели интерфейсные микросхемы. Широкая гамма таких кристаллов выпускается известной фирмой MAXIM.
Они содержат преобразователь напряжения +5 В в напряжение + 10 В (генератор + умножитель напряжения), инвертор (преобразующий напряжение +10 В в -10 В) и собственно преобразователи уровня сигналов последовательного интерфейса. Большинство из них требуют дополнительных элементов (необходимы внешние конденсаторы), что не является чрезмерной платой за преимущества их применения. Полная номенклатура изделий вместе со всей необходимой подробной информацией по их применению имеется в соответствующих справочных материалах фирмы. На рис. 4.6-4.8 приведены некоторые данные лишь по нескольким микросхемам.
В заключение обзора преобразователей уровня представляется полезным упомянуть о еще одной схеме, которая может оказать помощь в случае, если требуется обеспечить связь при значительном удалении обслуживаемого объекта от компьютера с сохранением в качестве порта ввода-вывода стандартного последовательного интерфейса. Это схема (рис. 4.9) преобразователя. RS-232C — "токовая петля 20 ma", осуществляющая к тому же гальваническую развязку компьютера от объекта управления.
Рис. 4.6. Микросхема МАХ 235 фирмы MAXIM.
Рис. 4.7. Микросхемы МАХ 222 и МАХ 242 фирмы MAXIM.
Рис. 4.8. Микросхемы МАХ 220, МАХ 232, MAX 232A фирмы MAXIM. В таблице приведены номиналы конденсаторов в микрофарадах.
Рис. 4.9. Преобразователь RS-232C - "токовая петля 20 ma", акгивный передатчик — пассивный приемник.
Отметим, что гальваническая развязка бывает крайне необходима при сколько-нибудь значительном расстоянии между любыми объектами, соединяемыми электрическим кабелем. В подобных ситуациях известны довольно многочисленные случаи выхода из строя компьютеров, которые были заземлены но находились в разных комнатах. Измерения токов, текущих по нулевому проводу соединительных кабелей, дают такие сумасшедшие величины, как 2-3 А, несмотря на то, что оба конца этого провода вроде бы заземлены.
Данная схема (рис. 4.9) обеспечивала связь компьютера с удаленным контроллером при длине кабеля около 2 км на скорости 38400 бит/сек. Очевидно, что для двунаправленной связи приемная и передающая части должны быть подключены к обоим концам кабеля.
4.3. Схемотехника преобразователей кода
Преобразование кода из параллельного в последовательный (и наоборот) может осуществляться различными способами в зависимости от конкретной реализации контроллера, с которым производится сопряжение. Выбор того или иного способа во многих случаях достаточно очевиден.