Інтерфейс spi, arm, programming

Дещо про інтерфейс 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 показана на малюнку.

Інтерфейс spi, arm, programming

Головна мікросхема, 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)