SPI interface oferă o metodă alternativă de comunicare cu µINS, µAHRS, și µIMU. Protocolul SPI folosește o mare parte din aceeași structură și format ca protocolul binar de comunicare serială, care este prezentat în secțiunea Protocol binar din manualul utilizatorilor.
activați SPI¶
pentru a activa SPI, țineți pin-ul G9 (nSPI_EN) scăzut la pornire.notă: când semnalul GPS extern PPS timepulse este activat pe G9, modulul va ignora semnalul nSPI_EN și modul SPI va fi dezactivat indiferent de starea pin-ului G9.,
hardware¶
interfață inerțială sens SPI utilizează 5 linii de interfață cu alte dispozitive., id=”c075f8374e”>
Transfer de Date¶
Pentru a asigura corecta comportamentul receptorului în SPI Slave, dispozitivul master trimite cadru trebuie să asigure un minim de întârziere de o tbit (tbit fiind nominale timpul necesar pentru a transmite un bit) între fiecare caracter de transmisie., Dispozitivele cu sens inerțial nu necesită o margine care se încadrează pentru a iniția o recepție de caractere, ci doar un nivel scăzut. Cu toate acestea, acest nivel scăzut trebuie să fie prezent pe cel puțin un tbit înainte de primul ciclu de ceas serial corespunzător bitului MSB. (1)
când citiți uINS și nu există date gata, va trimite zerouri pentru date.
păstrarea CS scăzut nu ar trebui să cauzeze probleme. Cu toate acestea, în cazul în care cronometrarea dintre procesoarele master și slave iese din sincronizare, nu este nimic care să le readucă în sincronizare., Săritura la sol sau zgomotul în timpul unei tranziții ar putea provoca uins vede două margini de ceas atunci când ar fi trebuit să existe doar unul (din cauza unui ESD sau a unui eveniment tranzitoriu rapid). Ridicarea și coborârea liniei CS resetează registrul de schimbare va resincroniza ceasurile.
opțiunea PIN gata pentru date¶
există o opțiune pin gata pentru date. Acest semnal va fi ridicat atunci când datele devin gata. În funcție de momentul în care se întâmplă acest lucru, pot exista 1-4 octeți de zerouri care vor ieși înainte de începerea pachetului. De asemenea, această linie va merge inactiv un octet sau două înainte de sfârșitul pachetului este trimis., Nu există un caracter „nu într-un pachet de date” pentru a trimite. Aceasta se face strict prin date gata pin și parsarea.
Dacă linia de selectare a cipului este coborâtă în timpul unui pachet de date, octetul transmis (sau care ar fi transmis) poate fi pierdut. Se recomandă să se reducă numai chip select atunci când în afara unui pachet de date și pin-ul gata de date este inactiv.
tamponul SPI intern este de 4096 octeți. Dacă există un preaplin tampon, tampon devine scăzut. Acest lucru este indicat de un cod PIN gata de date, care este ridicat fără ca datele să fie acolo., Când se întâmplă o revărsare, se șterge tamponul, astfel încât sistemul ar putea fi în mijlocul unui pachet și uin-urile ar trimite doar zerouri. Dacă o cerere este trimisă către uINS sau uINS trimite un pachet periodic, aceasta va rezolva situația.interfața SPI suportă până la 3 Mbs rata de date. (5 Mbs funcționează dacă pinul gata de date este utilizat pentru a primi datele-vezi B de mai jos.)
citirea datelor¶
există două strategii care pot fi utilizate pentru citirea datelor:
A. citiți o dimensiune fixă a datelor la fiecare interval de timp stabilit., Mai multe date vor fi citite decât uINx va produce la un interval regulat, de exemplu, citind 512 octeți fiecare 4 ms.
Pachete vor fi 0x00 căptușit dacă octeți citiți depășește dimensiunea pachetului.
B. citiți în timp ce pinul gata de date este activ sau suntem într-un pachet de date. O anomalie este pin-ul gata de date va scadea un octet sau două înainte de sfârșitul devine cronometrat afară, prin urmare, au nevoie pentru a viziona pentru sfârșitul pachetului.
Pseudo cod pentru citirea datelor:¶
- Verificați datele gata pin. Dacă codul pin este scăzut, întârziați și verificați din nou codul pin.,
- coborâți linia CS și citiți un bloc de date. Dimensiunile de citire sunt arbitrare, dar tinde să funcționeze mai bine dacă numărul de citire este suficient de lung pentru a conține majoritatea pachetelor de date.
- după finalizarea citirii, Verificați codul pin pregătit pentru date. Dacă este mare, citiți mai multe date. Nu ridicați linia CS în timp ce pinul gata de date este ridicat, va cauza pierderi de date. Dacă datele gata sunt scăzute, ridicați linia CS. Pe un sistem ocupat (și în funcție de rata de transfer), acest lucru ar trebui să se întâmple împreună cu datele citite, deoarece pinul gata de date ar putea să nu scadă între pachete.,
- Parse date în căutarea pentru începutul de pachete (0xFF) aruncarea înapoi în mare de date până la găsit. Odată găsit începe salvarea datelor.
- Salvați și analizați datele care caută sfârșitul pachetului (0xFE). Odată găsit trimite pachet off pentru utilizare. Dacă se vede un început de caracter de pachet în timp ce căutați sfârșitul, aruncați datele anterioare și începeți salvarea pachetelor.
EVB-2 SPI Dev Kit¶
EVB-2 demonstrează interfața SPI cu uINS. Procesorul EVB-2 ATSAM-E70 (E70) oferă exemplul de interfață SPI cu uINS., EVB-2 trebuie pus în modul CBPreset 6 (CONFIG led color cyan), urmat de o resetare a sistemului pentru a activa modul SPI. Codul sursă al proiectului EVB-2 (E70) este disponibil în SDK pentru referință.
depanare¶
Dacă orice alt caracter dintr-un pachet este pierdut, este posibil ca linia CS să fie comutată după fiecare octet.
uINS 3.1 foloseste un USART SPI periferic care necesită un minim întârziere de o tbit (tbit fiind nominale timpul necesar pentru a transmite un bit) spațiere între caractere trimis. Citirea octeților unul câte unul poate provoca întârzieri de timp signifacnt la transmiterea datelor., În funcție de cantitatea de streaming de date, uINS mable să țină pasul și tamponul ar putea fi depășit. Solicitările de mesaje unice ar trebui să funcționeze corect, dar streamingul probabil nu va funcționa bine. Dacă hardware-ul principal nu poate face față întârzierii, trebuie utilizat hardware-ul uINS 3.2.