SPI: Шина SPI

SPIClass lilka::SPI1(SPI1_NUM)

Системна шина SPI. Використовується внутрішньо для роботи з дисплеєм та SD-картою. Ми радимо не чіпати цей об’єкт, якщо ви не знаєте, що робите.

SPIClass lilka::SPI2(SPI2_NUM)

Користувацька шина SPI.

Використовується для роботи з будь-якими іншими пристроями. Для її використання потрібно викликати SPI2.begin(). Приклад використання SPI2 для роботи з двома SPI-пристроями:

    #include "lilka.h"
   
    // Визначення пінів для SPI2. Можна використовувати будь-які піни,
    // які виведені на роз'єм розширення:
// #define SPI2_SCK     12
// #define SPI2_MISO    13
// #define SPI2_MOSI    14
// #define SPI2_DEV1_CS 21 // Chip Select для пристрою 1
// #define SPI2_DEV2_CS 47 // Chip Select для пристрою 2
   
    void setup() {
        lilka::begin();
        lilka::SPI2.begin(SPI2_SCK, SPI2_MISO, SPI2_MOSI);
        pinMode(SPI2_DEV1_CS, OUTPUT);
        pinMode(SPI2_DEV2_CS, OUTPUT);
        digitalWrite(SPI2_DEV1_CS, HIGH); // Вимкнути пристрій 1
        digitalWrite(SPI2_DEV2_CS, HIGH); // Вимкнути пристрій 2
    }
   
    void loop() {
        // Надсилання даних пристроєві, під'єднаному до SPI2 (лінія активації - SPI2_DEV1_CS)
        lilka::SPI2.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
        digitalWrite(SPI2_DEV1_CS, LOW); // Увімкнути пристрій 1
        lilka::SPI2.transfer(0x55);
        digitalWrite(SPI2_DEV1_CS, HIGH); // Вимкнути пристрій 1
        lilka::SPI2.endTransaction();
   
        delay(500);
   
        // Надсилання даних пристроєві, під'єднаному до SPI2 (лінія активації - SPI2_DEV2_CS)
        lilka::SPI2.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
        digitalWrite(SPI2_DEV2_CS, LOW); // Увімкнути пристрій 2
        lilka::SPI2.transfer(0xAA);
        digitalWrite(SPI2_DEV2_CS, HIGH); // Вимкнути пристрій 2
        lilka::SPI2.endTransaction();
   
        delay(1000);
    }