Программирование ARM Интерфейс SPI Thu, April 27 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Интерфейс SPI Печать
Добавил(а) microsin   

Кое-что про интерфейс SPI

SPI (Serial Peripheral Interface, последовательный интерфейс для периферийного оборудования) является одним из самых популярных коммуникационных интерфейсов, уже имеющихся в составе многих микроконтроллеров и интегральных схем.

Интерфейс SPI был разработан и представлен компанией Motorola, Inc. (Freescale Semiconductor). Из-за простоты и удобства интерфейс SPI встроен во многие микросхемы периферии, как и шина IIC-bus компании Philips. В интерфейсе SPI имеется 3 или 4 сигнала, что больше, чем в интерфейсе IIC (где только 2 сигнала), однако скорость передачи у SPI намного больше, до 20 Mbps (мегабит) и выше, в зависимости от возможности периферийного устройства (в 5 - 50 раз быстрее, чем скорость интерфейса IIC). Кроме того, SPI позволяет одновременно передавать информацию в двух направлениях (и в микросхему периферии, и из неё). По этой причине SPI используется часто для высокоскоростных ADC (АЦП), DAC (ЦАП) или для микросхем связи и коммуникации, которые требуют как можно более высокую скорость передачи данных.

 

SPI Structure

Базовая структура SPI показана на рисунке.

FatFS-spi1

Главная микросхема, master (мастер, обычно это микроконтроллер) подключена через три сигнальные линии SCLK (Serial Clock, такты данных), MISO (Master-In Slave-Out, вход мастер-устройства, выход подчиненного устройства) и MOSI (Master-Out Slave-In, выход мастер-устройства, вход подчиненного устройства) к устройству slave (подчиненное, ведомое устройство). И в master, и в slave имеется 8-битный регистр сдвига, которые обмениваются данными по сигналу синхронизации SCLK, который генерируется устройством master. Дополнительно может использоваться отдельный сигнал SS (Slave Select, сигнал активизации для подчиненного устройства), который используется для синхронизации начала пакета или границы байта, и одновременно этот сигнал выборки может использоваться для подключения к одному master нескольких slave-устройств (multi-slave configuration, при этом для каждого slave-устройства делается отдельный сигнал выборки). Большинство микросхем slave имеют разные обозначения для имен сигналов SPI, наподобие DI, DO и CS. Для однонаправленных устройств, как например DAC и одноканальный ADC, одна из линий данных (MOSI или MISO) может отсутствовать. Данные передаются бит за битом, старший бит идет первым MSB first (Most Significant Bit первый). Когда несколько микросхем slave подключаются по SPI к одному мастеру, то сигналы SCLK, MOSI, MISO подключаются параллельно, а сигнал выборки SS идет на каждую микросхему slave отдельно. Выход данных определенной микросхемы slave выбирается по соответствующему сигналу CS, а все невыбранные микросхемы slave отключают свой выход от сигнала MISO.

Диаграммы времени интерфейса SPI (SPI Transfer Timing)

Режим SPIВременная диаграмма
Mode 0
Активен положительный импульс.
Захват (Latch), затем сдвиг (Shift).
FatTS-spi20i
Mode 1
Активен положительный импульс.
Сдвиг (Shift), затем захват (Latch).
FatFS-spi21i
Mode 2
Активен отрицательный импульс.
Захват (Latch), затем сдвиг (Shift).
FatFS-spi22i
Mode 3
Активен отрицательный импульс.
Сдвиг (Shift), затем захват (Latch).
FatFS-spi23i

В интерфейсе SPI сдвиг данных (data shift) и захват данных (data latch) осуществляются противоположными перепадами сигнала тактов SCLK. Достоинство такого разделения в том, что по времени сдвиг и захват разделены друг от друга, что улучшает функционирование этих критичных по времени выполнения процессов. Поэтому требования по быстродействию внутренних узлов микросхемы снижаются. Имеется однако некоторая сложность - master должен правильно сконфигурировать свой SPI, чтобы выбрать один из четырех режимов, который реализован в микросхеме slave.

[Ссылки]

1. About SPI - оригинал статьи на английском языке.
2. ADSP-BF538: интерфейс SPI.
3. ATmega328: SPI.
4. ATmega328: USART в режиме SPI.
5. STM32F407, интерфейс SPI.
6AT91SAM7 Serial Peripheral Interface (SPI).

 

Добавить комментарий


Защитный код
Обновить

Top of Page