Rozhraní SPI A Arduino

Obsah:

Rozhraní SPI A Arduino
Rozhraní SPI A Arduino

Video: Rozhraní SPI A Arduino

Video: Rozhraní SPI A Arduino
Video: Видеоуроки по Arduino. Интерфейсы SPI (8-я серия, ч1) 2024, Smět
Anonim

Studujeme rozhraní SPI a připojujeme posuvný registr k Arduinu, ke kterému přistupujeme pomocí tohoto protokolu k ovládání LED.

SPI rozhraní
SPI rozhraní

Nezbytné

  • - Arduino;
  • - posuvný registr 74HC595;
  • - 8 LED;
  • - 8 odporů 220 Ohm.

Instrukce

Krok 1

SPI - Serial Peripheral Interface nebo „Serial Peripheral Interface“je protokol synchronního přenosu dat pro propojení hlavního zařízení s periferními zařízeními (slave). Velitel je často mikrokontrolér. Komunikace mezi zařízeními probíhá přes čtyři vodiče, a proto se SPI někdy označuje jako „čtyřvodičové rozhraní“. Tyto pneumatiky jsou:

MOSI (Master Out Slave In) - linka pro přenos dat z masteru do slave zařízení;

MISO (Master In Slave Out) - přenosové vedení od slave k masteru;

SCLK (Serial Clock) - synchronizační hodinové impulsy generované masterem;

SS (Slave Select) - řádek pro výběr podřízeného zařízení; když je na řádku „0“, podřízený „chápe“, že je k němu přistupováno.

Existují čtyři režimy přenosu dat (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), a to díky kombinaci polarity hodinových pulsů (pracujeme na úrovni HIGH nebo LOW), polarity hodin, CPOL a fáze hodinových pulzů (synchronizace na vzestupné nebo sestupné hraně hodinového pulzu), Clock Phase, CPHA.

Obrázek ukazuje dvě možnosti připojení zařízení pomocí protokolu SPI: nezávislé a kaskádové. Při nezávislém připojení na sběrnici SPI komunikuje master s každým slave samostatně. S kaskádou - slave zařízení jsou spouštěna střídavě, v kaskádě.

Typy připojení SPI
Typy připojení SPI

Krok 2

V Arduinu jsou sběrnice SPI na konkrétních portech. Každá deska má své vlastní přiřazení pinů. Pro usnadnění jsou piny duplikovány a umístěny na samostatný konektor ICSP (In Circuit Serial Programming). Vezměte prosím na vědomí, že na konektoru ICSP není žádný slave select pin - SS předpokládá se, že Arduino bude použito jako master v síti. Ale pokud je to nutné, můžete přiřadit libovolný digitální pin Arduina jako SS.

Obrázek ukazuje standardní přiřazení pinů k sběrnicím SPI pro Arduino UNO a Nano.

Implementace SPI v Arduinu
Implementace SPI v Arduinu

Krok 3

Pro Arduino byla napsána speciální knihovna, která implementuje protokol SPI. Je připojen takto: na začátek programu přidejte #include SPI.h

Chcete-li začít pracovat s protokolem SPI, musíte nastavit nastavení a poté inicializovat protokol pomocí procedury SPI.beginTransaction (). Můžete to udělat pomocí jedné instrukce: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).

To znamená, že inicializujeme protokol SPI na frekvenci 14 MHz, přenos dat probíhá, počínaje od MSB (nejvýznamnější bit), v režimu „0“.

Po inicializaci vybereme podřízené zařízení uvedením odpovídajícího kolíku SS do stavu LOW.

Poté přeneseme data do podřízeného zařízení pomocí příkazu SPI.transfer ().

Po přenosu vrátíme SS do stavu VYSOKÉ.

Práce s protokolem končí příkazem SPI.endTransaction (). Je žádoucí minimalizovat čas provedení přenosu mezi instrukcemi SPI.beginTransaction () a SPI.endTransaction (), aby nedocházelo k překrývání, pokud se jiné zařízení pokusí inicializovat přenos dat pomocí jiného nastavení.

Přenos SPI
Přenos SPI

Krok 4

Uvažujme o praktické aplikaci rozhraní SPI. LED diody rozsvítíme ovládáním 8bitového posuvného registru přes sběrnici SPI. Připojte posuvný registr 74HC595 k Arduinu. Ke každému z 8 výstupů se připojujeme pomocí LED (přes omezující rezistor). Schéma je znázorněno na obrázku.

Připojení posuvného registru 74HC595 k Arduinu
Připojení posuvného registru 74HC595 k Arduinu

Krok 5

Napíšeme takový náčrt.

Nejprve připojíme knihovnu SPI a inicializujeme rozhraní SPI. Pojďme definovat pin 8 jako podřízený výběrový pin. Vymažeme posuvný registr odesláním hodnoty „0“. Inicializujeme sériový port.

Chcete-li rozsvítit určitou LED pomocí posuvného registru, musíte na její vstup použít 8bitové číslo. Například, aby se rozsvítila první LED, napájíme binární číslo 00000001, pro druhé - 00000010, pro třetí - 00000100 atd. Tato binární čísla v desítkovém zápisu tvoří následující posloupnost: 1, 2, 4, 8, 16, 32, 64, 128 a jsou mocninami dvou od 0 do 7.

Podle toho ve smyčce () podle počtu LED přepočítáme z 0 na 7. Funkce pow (základ, stupeň) zvýší 2 na sílu počitadla cyklů. Mikrokontroléry nepracují příliš přesně s čísly typu „double“, takže k převodu výsledku na celé číslo použijeme funkci round (). Výsledné číslo přeneseme do posuvného registru. Pro přehlednost monitor sériového portu zobrazuje hodnoty, které jsou získány během této operace: jedna prochází číslicemi - LED se rozsvítí ve vlně.

Náčrt pro ovládání posuvného registru přes sběrnici SPI
Náčrt pro ovládání posuvného registru přes sběrnici SPI

Krok 6

LED se postupně rozsvěcují a my pozorujeme putující „vlnu“světel. LED diody jsou ovládány posuvným registrem, ke kterému jsme se připojili přes rozhraní SPI. Výsledkem je, že pouze 3 piny Arduino se používají k řízení 8 LED.

Studovali jsme nejjednodušší příklad toho, jak Arduino pracuje se sběrnicí SPI. Spojení posuvných registrů se budeme podrobněji zabývat v samostatném článku.

Doporučuje: