logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] ADXL345 SPI + STM32f103 - brak odczytu danych [0xFF]

Mtai_ 23 Mar 2018 00:42 1584 8
REKLAMA
  • #1 17121747
    Mtai_
    Poziom 9  
    Posty: 12
    Hej,
    mam taki problem, że nie mogę poprawnie odczytać ID akcelerometru ADXL345. Konfiguracja SPI wydaje mi się poprawna, problem jest jednak jak na obrazku:
    ADXL345 SPI + STM32f103 - brak odczytu danych [0xFF]

    Przebieg fioletowy to sygnał zegarowy, przebieg żółty to pin MISO. Wygląda to tak, jakby były za duże pojemności na ścieżkach. Problem występuje niezależnie od tego jakie wartości wyślę (zawsze jest 0xFF). Poniżej wrzucam schemat PCB i kod testowego programu (akcelerometr jest podłączony do SPI2).
    ADXL345 SPI + STM32f103 - brak odczytu danych [0xFF]

    Jeżeli mogę prosić o pomoc, to w wyjaśnieniu co może wpływać na brak poprawnej ramki danych, wskazówki co do przerobienia PCB, może wskazania błędu w programie, cokolwiek co pozwoli mi uruchomić ten układ.
    Załączniki:
    • main.c (6.14 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 17121772
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 17121775
    Mtai_
    Poziom 9  
    Posty: 12
    Sugerując się datasheetem, ustawiłem polaryzację na wysoką. Układ reaguje poprawnie na zmianę stanu NSS, z tym że zamiast spodziewanych danych (0x3D jako ID układu) dostaję zawsze stan wysoki o czasie trwania takim jak pin NSS. Zastanawia mnie kształt tego sygnału, bo wygląda jakby mi się kondensator tam tworzył.
  • REKLAMA
  • #4 17121781
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #5 17121966
    Mtai_
    Poziom 9  
    Posty: 12
    No właśnie chyba coś nie tak ze zboczami. O pierwszy bit zgadza się z timingiem datasheetu, to już ostatnie trwają za długo.
  • #6 17122047
    Konto nie istnieje
    Konto nie istnieje  
  • #7 17122096
    Mtai_
    Poziom 9  
    Posty: 12
    Połączenia są prawidłowe. Do slave wysyłam same zera, wtedy powinien wrócić DEV ID (0x3D).
  • Pomocny post
    #8 17122168
    Konto nie istnieje
    Konto nie istnieje  
  • #9 17122315
    Mtai_
    Poziom 9  
    Posty: 12
    Temat do zamknięcia. Miałem dwa błędy: pomylone linie SCL i MISO i źle wysyłane ramki danych. Dziękuje za pomoc.

Podsumowanie tematu

✨ Użytkownik zgłosił problem z odczytem identyfikatora akcelerometru ADXL345 przez interfejs SPI w mikrokontrolerze STM32F103. Mimo poprawnej konfiguracji SPI, odczytywane dane zawsze wynoszą 0xFF. Po analizie sygnałów MISO i SCK, zauważono problemy z czasem zboczy sygnałów. Użytkownik potwierdził, że połączenia są prawidłowe, jednak nie uwzględnił odpowiednich bitów w ramce danych. Ostatecznie zidentyfikowano dwa błędy: pomylenie linii SCL i MISO oraz niepoprawne wysyłanie ramki danych. Po ich korekcie problem został rozwiązany.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA