Аппаратные интерфейсы ПК

Программно-управляемая реализация последовательных интерфейсов


Рассмотренные выше интерфейсы — PC, SMBus, SMI, SPI и JTAG — имеют общее свойство: они управляются и синхронизируются контроллером и не требуют фикси­рованной частоты синхронизации. Это позволяет для многих применений программ­но реализовать их на любом компьютере или микроконтроллере. На рис. 11.9 при­ведена схема простейшего адаптера интерфейсов I2C, SMBus или SMI для LPT-порта. Здесь сигнал SCL (или MDC в SMI) формируется непосредственно от выходной линии Strobe; для его переключения достаточно последовательно записывать в бит О регистра CR (порт с адресом LPT_BASE+2) нули (высокий уровень сигнала) и еди­ницы (низкий). Двунаправленный сигнал SDA (МОЮ в SMI) реализуется чуть сложнее: для передачи нуля в бит 1 регистра CR (LPT_BASE+2) записывается еди­ница, для передачи единицы — нуль. На время чтения в этот бит должен быть запи­сан нуль (чтобы на выходе был высокий уровень), данные (инверсные) считываются из бита 7 регистра SR (LPT_BASE+1). В адаптере должен использоваться диод с малым прямым падением напряжения. Лучше всего для этого подходят германи­евые меза-диоды Д310 или Д311; кремниевые диоды, даже с барьерами Шоттки, здесь работают хуже (возможен слишком высокий формируемый уровень нуля).

Программная реализация протоколов в среде DOS и Windows 9x не вызывает осо­бых затруднений» поскольку здесь программист может обращаться к регистрам порта непосредственно. В более защищенных ОС (UNIX, Linux, Windows NT/ 2000) для обращения к регистрам LPT-порта требуются вызовы API.

При использовании данных адаптеров следует внимательно относиться к пробле­мам защиты от помех. Непосредственно с адаптера сигналы можно передавать

452

Глава 11. Вспомогательные последовательные интерфейсы и шины

лишь на небольшие расстояния (десятки сантиметров). Для передачи на большие расстояния (если ПК не приблизить к объекту) подойдут преобразователи уров­ней сигналов ТТЛ в дифференциальные сигналы интерфейса RS-422 и обратно. При этом адаптер разделяется на 2 блока, соединенные кабелем, — первый блок устанавливается на LPT-порт, другой — около подключаемого объекта.




Рис. 11.9. Адаптер трехпроводных интерфейсов для LPT-порта

Несколько сложнее получаются адаптеры этих интерфейсов для СОМ-портов. Здесь можно программно генерировать сигналы DTR и RTS и считывать состо­яния сигналов CIS, DSR, DCD и RI. Усложнение заключается в необходимости использования преобразователей уровней сигналов RS-232C в ТТЛ (для этого вы­пускается ряд микросхем, например фирмами Maxim, Sypex), для которых требу­ется подача питания.

Для интерфейсов SPI и JTAG тоже можно использовать LPT-порт, здесь даже не требуется организация двунаправленных линий. Сигналы SCK и MOSI (SPI), TCK, TMS, ТОО и TRST (JTAG) можно подключить к любым выходным линиям порта, MISO (SPI), TDI (JTAG) — к любой входной линии. Простейший адаптер содер­жит лишь последовательные резисторы 100-150 Ом, включенные в сигнальные цепи для уменьшения «звона» и влияния кабеля на схему. Однако такая схема может надежно работать лишь при небольшой длине кабеля (20-30 см), что не всегда удобно. Более надежна и удобна схема с буферами, способными переходить в высокоимпедансное состояние (например, 74НС244 или 1556АП5). Плата с бу­фером может соединяться с ЬРТ-пор'том довольно длинным кабелем, а от нее к устройству идет короткий кабель. Программно-управляемый перевод буфера выходных сигналов в третье состояние позволяет логически отключать адаптер от программируемой схемы, что особенно удобно в процессе отладки програм­мируемых устройств. Именно так устроен популярный адаптер «ByteBlaster», применяемый для программирования конфигурируемой логики фирмы Altera и других. Адаптер вместе с ПО может обеспечивать протокол SPI (быть ведущим устройством в варианте с двухточечной топологией), JTAG и собственный прото­кол программирования устройств «Serial Passive». Схемы различных адаптеров и ПО для них можно легко найти в Сети.

Программная реализация последовательных протоколов ограничивает скорость передачи данных на уровне 50-150 Кбит/с при работе LPT-порта в стандарт­ном режиме.В режиме ЕРР или ЕСР можно достичь скорости и 1-2 Мбит/с, но

11.5. Программно-управляемая реализация последовательных интерфейсов 453

при этом адаптер несколько усложняется (поскольку в этих интерфейсах тре­буется одновременно принимать и передавать данные). Решить проблему произ­водительности, а заодно и расширить функциональные возможности позволяет использование специализированных интерфейсных адаптеров для шин PCI или ISA, выпускаемых рядом фирм. Есть и внешние устройства с интерфейса­ми USB или Ethernet. Правда, цена этих адаптеров и устройств существенно отличается от цены простого адаптера, который можно изготовить и самосто­ятельно.


Содержание раздела