SPI - отправка и чтение данных по шине SPI.
Урок по использованию SPI
SPISettings #
SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode)
Настройки шины:
clock- частота в ГцbitOrder- порядок битов:MSBFIRST|LSBFIRST. Чаще всего используетсяMSBFIRSTdataMode- режим шины:SPI_MODE0|SPI_MODE1|SPI_MODE2|SPI_MODE3. Чаще всего используетсяSPI_MODE0
SPI #
begin #
void begin()
Запустить шину в режиме мастера. Поведение пинов (на классических Arduino):
- Переводит пины SCK и MOSI в режим
OUTPUT. При запущенной шине эти пины не подчиняются функцииdigitalWrite() - Переводит пин SS в режим
OUTPUTи выводит сигналHIGH. При запущенной шине можно менять сигнал на пине при помощиdigitalWrite()(использовать как выход в своих целях), но нельзя переводить SS в режим INPUT: в режиме входа при низком сигнале SPI переключится в режим Slave, по сути - сломается
end #
void end()
Отключить шину. Не меняет режим пинов шины.
beginTransaction #
void beginTransaction(SPISettings settings)
Начать передачу данных с указанными настройками. Примечание:
- Если все три параметра - константы, то эффективнее вызывать начало передачи сразу с конструктором настроек:
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); - Если хотя бы один - не константа, то эффективнее создать объект
SPISettingsотдельно:
uint32_t freq; // = ...
SPISettings spiset(freq, MSBFIRST, SPI_MODE0);
SPI.beginTransaction(spiset);
Выбор ведомого устройства библиотека обычно не выполняет: пином CS нужно управлять самостоятельно через digitalWrite() до и после обмена.
endTransaction #
void endTransaction(void)
Завершить передачу данных
transfer #
uint8_t transfer(uint8_t data)
Отправить данные. Вернёт ответ устройства
transfer16 #
uint16_t transfer16(uint16_t data)
Отправить данные, 2 байта. Вернёт ответ устройства
transfer #
void transfer(void *buf, size_t count)
Одновременно отправить данные из буфера и записать в тот же буфер байты, принятые по MISO
Запишет в массив принятые байты. Если ведомое устройство не управляет MISO, результат зависит от электрического уровня на линии
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту (alex@alexgyver.ru)
- Поддержать автора за работу над уроками