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

         

Интерфейс SPI


Интерфейс SPI (Serial Peripheral Interface), он же Microwire, — трехпроводный синхронный с раздельными линиями входных и выходных данных — применяет­ся для связи микроконтроллеров с периферийными микросхемами и микросхе­мами памяти. С его помощью программируются многие микросхемы программи­руемой логики (например, FPGA фирмы Altera), применяемые в различных узлах ПК и периферии. По сравнению с 12С интерфейс SPI обеспечивает более высо­кую скорость передачи данных. Частота синхронизации может достигать 5 МГц (зависит от подключаемых устройств); при этом за каждый такт синхрониза­ции одновременно может и передаваться, и приниматься очередной бит данных. В основном варианте использования предполагается, что интерфейс соединя­ет одно ведущее устройство с одним или несколькими ведомыми устройствами. Интерфейс может применяться и для обмена между несколькими микроконтрол­лерами, допуская наличие на шине нескольких ведущих устройств, но протокол предоставления доступа не стандартизован. Ниже рассматривается работа ин­терфейса с одним ведущим устройством. В интерфейсе используются 3 обязатель­ных сигнала:

¦ SCK (Serial Clock) — синхросигнал, которым ведущее устройство стробирует каждый бит данных;

¦     MOSI (Master Output Slave Input) — выходные данные ведущего устройства и входные данные ведомого устройства;

¦     MISO (Master Input Slave Output) — входные данные ведущего устройства и вы­ходные данные ведомого устройства.

11.3. Интерфейс SPI

445

Кроме того, может использоваться сигнал выбора ведомого устройства SS# (Slave Select, или CS# — Chip Select): ведомое устройство должно реагировать на сигна­лы интерфейса и генерировать выходные данные на линии MISO только при низ­ком уровне этого сигнала; при высоком уровне выход MISO должен переводиться в высокоимпедансное состояние. С помощью сигналов SS#, раздельно формиру­емых ведущим устройством для каждого из ведомых устройств, ведущее устрой­ство может выбирать партнером в транзакции одно из ведомых.
При этом получа­ ется гибридная топология соединений: по сигналам SCK, MOSI и MISO — топология шинная, по SS# — звездообразная (центр — ведущее устройство).

Возможен и иной способ общения ведущего устройства с несколькими ведомыми устройствами с чисто шинной топологией. Здесь сигнал SS# для выбора устройств не используется, но ведомые устройства все время «слушают» шину, ожидая спе­циальной адресной посылки в начале транзакции. Опознав свой адрес, устройство отрабатывает дальнейшие протокольные посылки, и теперь ему разрешается вы­водить данные на линию MISO до конца текущей транзакции. Однако этот вари­ант требует довольно сложной логики поведения ведомого устройства.



Рис. 11.5. Форматы передач по интерфейсу SPI

Данные передаются старшим битом вперед. Устройства различных производителей могут использовать разные режимы обмена (SPI Mode 0... SPI Mode 3), различа­ющиеся фазой и полярностью синхросигналов. Рис. 11.5 иллюстрирует переда­чу и прием байта в различных режимах. Заметим, что в любом режиме входные и выходные данные стробируются по разным перепадам синхроимпульсов. Кроме того, есть варианты в использовании сигнала SS#. В первом варианте (он и пред­ставлен на рисунке) для ведомого устройства признаком начала транзакции явля­ется спад сигнала SS#, а завершения — его подъем. Во втором варианте начало транзакции определяется по первому фронту (спаду) SCK, а сигнал SS# может иметь низкий уровень постоянно. Второй вариант иногда предпочитают для простей­шего двухточечного интерфейса с единственным ведущим устройством и единствен-

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

ным ведомым устройством, когда нет опасения потери синхронизации. Микроконт­роллеры с аппаратным портом SPI, как правило, имеют возможность программ­ного выбора режима. Форматы транзакций зависят от устройств, но общая идея такова: ведущее устройство по линии MOSI посылает код операции и адресную информацию для устройства; затем следуют данные.В операции записи они пе­редаются ведущим устройством по той же линии, в операции чтения устройство их посылает по линии MISO. На время всей транзакции ведущее устройство со­храняет активное состояние линии SS#, число требуемых синхроимпульсов зави­сит от формата команды.


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