SPI-gränssnittet tillhandahåller en alternativ metod för kommunikation med µINS, µAHRS, och µIMU. SPI-protokollet använder mycket av samma struktur och format som binärprotokollet för seriekommunikation som beskrivs i avsnittet Binärprotokoll i användarmanualen.

aktivera SPI¶

för att aktivera SPI, håll pin G9 (nSPI_EN) låg vid start.

Obs! När extern GPS pps timepulse-signal är aktiverad på G9 kommer modulen att ignorera nspi_en-signalen och SPI-läget kommer att inaktiveras oavsett G9-pin-status.,

hårdvara¶

Tröghetsavkänning SPI-gränssnitt Använder 5 linjer för att interagera med andra enheter., id=”c075f8374e”>

Klockpolaritet tomgång hög (CPOL = 1) Klockfas fallande kant (CPHA = 1) Chip Select aktiv låg data klar aktiv hög

dataöverföring¶

för att säkerställa korrekt beteende hos mottagaren i SPI slavläge måste huvudenheten som skickar ramen säkerställa en minsta fördröjning på en Tbit (tbit är den nominella tid som krävs för att överföra en bit) mellan varje Teckenöverföring., Tröghetsanordningar kräver inte en fallande kant av för att initiera en teckenmottagning utan endast en låg nivå. Denna låga nivå måste dock finnas på minst en tbit före den första seriella klockcykeln som motsvarar MSB-biten. (1)

När du läser uINS och det finns inga data redo det kommer att skicka nollor för data.

att hålla CS låg bör inte orsaka några problem. Men om klockningen mellan master-och slavprocessorer blir ur synk finns det inget att få dem tillbaka i synk., Jord studsa eller Buller under en övergång kan orsaka uINS ser två klockkanter när det bara borde ha varit en (på grund av en ESD eller en snabb övergående händelse). Höjning och sänkning av CS-linjen återställer Skift-registret kommer att omsynkronisera klockorna.

data Ready Pin Option¶

det finns ett data ready pin-alternativ. Denna signal kommer att höjas när data blir redo. Beroende på när detta händer kan det finnas 1-4 byte nollor som kommer ut innan paketet börjar. Även denna rad kommer att gå inaktiv en byte eller två innan slutet av paketet skickas., Det finns inte ett” inte i ett datapaket ” – tecken att skicka. Det görs strikt av data ready pin och parsing.

Om chip select-linjen sänks under ett datapaket kan byte som överförs (eller som skulle överföras) gå förlorad. Det rekommenderas att bara sänka chipet Välj när utanför ett datapaket och data ready pin är inaktiv.

den interna SPI-bufferten är 4096 byte. Om det finns ett buffertspill faller bufferten. Detta indikeras av en data ready-pin som är hög utan att data finns där., När ett överflöde händer rensar det bufferten, så systemet kan vara mitt i ett paket och uINS skulle bara skicka nollor. Om en förfrågan skickas till uINS eller uins skickar ett paket regelbundet kommer det att lösa situationen.

SPI-gränssnittet stöder upp till 3 Mbs-datahastighet. (5 Mbs fungerar om data ready pin används för att ta emot data-se B nedan.)

läsa data¶

det finns två strategier som kan användas för att läsa data:

A. Läs en fast datastorlek ut varje bestämd tidsintervall., Mer data kommer att läsas än uINx kommer att producera på ett regelbundet intervall, till exempel läsa 512 byte var 4 ms.

paket kommer att vara 0x00 vadderad om byte läsa överstiger paketstorlek.

B. Läs medan data ready pin är aktiv eller vi är inne i ett datapaket. En anomali är data ready pin kommer att släppa en byte eller två innan slutet blir klockad ut, därför behöver titta på slutet av paketet.

pseudokod för att läsa data:¶

  1. kontrollera data ready pin. Om stiftet är lågt, fördröja och kontrollera stiftet igen.,
  2. Sänk CS-linjen och läs ett datablock. Lässtorlekar är godtyckliga, men det tenderar att fungera bättre om läsräkningen är tillräckligt lång för att innehålla de flesta datapaket.
  3. efter läsningen är klar, kontrollera data redo pin. Om det är högt, Läs Mer data. Höj inte CS-linjen medan data ready-pin-koden är hög, det kommer att orsaka dataförlust. Om data redo är låg, höja CS linje. På ett upptaget system (och beroende på baud-hastighet) skulle detta behöva hända tillsammans med de data som läses, eftersom data ready-stiftet kanske inte går lågt mellan paket.,
  4. tolka data som letar efter start av paket (0xFF) kassera data tills de hittas. En gång hittade börja spara data.
  5. spara och tolka data som letar efter slutet av paketet (0xFE). En gång hittade skicka paket för användning. Om en start av pakettecken ses när du letar efter slutet, kassera tidigare data och starta paketbesparingen över.

EVB-2 SPI Dev Kit¶

EVB-2 visar SPI-gränssnittet med uINS. EVB-2 atsam-E70 (E70) – processorn ger exemplet SPI-gränssnitt med uINS., EVB-2 måste sättas i CBPreset-läge 6 (CONFIG led color cyan) följt av en systemåterställning för att aktivera SPI-läge. Projektkällkoden EVB-2 (E70) finns i SDK för referens.

felsökning¶

om alla andra tecken från ett paket förloras kan det vara att CS-linjen växlas efter varje byte.

uins 3.1 använder en USART SPI-kringutrustning som kräver en minsta fördröjning på en tbit (Tbit är den nominella tid som krävs för att överföra lite) avstånd mellan tecken som skickas. Läsa Byte en efter en kan orsaka betydande tidsfördröjningar när strömmande data., Beroende på ammount av data streaming, uins mable att hålla upp och bufferten kan vara överflöde. Enstaka meddelandeförfrågningar ska fungera korrekt, men streaming kommer förmodligen inte att fungera bra. Om huvudhårdvaran inte kan hantera fördröjningen ska uins 3.2-hårdvaran användas.