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

STM32F051 Disco - Konfiguracja SPI1 i SPI2, brak komunikacji, rejestry DR=0

MichGX 22 Lip 2015 09:30 852 2
REKLAMA
  • #1 14866314
    MichGX
    Poziom 11  
    Posty: 85
    Pomógł: 2
    Ocena: 4
    Witam,

    Przesiadam się z STM32F103 na F051, a raczej ćwiczę sobie na obu tych mikrokontrolerach. Napisałem program na F0, w celu poćwiczenia sobie z konfiguracją interfejsu SPI. Zadanie jest takie SPI1 posyła dane, a SPI2 odbiera je zgłaszając odbiór. Interfejsy podłączyłem ze sobą SPI1->MISO z SPI2->MISO SCLK - SCLK MOSI - MOSI Niestety komunikacja nie działa, przerwanie nie jest zgłaszane, a do tego rejestry DR w obu interfejsach mają wartość 0.

    Kod konfiguracji SPI:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Main - wywołanie:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Przerwania (narazie puste wstawiłem dla wykonania testów tylko breakpointy w obu)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Z góry wielkie dzięki za pomoc. Dodam że sprawdzałem RCC i zarówno SPI1 jak i SPI2 mają ustawiony clk w rejestrach APB1 i 2. Taka sama sytuacja z GPIOA i GPIOB.
    Wewnątrz funkcji SPI_I2S_SendData16 przy przypisaniu : SPIx->DR = (uint16_t)Data; wartość DR nie jest zmieniana tylko cały czas wynosi 0.
  • REKLAMA
  • #2 14869046
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Zwróć uwagę na bity SSM i SSI w master. SSM powinien mieć wartość 1.
  • #3 14982913
    MichGX
    Poziom 11  
    Posty: 85
    Pomógł: 2
    Ocena: 4
    Problem został rozwiązany, zapomniałem wyłączyć sprzętowej obsługi NSS (pinu CS). Można to zrobić korzystając z funkcji api:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA