Кроме задачи передачи непрерывного потока информации достаточно часто требуется передавать отдельные цифровые пакеты или управляющие команды. Эти пакеты могут передаваться достаточно редко. Именно для передачи такого вида информации и предназначен синхронный последовательный интерфейс (SPI).
В синхронном последовательном интерфейсе SPI кадровые синхронизирующие импульсы не передаются постоянно. Это не нужно. Они присутствуют только в момент передачи команды. Соответственно меняется и их название. В SPI интерфейсе сигнал кадровой синхронизации называется выбор ведомого (slave select — SS). Временные диаграммы сигналов на выводах этого порта приведены на рисунке 1.
Рисунок 1. Временные диаграммы сигналов на выводах синхронного последовательного интерфейса SPI
Как видно из приведённых временных диаграмм, сигнал кадровой синхронизации накрывает весь промежуток времени, предназначенный для обмена информацией. Он как бы разрешает этот обмен. Отсюда и его название.
Сигнал тактовой синхронизации в этом интерфейсе используется один как для передатчика, так и для приёмника. Это позволяет экономить внешние выводы микросхемы. Для того чтобы не запутаться какой вывод передачи последовательных данных с каким соединять эта информация включена в название выводов. Название MISO обозначает вход главного устройства выход подчинённого (master input — slave output), а название MOSI обозначает выход главного и вход подчинённого устройства (master output — slave input). В качестве главного устройства в этом интерфейсе обычно используется микроконтроллер, реже сигнальный процессор.
Рассмотрим схему цифрового устройства, которая может реализовать обмен данными по интерфейсу SPI. Пример такой схемы приведён на рисунке 2.
Рисунок 2 Схема master SPI-порта
В этой схеме для передачи и приёма последовательных данных используются сдвиговые регистры D3 и D6. Так как синхроимпульсы SPI порта, в отличие от синхросигнала аналого-цифрового или цифро-аналогового преобразователей, используются только для синхронизации передачи данных, то требования к задающему генератору меньше. В результате для формирования синхронизирующего сигнала можно использовать встроенный кварцевый генератор (кварцевый резонатор, естественно, будет подключаться к внешним выводам микросхемы).
Кварцевый генератор в схеме, приведенной на рисунке 2, построен на логическом элементе "2И-НЕ". Это позволяет останавливать и вновь запускать этот генератор. Для формирования сигнала выбора ведомого SS и для подсчёта необходимого количества импульсов синхронизации (в нашем случае восьми) служит двоичный счётчик D2.
Рассмотрим работу схемы формирования сигнала выбора ведомого подробнее. В исходном состоянии в двоичном счётчике записано число 10002. При этом на выводе SS и на выходе логического элемента D1 присутствует высокий потенциал.
При параллельной записи данных в регистр передачи D3 импульс записи одновременно подаётся на вход обнуления счётчика D2. В результате на выводе SS появляется низкий потенциал. Это означает, что SPI интерфейс начинает передачу данных. Одновременно снимается запрещающий потенциал с логического элемента D1 "2И-НЕ". При этом на обоих входах этого элемента появляется единичный потенциал. В результате на выходе этого элемента появится нулевой потенциал и возникнут условия для самовозбуждения генератора.
Временные диаграммы на входе и выходах счетчика D2 приведены на рисунке 3.
Рисунок 3. Временные диаграммы схемы формирования сигнала выбора подчиненного SS
Импульсы поступают на вход последовательной синхронизации сдвигового регистра D3 и вход счётчика D2. После поступления на вход схемы D3 восьмого импульса передача данных в последовательном виде завершается, а в счётчике D2 оказывается записанным число 8. В двоичном виде оно равно значению 10002, а значит, на выводе SS вновь появится высокий потенциал, означающий завершение передачи данных по синхронному последовательному интерфейсу SPI.
Так как этот же сигнал через инвертор подаётся на вход логического элемента D1, то на его выходе появится единичный потенциал, и условия генерации сорвутся. Генератор больше не будет вырабатывать импульсы, а значит, двоичный счётчик останется в состоянии 10002 до прихода следующего импульса записи в SPI порт.
Интегрирующая цепочка R3C3 используется для подавления короткого импульса в конце формирования сигнала SS, а инвертор D4 позволяет осуществлять запись в сдвиговый регистр D6 по заднему фронту сигнала тактовой синхронизации. В результате подчиненное устройство может успеть подготовить очередной бит передаваемых данных.
Мы рассмотрели схему SPI интерфейса со стороны главного устройства. Схема подчиненного устройства намного проще. Она может быть построена на обыкновенном сдвиговом регистре, как это показано на рисунке 4.
Рисунок 4. Схема подчиненного SPI-порта