Кроме задачи передачи непрерывного потока информации достаточно часто требуется передавать отдельные цифровые пакеты данных или управляющие команды. Эти пакеты могут передаваться достаточно редко. Именно для передачи такого вида информации и предназначен синхронный последовательный интерфейс (SPI).
В синхронном последовательном интерфейсе синхронизирующие импульсы не передаются постоянно. Это не нужно. Они присутствуют только в момент передачи команды или цифрового пакета данных. Соответственно меняется и их название. В SPI интерфейсе сигнал кадровой синхронизации называется выбор ведомого (slave select — SS). Сигнал тактовой синхронизации получил название SCLOCK — serial clock (последовательная синхронизация). Временные диаграммы сигналов на выводах этого порта приведены на рисунке 11.4.
Как видно из приведённых на рисунке 11.4 временных диаграмм, сигнал кадровой синхронизации накрывает весь промежуток времени, предназначенный для обмена информацией. Он как бы разрешает этот обмен. Отсюда и его название.
Сигнал тактовой синхронизации в этом интерфейсе используется один как для передатчика, так и для приёмника. Это позволяет экономить внешние выводы микросхемы. Для того чтобы не запутаться какой вывод передачи последовательных данных с каким соединять эта информация включена в название выводов. Название MISO обозначает вход главного устройства выход подчинённого (master input — slave output), а название MOSI обозначает выход главного и вход подчинённого устройства (master output — slave input). В качестве главного устройства в этом интерфейсе обычно используется микроконтроллер, реже сигнальный процессор.
Рассмотрим принципиальную схему цифрового устройства, которая может реализовать обмен данными по интерфейсу SPI. Пример такой схемы приведён на рисунке 11.5.
В этой схеме для передачи и приёма последовательных данных используется сдвиговый регистр D3. В начале передачи данных по сигналу записи в регистр D3 записывается передаваемая по линии MOSI команда (при необходимости с сопутствующими данными). В момент передачи команды ее отдельные биты последовательно появляются на выводе Q7 этого сдвигового регистра. Одновременно принимаемая по линии MISO информация записывается в первый триггер этого же регистра и постепенно замещает передаваемые данные. В момент окончания передачи в регистре будут храниться данные, принятые по линии MISO.
Так как синхроимпульсы SPI порта, в отличие от синхросигнала аналого-цифрового или цифро-аналогового преобразователей, используются только для синхронизации передачи данных, то требования к задающему генератору этого порта меньше. В результате для формирования синхронизирующего сигнала можно использовать встроенный кварцевый генератор (кварцевый резонатор, естественно, будет подключаться к внешним выводам микросхемы).
Кварцевый генератор в схеме, приведенной на рисунке 11.5, построен на логическом элементе "2И‑НЕ". Это позволяет останавливать и вновь запускать этот генератор. Для формирования сигнала выбора ведомого SS и для подсчёта необходимого количества импульсов синхронизации (в нашем случае восьми) служит двоичный счётчик D2.
Рассмотрим работу схемы формирования сигнала "выбор ведомого" подробнее. В исходном состоянии в двоичном счётчике записано число 10002. При этом на выводе SS и на выходе логического элемента D1 присутствует высокий потенциал.
При параллельной записи данных в регистр передачи D3 импульс записи одновременно подаётся на вход обнуления счётчика D2. В результате на выводе SS появляется низкий потенциал. Это означает, что SPI интерфейс начинает передачу данных. Одновременно снимается запрещающий потенциал с логического элемента D1 "2И‑НЕ". При этом на обоих входах этого элемента появляется единичный потенциал. В результате на выходе этого элемента появится нулевой потенциал, и возникнут условия для самовозбуждения генератора.
Временные диаграммы на входе и выходах счетчика D2 приведены на рисунок 11.6.
Рисунок 11.6 – Временные диаграммы схемы формирования сигнала
выбора подчиненного SS
Импульсы поступают на вход последовательной синхронизации сдвигового регистра D3 и вход счётчика D2. После поступления на вход схемы D3 восьмого импульса передача данных в последовательном виде завершается, а в счётчике D2 оказывается записанным число 8. В двоичном виде оно равно значению 10002, а значит, на выводе SS вновь появится высокий потенциал, означающий завершение передачи данных по синхронному последовательному интерфейсу SPI.
Так как этот же сигнал через инвертор подаётся на вход логического элемента D1, то на его выходе появится единичный потенциал, и условия генерации сорвутся. Генератор больше не будет вырабатывать импульсы, а значит, двоичный счётчик останется в состоянии 10002 до прихода следующего импульса записи в SPI порт.
Интегрирующая цепочка R3C3 используется для подавления короткого импульса в конце формирования сигнала SS, а инвертор D4 позволяет осуществлять запись в сдвиговый регистр D6 по заднему фронту сигнала тактовой синхронизации. В результате подчиненное устройство может успеть подготовить очередной бит передаваемых данных.
Мы рассмотрели схему SPI интерфейса со стороны главного устройства. Схема подчиненного устройства намного проще. В ней не нужно формировать сигналы синхронизации. В результате она может быть построена на обыкновенном сдвиговом регистре. Пример выполнения схемы подчиненного SPI-порта приведен на рисунке 11.7.
Рисунок 11.7 – Схема подчиненного SPI-порта
В этой схеме запись данных в универсальный регистр D1 производится по спадающему фронту сигнала SS. В результате на выходе Q7 появляется первый из передаваемых бит. Это значение по цепи MISO передается на вход данных master порта. При поступлении на вход регистра "C" тактовых импульсов SCLK, на выходе Q7 последовательно появляются все биты данных, присутствовавших на параллельных входах универсального регистра в момент записи.
Одновременно с этим процессом данные, передаваемые master портом по цепи MISO, записываются в триггеры регистра D1. После поступления восьми тактовых импульсов SCLK на выходах сдвигового регистра D1 вместо данных подчиненного устройства уже записаны данные, переданные master портом. Обмен данными завершается выдачей высокого потенциала по цепи SS. Тем самым формируется нарастающий фронт этого сигнала. По этому фронту данные с выходов последовательного регистра D1 переписываются в параллельный регистр D2.
В настоящее время SPI порт является распространенным средством обмена информации между процессором и микросхемами обработки данных. Обычно этот порт уже содержится в составе этих микросхем в виде готового модуля.
В качестве примера использования SPI порта на рисунке 11.8 приведена структурная схема соединения микроконтроллера и микросхемы раширителя портов NLSF595 фирмы ON semiconductor, к которой на приведенной схеме подключены три светодиода. Эта микросхема способна только принимать информацию по SPI порту и выдавать ее в параллельном виде. Собирать информацию и передавать ее на микропроцессор она не может.
Рисунок 11.8 – Структурная схема соединения микроконтроллера и расширителя портов NLSF595
В качестве еще одного примера использования рассмотренного выше SPI порта на рисунке 11.9 приведена структурная схема соединения сигнального процессора ADSP‑2153x и цифрового приемника AD9874 фирмы Analog devices.
Рисунок 11.9 – Структурная схема соединения сигнального процессора ADSP‑2153x и цифрового приемника AD9874
В этой схеме, взятой из руководства по применению цифрового приемника AD9874, использовано два порта — DSP порт для передачи потока данных и SPI порт для настройки режимов работы микросхемы AD9874.
Синхронный последовательный интерфейс использует меньшее количество проводников по сравнению с DSP портом, однако это количество достаточно велико. В некоторых случаях этот параметр является критическим. Тогда применяется I2С порт
11.3 I2С порт
Для обмена данными по I2С порту, который часто называется I2С шиной, используется всего два проводника (не считая корпуса).
В I2C шине приём и передача данных, а также передача адреса микросхемы и адреса регистра внутри микросхемы, к которому осуществляется обращение, производится по одному и тому же проводу. Для подключения к этому проводу используются микросхемы с открытым коллектором. Нагрузкой для всех микросхем, подключенных к линии SDA, служит внешний резистор.
Естественно, что скорость передачи данных по такому порту будет ниже, по сравнению с SPI портом. Тактовая синхронизация в I2C шине передаётся по линии SCL.
Начало работы с микросхемой обозначается особой комбинацией сигналов SDA и SCL, которая называется условием старта. Эта же комбинация одновременно осуществляет кадровую синхронизацию. Завершение работы с микросхемой обозначается ещё одной комбинацией сигналов SDA и SCL.
В качестве примера микросхем, использующих интерфейс I2C можно назвать микросхемы EEPROM серии 24сXX.
На этом можно завершить изучение синхронных последовательных портов. В качестве одного из наиболее распространённых цифровых устройств, использующего для настройки своего режима работы синхронный последовательный интерфейс SPI, рассмотрим синтезаторы частоты.