interfejs SPI zapewnia alternatywną metodę komunikacji z µinami, µahrami i µIMU. Protokół SPI wykorzystuje wiele z tej samej struktury i formatu, co protokół binarny komunikacji szeregowej, który jest opisany w sekcji protokół binarny w Podręczniku użytkownika.
Włącz SPI¶
aby włączyć SPI, przytrzymaj pin G9 (nspi_pl) niski przy starcie.
Uwaga: Gdy zewnętrzny sygnał GPS PPS timepulse jest włączony na G9, moduł zignoruje sygnał nSPI_EN, a tryb SPI zostanie wyłączony niezależnie od stanu pinu G9.,
Sprzęt¶
interfejs inertial Sense SPI wykorzystuje 5 linii do interfejsu z innymi urządzeniami.,
transfer danych¶
aby zapewnić poprawne zachowanie odbiornika w trybie SPI Slave, urządzenie główne wysyłające ramkę musi upewnij się, że opóźnienie wynosi co najmniej jeden tbit (tbit jest nominalnym czasem wymaganym do transmisji bitu) pomiędzy każdą transmisją znaków., Inercyjne urządzenia zmysłowe nie wymagają opadającej krawędzi, aby zainicjować odbiór postaci, a jedynie niski poziom. Jednak ten niski poziom musi być obecny na co najmniej jednym tbit przed pierwszym szeregowym cyklem zegara odpowiadającym bitowi MSB. (1)
podczas odczytu uinów i nie ma gotowych danych, wysyła zera dla danych.
utrzymanie CS ' a na niskim poziomie nie powinno powodować żadnych problemów. Jednak jeśli Taktowanie między procesorami master i slave zostanie zsynchronizowane, nie ma nic, aby je ponownie zsynchronizować., Odbicie ziemi lub szum podczas przejścia może spowodować, że uINS widzi dwie krawędzie zegara, gdy powinno być tylko jedno (ze względu na ESD lub szybkie Zdarzenie przejściowe). Podnoszenie i opuszczanie linii CS resetuje rejestr shift resynchronizuje Zegary.
Data Ready Pin opcja¶
istnieje opcja data ready pin. Sygnał ten zostanie podniesiony, gdy dane staną się gotowe. W zależności od tego, kiedy to nastąpi, może być 1-4 bajtów zer, które wyjdą przed rozpoczęciem pakietu. Również ta linia będzie nieaktywna bajt lub dwa przed wysłaniem końca pakietu., Nie ma znaku” Nie w pakiecie danych ” do wysłania. Jest to ściśle wykonywane przez PIN i parsowanie danych.
Jeśli linia wyboru układu zostanie obniżona podczas pakietu danych, transmitowany bajt (lub który zostanie przesłany) może zostać utracony. Zaleca się, aby obniżyć chip select tylko wtedy, gdy poza pakietem danych i data ready pin jest nieaktywny.
wewnętrzny bufor SPI wynosi 4096 bajtów. Jeśli wystąpi przepełnienie bufora, bufor zostanie upuszczony. Jest to wskazywane przez PIN gotowy do danych, który jest wysoki bez danych tam., Gdy nastąpi przepełnienie, czyści bufor, więc system może być w środku pakietu, a UIN po prostu wysyła zera. Jeśli żądanie zostanie wysłane do uINS lub uINS wysyła pakiet okresowo, rozwiąże to sytuację.
interfejs SPI obsługuje szybkość transmisji danych do 3 Mbs. (5 Mbs działa, jeśli do odbioru danych używany jest pin data ready-patrz B poniżej.)
odczyt danych¶
do odczytu danych można użyć dwóch strategii:
A. odczytuje stały rozmiar danych w każdym ustawionym przedziale czasu., Więcej danych będzie odczytywanych niż uINx będzie produkował w regularnych odstępach czasu, na przykład, odczytując 512 bajtów co 4 ms.
pakiet będzie wypełniony 0x00 jeśli odczytany bajt przekroczy Rozmiar pakietu.
B. odczyt, gdy pin data ready jest aktywny lub znajdujemy się w pakiecie danych. Jedną z anomalii jest to, że PIN gotowy do danych upuści bajt lub dwa, zanim koniec zostanie taktowany, dlatego trzeba uważać na koniec pakietu.
Pseudo kod do odczytu danych:¶
- Sprawdź pin gotowy do odczytu danych. Jeśli pin jest niski, opóźnij i sprawdź pin ponownie.,
- obniżyć linię CS i odczytać blok danych. Rozmiary odczytu są dowolne, ale działa lepiej, jeśli liczba odczytów jest wystarczająco długa, aby zawierać większość pakietów danych.
- Po zakończeniu odczytu sprawdź pin data ready. Jeśli jest wysoka, przeczytaj więcej danych. Nie podnoś linii CS, gdy pin data ready jest wysoki, spowoduje to utratę danych. Jeśli dane gotowe są niskie, podnieś linię CS. Na zajętym systemie (i w zależności od szybkości transmisji) musiałoby się to zdarzyć wraz z danymi odczytywanymi, ponieważ pin data ready może nie spadać pomiędzy pakietami.,
- Parse data looking for start of packet (0xff) discarding data until found. Po znalezieniu zacznij zapisywać dane.
- zapisuje i analizuje dane w poszukiwaniu końca pakietu (0xFE). Po znalezieniu wyślij pakiet do użycia. Jeśli podczas szukania końca widoczny jest początek znaku pakietu, Odrzuć poprzednie dane i rozpocznij zapisywanie pakietów od nowa.
EVB-2 SPI Dev Kit¶
EVB-2 demonstruje interfejs SPI z uinami. Procesor EVB-2 ATSAM-E70 (E70) zapewnia przykładowy interfejs SPI z uINS., EVB-2 należy przełączyć w tryb cbpreset 6 (Dioda LED Config kolor cyan), a następnie zresetować system, aby włączyć tryb SPI. Kod źródłowy projektu EVB-2 (E70) jest dostępny w zestawie SDK w celach informacyjnych.
Rozwiązywanie problemów¶
Jeśli co drugi znak z pakietu zostanie utracony, może być tak, że linia CS jest przełączana po każdym bajcie.
uINS 3.1 używa peryferii USART SPI, która wymaga minimalnego opóźnienia o jeden tbit (tbit jest nominalnym czasem wymaganym do transmisji bitu) odstępów między wysłanymi znakami. Odczyt bajtów jeden po drugim może powodować znaczące opóźnienia czasowe podczas przesyłania danych., W zależności od ilości strumieniowania danych, uiny mogą nadążyć, a bufor może być przepełniony. Pojedyncze żądania wiadomości powinny działać poprawnie, ale streaming prawdopodobnie nie będzie działał dobrze. Jeśli sprzęt główny nie poradzi sobie z opóźnieniem, należy użyć sprzętu uINS 3.2.