SPI и Ардуино интерфейс - SPI какво е - Електроника
SPI - сериен периферен интерфейс или "сериен периферен интерфейс" - синхронен протокол за пренос на данни за взаимодействие майстор устройство (майстор) към периферното устройство (подчинен). Магистър е често микроконтролер. Връзката между устройствата се извършва в четири тел, SPI затова понякога се нарича "четири-тел интерфейс." Тези гуми:
MOSI (магистър Out Slave В) - Data далекопровод от капитана на робите;
Мишо (магистър В Slave Out) - един далекопровод от роб на капитана;
SCLK (сериен часовник) - тактова синхронизация, генерирани от майстор устройство;
SS (Slave Изберете) - роб изберете линия; когато линията "0", устройството роб "разбира", които сега се обръщат към него.
Има четири предавателни режими (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), което се дължи на комбинация от часовника на полярността (работа при високи или ниски), Clock полярност, CPOL. и фаза часовник (синхронизация на възходящ или низходящ ръба на импулс), Clock фаза, CPHA.
Фигурата показва два варианта на свързващите устройства SPI протокол: независима и каскаден. С независим свързване с SPI автобус майстор устройството разглежда всеки роб индивидуално. В каскада - подчинени устройства се активират редуващо се, каскадно.
автобус интерфейс SPI Arduino са на определени портове. Всеки се качат своите заключения. За удобство, констатациите са дублирани, а също и направени на отделен конектор ICSP (В Circuit Serial Програмиране, устройство, включени във веригата за програмиране, чрез сериен протокол). Моля, имайте предвид, че не съществува пинов конектор ICSP Slave Изберете - SS, защото Това означаваше, че Ардуино да се използва като майстор устройство в мрежата. Но ако е необходимо, можете да зададете всеки цифров изход Arduino като SS.
Данните показват стандартни съответните изводи SPI автобусите за Arduino UNO и Nano.
Тя е написана за Arduino специална библиотека. който реализира протокола SPI. Свържете го по този начин: в началото на програмата добавите #include SPI.h
За да започнете работа по протокола SPI, трябва да зададете настройките и след това да се инициализира и протокола с SPI.beginTransaction () процедура. Можете да направите това с една инструкция: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).
Това означава, че ние се инициализира SPI протокола при честота от 14 MHz, пренос на данни отива, като се започне с MSB (най-важния бит), "0" в режим.
След инициализация, робът изберете превода пинов SS, съответстваща на LOW състояние.
Тогава peredaom роб данни SPI.transfer () команда.
След предаване на SS се върне в състояние висока.
Работата е завършена с командата протокол SPI.endTransaction (). Желателно е да се сведе до минимум времето за изпълнение на предаване между инструкции SPI.beginTransaction () и SPI.endTransaction (), че не е имало припокриване, ако другото устройство се опитва да инициализира прехвърлянето на данни с помощта на други настройки.
Помислете за практическото прилагане на интерфейса SPI. Ние светне светодиода чрез контролиране на 8-битов регистър за смяна на SPI автобус. Arduino свързан с промяна регистрирате 74HC595. За всеки от 8 изходите на LED свързване (чрез ограничаващ резистор). Схемата е показано на фигурата.
Нека да напише скица.
Първо свържете SPI библиотеката и се инициализира SPI интерфейс. Ние определяме щифта 8 като изберете ПИН роб. Чисто регистър за смяна, като изпраща към нея стойността "0". Инициализиране на серийния порт.
За да запалите специфичен светодиод с помощта на регистър на смени, е необходимо да се представят на входа 8-битов номер. Например, за да се превърне в първия светодиод - Ние служим двоично число 00000001 на второто - 00000010 до трета - 00000100, и т.н. Тези двоични числа се превръща в десетично число система за образуване на последователност 1, 2, 4, 8, 16, 32, 64, 128 и са сили на две от 0 до 7.
Съответно, в цикъл цикъл () на броя на светодиодите направи централен от 0 до 7. Pow функцията (база мощност) 2 изгражда брояч мощност цикъл. Микроконтролери не са много точни работа с числа, като "двойно", така че да я превърне в резултата до цяло число, използвайки закръгляване функция кръг (). И премине полученото число в регистъра за смяна. За по-голяма яснота, монитор сериен порт изходни стойности, които са получени чрез тази операция: edinichka работи по степен - светодиоди светлинна вълна.
Светват един по един, и ние сме свидетели на провеждане на "вълна" на светлини. LED се контролира от регистъра за смяна, на които сме свързани чрез SPI. В резултат на това се контролира 8-ми светодиоди 3 само участва Arduino изход.
Те са учили най-простият пример за работа с автобус Arduino SPI. Един по-близък поглед към свързването на регистрите на смяна в отделна статия.