Доброе время суток продолжаем серию статей про микроконтроллеры stm32f4, сегодня будем осваивать SPI протокол, а поможет нам в этом хорошая девайсина – гироскоп L3GD20. Что такое гироскоп – это датчик измеряющий изменение угла ориентации тела в пространстве (p.s. кого интересую построение беспилотных летательных аппаратов рекомендую почитать замечательную книгу по данной тематики автора Распопов В.Я – микросистемная авионика). Будем юзать данную девайсину на борде stm32f401C-disco (stm32f401VC — LQFP100), данная микросхема также присутствует на отладочной плате stm32f4-discovery и stm32f429i-disco. Как обычно будем использовать HAL — Hardware Abstraction Layer, то есть слой аппаратной абстракции. Как работает SPI?
SPI (Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, хотя режим передачи можно выбирать, так например полу дупликс, либо односторонняя передача в режимах мастер и слейв. SPI является синхронным интерфейсом, за счет линии синхронизации SCLK. Микроконтроллер с помощью сигнала Select chip – CS выбирает ведомое устройство и начинается с ним обмениваться информацией. Обмен информацией осуществляется по каналам MOSI(Master Out Slave In) и MISO(Master In Slave Out).

Передача осуществляется пакетами либо 8 бит либо 16 бит. В нашем случае пакет состоит из 16 бит. Причем первых 2 бита отвечаю за вид передачи данных (запись либо чтение).

Бит 0 – RW бит, если 0 –тогда пишем в устройство, 1 читаем из устройства.
Бит 1 – MS, 0 – адрес остается неизменным, 1 – автоматическое инкрементирование адреса
Биты 2 – 7 – адреса полей
Биты 8 – 15 – биты данных

Регистры девайсины
И конечно код нашей программы:
main.c

stm32f4xx_hal_msp.c


Проект целиком.
В следующей части про интерфейс SPI рассмотрим хардварные особенности его применения. На сегодня все, всем пока!), увидимся на просторах mcu.by.