de spi-interface biedt een alternatieve communicatiemethode met de µINS, µAHRS en µIMU. Het SPI protocol gebruikt veel van dezelfde structuur en indeling als het seriële communicatie binaire protocol dat wordt beschreven in de binaire Protocol sectie van de gebruikershandleiding.
SPI inschakelen¶
om SPI in te schakelen, houdt u pin G9 (nSPI_EN) laag bij het opstarten.
Opmerking: Als het externe GPS PPS timepulse signaal is ingeschakeld op G9, zal de module het nspi_en signaal negeren en zal de SPI-modus worden uitgeschakeld, ongeacht de G9-pin-status.,
Hardware¶
Inertial Sense SPI-interface gebruikt 5 lijnen om met andere apparaten te communiceren., id=”c075f8374e”>
gegevensoverdracht¶
Om te zorgen voor correcte gedrag van de ontvanger in SPI Slave modus van de master-apparaat verzenden van het frame moet zorgen voor een minimale vertraging van één tbit (tbit wordt de nominale tijd die nodig is om te zenden een beetje) tussen elke letter transmissie., Traagheidszintuigmachines vereisen geen vallende rand van de om een karakterontvangst te initiëren, maar slechts een laag niveau. Dit lage niveau moet echter aanwezig zijn op ten minste één tbit vóór de eerste seriële klokcyclus die overeenkomt met het MSB-bit. (1)
bij het lezen van de uINS en er is geen data klaar zal het nullen sturen voor de data.
CS laag houden zou geen problemen moeten veroorzaken. Echter, als het klokkenspel tussen de master en slave processors uit de synchronisatie raakt, is er niets om ze weer in sync te krijgen., Grond stuiteren of ruis tijdens een overgang kan ervoor zorgen dat de uINS ziet twee klokranden wanneer er slechts één zou moeten zijn (als gevolg van een ESD of een snelle voorbijgaande gebeurtenis). Het verhogen en verlagen van de CS lijn reset het shift register zal de klokken resynchroniseren.
Data Ready Pin optie¶
Er is een data ready pin optie. Dit signaal zal worden verhoogd wanneer de gegevens klaar zijn. Afhankelijk van wanneer dit gebeurt kunnen er 1-4 bytes van nullen zijn die eruit zullen komen voordat het pakket begint. Ook deze regel zal een byte of twee inactief worden voordat het einde van het pakket wordt verzonden., Er is geen “not in a data packet” teken om te verzenden. Het wordt strikt gedaan door gegevens klaar pin en parsing.
als de chip select-lijn tijdens een datapakket wordt verlaagd, kan de byte die wordt verzonden (of die zou worden verzonden) verloren gaan. Het wordt aanbevolen om alleen lager de chip selecteren wanneer buiten een data pakket en de data ready pin is inactief.
de interne SPI-buffer is 4096 bytes. Als er een buffer overflow, de buffer wordt gedropt. Dit wordt aangegeven door een data ready pin die hoog is zonder dat er gegevens zijn., Wanneer er een overflow gebeurt, wordt de buffer gewist, zodat het systeem zich in het midden van een pakket kan bevinden en de uINS gewoon nullen zouden sturen. Als een verzoek wordt verzonden naar de uINS of de uINS stuurt een pakket periodiek het zal de situatie op te lossen.
de spi-interface ondersteunt een gegevenssnelheid tot 3 Mbs. (5 Mbs werkt als de data ready pin wordt gebruikt om de gegevens te ontvangen-zie B hieronder.)
Reading Data¶
Er zijn twee strategieën die kunnen worden gebruikt om de data te lezen:
A. Lees een vaste data grootte uit elke ingestelde tijdsinterval., Er zullen meer gegevens worden gelezen dan de uINx op een regelmatig interval zal produceren, bijvoorbeeld, het lezen van 512 bytes elke 4 ms.
pakket zal 0x00 opgevuld zijn als de bytes gelezen de pakketgrootte overschrijden.
B. lezen terwijl de data ready pin actief is of we in een datapakket zitten. Een anomalie is de data ready pin zal een byte of twee laten vallen voordat het einde wordt geklokt, dus hoeft te kijken voor het einde van het pakket.
pseudocode voor het lezen van gegevens:¶
- Controleer data ready pin. Als pin laag is, vertraging en controleer pin opnieuw.,
- lagere CS-regel en lees een gegevensblok. Leesgroottes zijn willekeurig, maar het werkt meestal beter als het leesaantal lang genoeg is om de meeste datapakketten te bevatten.
- na het lezen voltooid, controleer data ready pin. Als het hoog is, Lees meer gegevens. Niet verhogen van de CS-lijn, terwijl de gegevens klaar pin hoog is, zal het verlies van gegevens veroorzaken. Als data ready laag is, verhoog je de CS-lijn. Op een bezet systeem (en afhankelijk van baudrate) zou dit moeten gebeuren samen met de data gelezen als de data ready pin zou niet laag gaan tussen pakketten.,
- ontleden van gegevens op zoek naar begin van pakket (0xFF) waarbij gegevens worden weggegooid totdat gevonden. Eenmaal gevonden beginnen met het opslaan van de gegevens.
- gegevens opslaan en ontleden op zoek naar einde van pakket (0xFE). Eenmaal gevonden stuur pakket uit voor gebruik. Als een begin van het pakketkarakter wordt gezien tijdens het zoeken naar het einde, gooi eerdere gegevens dan weg en start de pakketopslag opnieuw.
EVB-2 SPI Dev Kit¶
De EVB-2 demonstreert de spi interface met de uINS. De EVB-2 ATSAM-E70 (E70) processor biedt de voorbeeldspi interface met de uINS., De EVB-2 moet worden gezet in CBPreset mode 6 (CONFIG LED color cyan) gevolgd door een systeem reset om SPI mode in te schakelen. De EVB-2 (E70) project broncode is beschikbaar in de SDK voor referentie.
problemen oplossen¶
als elk ander teken van een pakket verloren gaat, kan het zijn dat de CS-regel na elke byte wordt geschakeld.
de UINs 3.1 gebruikt een USART SPI peripherial die een minimale vertraging vereist van één tbit (tbit is de nominale tijd die nodig is om een bit te verzenden) spatiëring tussen verzonden tekens. Het één voor één lezen van bytes kan belangrijke vertragingen veroorzaken bij het streamen van gegevens., Afhankelijk van de ammount van data streaming, de UINs mable bij te houden en de buffer kan worden overflow. Aanvragen voor één bericht zouden goed moeten werken, maar streamen zal waarschijnlijk niet goed werken. Als de master hardware de vertraging niet aankan, moet de UINs 3.2 hardware worden gebruikt.