Основи SPI протокол
SPI (сериен периферен Bus) - сериен периферен протокол. Това пункция е разработен от Motorola. но сега се използва от много производители. Той е предназначен за комуникация между микроконтролер, както и всички видове периферни устройства: датчици D конвертор, чиповете памет часа. И все пак, най-честата употреба на SPI - тя записва програма в памет на микроконтролера. микроконтролер AVR С. чрез SPI флаш микроконтролер може да не vypaivaya на борда, този метод се нарича фърмуер ISP (В Системно програмиране). Въпреки че името на SPI и ISP е много в унисон, това не е едно и също нещо, в AVR SPI се използва като ниво физическо ISP. т.е. използване SPI линии за пренос на данни, но самата (софтуер слой) протокол е различен.
За да прехвърлите данни в SPI използва три линии:
Мишо (магистър Input Output Slave) - тази линия Master (магистър) получава данни от Slave (роб).
MOSI (магистър Output Slave Input) - тази линия Магистър изпраща данни към роб.
SCK (Serial Clock) - служи за предаване на сигнал часовник до устройството за роб.
Използва се и ред SS (Slave Изберете). което определя устройството, с което Учителят ще обменят данни.
Поради факта, че много производители използват SPI в своите устройства, констатациите на името може да са малко по-различни. Таблицата по-долу с алтернативни имена.
SPI е от два вида хардуер и софтуер. При използване на софтуера SPI. ние трябва да зададете ръчно сигнал към съответните краката Мишо, MOSI, SS с дърпането на SCK. За SPI за изпълнение хардуер ние предават данни на специалния регистър, а самата микроконтролера се справя по-горе манипулация, според предварителни настройки.
Физическа реализация на SPI. Той представлява две смени регистри, свързани заедно.
В зависимост от това, което логично ниво на SCK на сигнала. Това се случва, главен и подчинен синхронизация, както и за да е край на улавяне и смяна на данни, осигуряващи 4 режим SPI.
- CPOL = 0 - пакетен сигнал започва с ниско ниво;
- CPOL = 1 - пакетен сигнал започва с високо ниво;
- CPHA = 0 - Данните се вземат проби за нарастващ фронт на синхронизиращ сигнал;
- CPHA = 1 - Данните се вземат проби на задния ръб времето сигнал.
На осцилограми-долу показва как публикуване 0h17 изглежда в различни режими.
CPOL = CPHA = 0 0
CPOL = 1 CPHA = 0
CPOL = 0 CPHA = 1
CPOL = 1 CPHA = 1
SPI - синхронен интерфейс, това е, за да получите някои данни от роб. Магистър трябва да изпрати нещо. Изглежда, всичко е ясно, но какво ще стане ако магистър изпраща един байт, а робът трябва да го върне два? В този случай майстор трябва да му изпрати нещо 2 пъти, като 0x00.
Това е всичко, по-горе код проба, взета от работния проект.