Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Odczyt rejestru z LSM330DLC

aplov 24 Lis 2017 17:08 342 2
  • #1 24 Lis 2017 17:08
    aplov
    Poziom 6  

    Witam,

    próbuję odczytać podstawowy rejestr "WHO_AM_I" z akcelerometru zawierającego się w układzie LSM330DLC.
    Używam do tego magistrali SPI (8MHz).
    Funkcje SPI:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Funkcja odczytu:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    uC: XMEGA128A3U 32MHz
    Przed wywołaniem obu funkcji ustawiam jako wyjście w stanie wysokim oba piny CS (żyroskopu i akcelerometru), następnie inicjalizuje SPI i próbuje odczytać rejestr. Za każdym razem otrzymuje wartość 255, niezależnie od sprawdzanego rejestru.
    W żaden sposób nie inicjalizuje LSM330DLC
    Dodam jeszcze, że wyświetlacz OLED, który jest podłączony do tej samej magistrali SPI, działa normalnie.

    Schemat podłączenia:
    Odczyt rejestru z LSM330DLCOdczyt rejestru z LSM330DLC

    0 2
  • Pomocny post
    #2 24 Lis 2017 19:43
    czareqpl
    Poziom 28  

    1. Czy faktycznie wykonałeś sekwencję odczytu rejestru?
    Może potrzebne jest coś podobnego do tego?

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Chodzi mi głównie o przesłanie przez SPI adresu rejestru a potem późniejsze odczytanie kilku bajtów i ich wyświetlenie.

    0
  • #3 24 Lis 2017 19:54
    aplov
    Poziom 6  

    Działa! :D ślęczałem już tyle przy tym, że nawet wpatrując się w wykres przebiegów w datasheet, kompletnie zapomniałem, ze najpierw wysyłamy rejestr do odczytu, a potem dopiero odbieramy dane wysyłając 0...

    Wielkie dzięki :D

    Wrzucam poprawiony kod odczytu dla potomnych:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0