36
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
При сравнении SPI с UART (рис. 3.2) можно отметить, что в
первом момент считывания каждого бита данных происходит в се-
редине тактового интервала и не может быть изменен.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Рассмотрим процесс записи данных по SPI (например, запись на флеш-
карту). Синхронизация осуществляется синхроимпульсами, формируемыми ма-
стером при передаче каждого бита (рис. 3.8). Помимо настройки частоты такто-
вых импульсов, основное устройство также задаёт полярность тактового сигна-
ла и его фазу по отношению к данным. Частота передачи выставляется в ма-
стер-устройстве, а ведущее устройство автоматически подстраивается под тре-
буемую скорость передачи. Высокий уровень (единица)
напряжения обычно
равен напряжению питания микропроцессора. Низкий уровень (ноль) соответ-
ствует напряжению на земляном выводе.
Рис. 3.8 – Передача данных по стандарту SPI
Перед началом обмена ведущее устройство отмечает одно ведомое
устройство, с которым будет производиться обмен. Для этого на линии выбора
устройства SS устанавливается низкий активный уровень сигнала. Затем веду-
щее устройство последовательно выставляет на линию MOSI 8 либо 16 бит ин-
формации, сопровождая каждый бит сигналом синхронизации SCK. Длина по-
сылки неограниченна. Завершение обмена также инициируется ведущим по-
средством установки в неактивное состояние сигнала выбора ведомого SS.
Процесс чтения происходит аналогично ранее рассмотренному принципу
за исключением того, что мастер выставляет синхроимпульсы, а слейв-
устройство выставляет требуемые биты на линии MISO. Блок SPI в контролле-
ре
устроен таким образом, что синхроимпульсы формируются при отправке
37
данных. При чтении из внешнего устройства требуется писать в выходной бу-
фер требуемое количество любых байт (например, нули либо единицы) чтобы
считать из входного буфера принятые данные.
Завершение обмена также инициируется ведущим посредством установки
в неактивное состояние сигнала выбора ведомого SS.
На время отсутствия связи буферы выводов встроенного контроллера SPI
переводятся в высокоимпедансное состояние. Последнее позволяет избежать
конфликтов на шине SPI. В противном случае несколько выводов MISO ведо-
мых устройств одновременно были бы активными, что не позволило бы веду-
щему устройству произвести прием достоверной информации.
Рис. 3.9 – Чтение данных по стандарту SPI
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Рассчитаем теоретическую максимальную
скорость передачи
данных для простейшего 8-разрядного микроконтроллера с часто-
той внешнего задающего генератора, равной 24 МГц. За два такта
отправляется 1 бит
полезной информации, т. к. имеется делитель
частоты 1/2 процессора. За 16 тактов отправится 1 байт данных. Со-
ответственно, при частоте 24 МГц будет передано 12 Мбит данных
или 12 Мбит / 8 бит 1,5
МБайта/с. Следовательно, для увеличения
скорости потребуется увеличить частоту синхроимпульсов (SCLK).
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Достоинства:
1. Полнодуплексная передача данных по умолчанию.
38
2. Более высокая пропускная способность по сравнению с I2C или
SMBus.
3. Возможность произвольного выбора длины пакета, длина пакета не
ограничена восемью битами.
4. Простота аппаратной реализации:
более низкие требования к энергопотреблению по сравнению с I2C
и SMBus;
возможно использование в системах с
низкостабильной тактовой
частотой;
ведомым устройствам не нужен уникальный адрес, в отличие от
таких интерфейсов, как I²C, GPIB или SCSI.
5. Используется только четыре вывода, что гораздо меньше, чем для па-
раллельных интерфейсов.
6. Однонаправленный характер сигналов позволяет при необходимости
легко организовать гальваническую развязку между ведущим и ведо-
мыми устройствами.
7. Максимальная тактовая частота ограничена
только быстродействием
устройств, участвующих в обмене данными.
Недостатки:
1. Необходимо больше выводов, чем для интерфейса I2C.
2. Ведомое устройство не может управлять потоком данных.
3. Нет подтверждения приема данных со стороны ведомого устройства
(ведущее устройство может передавать данные «в никуда»).
4. Нет определенного стандартом протокола обнаружения ошибок.
5. Отсутствие официального стандарта, что делает невозможным серти-
фикацию устройств.
6. По дальности передачи данных интерфейс
SPI уступает таким стан-
дартам, как UART и CAN.
7. Наличие множества вариантов реализации интерфейса.
8. Отсутствие поддержки горячего подключения устройств.
Do'stlaringiz bilan baham: