Для обмена данными сегодня разработано и используется довольно много различных интерфейсов. Одним их них является SPI.
SPI - это Serial Peripheral Interface - Последовательный Периферийный Интерфейс. Иногда его также называют “шина SPI” и “четырехпроводным” (four-wire). Наиболее часто используется микроконтроллерами для связи с периферийными устройствами.
Это синхронный интерфейс, который предназначен для ввода-вывода данных в интерфейсах "точка-точка" с одним ведущим (SPI-master) и одним ведомым (SPI-slave) устройством:
Схема управления в главном устройстве (SPI-master) формирует тактовые импульсы SCK, по которым одновременно производится передача сигналов на выходе MOSI и прием сигналов на входе MISO. Эти же тактовые импульсы SCK, поступая в устройство SPI-slave, управляют приемом сигналов на его входе MOSI и формированием сигналов на его выходе MISO. Раздельные сигнальные цепи MOSI и MISO позволяют легко реализовать обмен данными в режиме полного дуплекса (то есть устройства могут одновременно работать как на приём, так и на передачу).
Форматы данных, параметры сигналов, временные характеристики и т.п. в интерфейсе не регламентируются. Например, скорость обмена данными определяется только частотой тактовых импульсов SCK, формируемых устройством SPI-master.
Наибольшее допустимое расстояние между устройствами зависит от уровня искажения сигналов в линиях связи. Предполагается, что надежный обмен данными возможен при расстояниях до нескольких метров.
Интерфейс SPI, по-сути, не является полноценным интерфейсом даже для физического уровня. В действительности SPI реализует лишь стандартную процедуру ввода-вывода данных в регистрах сдвига. При этом никаких алгоритмов контроля работы и проверки передаваемых данных не предусмотрено. Все необходимые проверки должен выполнять SPI-master (точнее, программист, который пишет программу для мастера). Это, с одной стороны, требует применения дополнительных средств контроля, а с другой стороны, максимально упрощает средства реализации самого интерфейса.
SPI-slave - это стандартный регистр сдвига с требуемым количеством разрядов данных. Например, микроконтроллеры семейства AVR поддерживают ввод-вывод данных в режиме и SPI-master, и SPI-slave. Стандартный цикл обмена предполагает одновременную передачу в обоих направлениях по одному байту данных. При передаче многобайтовых сообщений SPI-slave должен содержать регистр сдвига соответствующей разрядности, а SPI-master должен производить управление обменом требуемой последовательности байтов данных, обрабатывая каждый байт после очередного стандартного цикла работы интерфейса и обеспечивая запуск следующего стандартного цикла обмена.
Интерфейс SPI применяется не только для обмена данными между микроконтроллерами, но и для сопряжения микроконтроллеров с внешними АЦП (ADC) и ЦАП (DAC), микросхемами памяти - SRAM, FRAM, SEERAM и многими другими устройствами. Благодаря последовательному формату данных и простой логической организации интерфейса SPI эти микросхемы производятся в компактных 8-16 выводных корпусах.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить…