Protocol Bazele spi

SPI (Serial Peripheral Bus) - protocol de periferice Serial. Această puncție a fost dezvoltat de Motorola. dar acum este folosit de mulți producători. Acesta este destinat pentru comunicarea între un microcontroler, precum și toate tipurile de periferice: senzori Convertor D, cipuri de memorie ore. Cu toate acestea, utilizarea mai frecventă a SPI - înregistra un program în memoria microcontrolerului. Microcontrolerul AVR c prin intermediul SPI Flash microcontroler nu poate vypaivaya de bord, această metodă se numește ISP-ul firmware-ului (in programare de sistem). Deși numele SPI și ISP-ul este foarte în ton, nu este același lucru, în AVR SPI este folosit ca un nivel de ISP fizic. adică folosind linii de SPI pentru transmisia de date, dar protocolul în sine (stratul software) este diferit.

Pentru a transfera date în SPI folosește trei linii:

MISO (Master Input Slave Output) - această linie master (master) primește date de la Slave (sclav).

Mosi (Master Slave intrare ieșire) - această linie master trimite date către Slave.

SCK (Ceas serial) - servește pentru a transmite un semnal de ceas de la dispozitivul slave.

line SS (Slave) este de asemenea utilizat. care specifică dispozitivul cu care Maestrul va face schimb de date.

Protocol Bazele spi


Datorită faptului că mulți producători folosesc SPI în dispozitivele lor, constatările ale numelui pot fi ușor diferite. Mai jos este un tabel cu nume alternative.

Protocol Bazele spi


SPI este de două tipuri de hardware și software. Când se utilizează software-ul SPI. trebuie să setați manual semnalul de la picioare respective MISO, MOSI, SS cu atracția SCK. Pentru un SPI implementare hardware vom trece de date la registrul special, iar microcontrolerul în sine este de a face manipularea de mai sus, conform setărilor preliminare.

Implementarea fizică a SPI. Reprezintă două registre de deplasare conectate împreună.

Protocol Bazele spi


În funcție de nivelul logic al SCK semnalului. Aceasta apare master și slave de sincronizare, iar pe marginea unei captare și schimbare de date care furnizează 4 modul SPI.

Protocol Bazele spi


  • CPOL = 0 - spargere semnal începe cu un nivel scăzut;
  • CPOL = 1 - spargere semnal începe cu un nivel ridicat;
  • CPhA = 0 - Datele sunt eșantionate pe frontul crescător al semnalului de sincronizare;
  • CPhA = 1 - Datele sunt prelevate pe semnalul de sincronizare muchie de fugă.

Oscilogramele de mai jos arată modul în care postați 0h17 arată în diferite moduri.
CPOL = CPhA = 0 0

Protocol Bazele spi


CPOL = 1 CPhA = 0

Protocol Bazele spi


CPOL = 0 CPhA = 1

Protocol Bazele spi


CPOL = 1 CPhA = 1

Protocol Bazele spi

SPI - interfață sincronă, care este, pentru a obține unele date de la Slave. Maestrul trebuie să trimită ceva. Se pare că totul este clar, dar ce se întâmplă dacă Maestrul trimite un octet, iar Slave trebuie să-l întoarcă doi? În acest caz, Maestrul ar trebui să-l trimită ceva de 2 ori, cum ar fi 0x00.

Asta e tot, mostra de cod de mai sus preluată din proiectul de lucru.