SPI (англ. Serial Peripheral Interface) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.
SPI является синхронным интерфейсом, в котором любая передача синхронизирована с общим тактовым сигналом, генерируемым ведущим устройством (процессором). Принимающая (ведомая) периферия синхронизирует получение битовой последовательности с тактовым сигналом. К одному последовательному периферийному интерфейсу ведущего устройства-микросхемы может присоединяться несколько микросхем. Ведущее устройство выбирает ведомое для передачи, активируя сигнал «выбор кристалла» на ведомой микросхеме.
В SPI используются четыре цифровых сигнала:
MOSI — выход ведущего, вход ведомого (англ. Master Out Slave In). Служит для передачи данных от ведущего устройства ведомому.
MISO — вход ведущего, выход ведомого (англ. Master In Slave Out). Служит для передачи данных от ведомого устройства ведущему.
|
|
SCLK — последовательный тактовый сигнал (англ. Serial Clock). Служит для передачи тактового сигнала для ведомых устройств.
CS или SS — выбор микросхемы, выбор ведомого (англ. Chip Select, Slave Select).
Преимущества:
Полнодуплексная передача данных по умолчанию.
Более высокая пропускная способность по сравнению с I²C.
Возможность произвольного выбора длины пакета, длина пакета не ограничена восемью битами.
Простота аппаратной реализации.
Форматы шестнадцатеричных файлов.
Intel HEX — формат файла, предназначенного для представления произвольных двоичных данных в текстовом виде. Большинство инструментов подготовки образов прошивки (компиляторы, редакторы, просмотрщики и т. п.) умеют работать с этим форматом.
Файл обычно имеет расширение.hex. Названия I8HEX, I16HEX и I32HEX иногда используются для определения набора записей, используемых в файле.
Достоинством формата (в отличие от простого двоичного) является возможность указывать только определенные области адресов (с точностью до байта). Многие микроконтроллерные архитектуры имеют несколько областей программирования с обширными пустотами в адресации между ними.
Файл состоит из текстовых ASCII строк. Каждая строка представляет собой одну запись. Каждая запись начинается с двоеточия (:), после которого идет набор шестнадцатеричных цифр кратных байту:
Начало записи (:).
Количество байт данных, содержащихся в этой записи. Занимает один байт (две шестнадцатеричных цифры), что соответствует 0…255 в десятичной системе.
Начальный адрес блока записываемых данных — 2 байта. Этот адрес определяет абсолютное местоположение данных этой записи в двоичном файле.
|
|
Один байт, обозначающий тип записи. Определены следующие типы записей:
0 — запись содержит данные двоичного файла.
1 — запись обозначает конец файла, данных не содержит. Имеет характерный вид «:00000001FF».
2 — запись адреса сегмента.
4 — запись расширенного адреса.
Последний байт в записи является контрольной суммой. Рассчитывается так чтобы сумма всех байтов в записи была равна 0.
Строка заканчивается стандартной парой CR/LF (0Dh 0Ah).