Skocz do zawartości

Kurs STM32 F4 - #10 - Obsługa SPI, wyświetlacz OLED


Pomocna odpowiedź

html_mig_img
Jednym z podstawowych zagadnień w świecie elektroniki jest komunikacja pomiędzy układami scalonymi.W kolejnym artykule z serii o STM32 F4 zajmiemy się wyświetlaczem graficznym OLED. Wcześniej zapoznamy się z interfejsem SPI, który używany jest do komunikacji ze sterownikiem wyświetlacza.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Cześć

Obsługa OLED'a bardo przydatna, fajny ten kurs. Dzięki ponownie.

Mam tylko pytanko o extern przy funkcjach w pliku nagłówkowym SSD1331.h. Co to daje ? "Ciało" tych funkcji jest w pliku SSD1331.c, a więc w pliku "do pary".

Link do komentarza
Share on other sites

gufim to właśnie jest częściowo opisane w artykule - jak dodać pliki bibliotek. Powinny być 2 pliki o takiej samej nazwie ale rozszerzeniach h i c czyli np biblioteka.h i biblioteka.c. Plik h to plik nagłówkowy (header), c to właściwe kody funkcji. W pliku c na początku piszesz #include "biblioteki.h",plik h dołączasz przez podobne #include "biblioteka.h"w głównym pliku (main.c) Pliki powinny się znajdować w odpowiednich folderach - pliki h w inc, pliki c w src. Dalej - co i w jakiej kolejności powinny zawierać biblioteki możesz zobaczyć otwierając kilka prostych bibliotek.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Hej, przede wszystkim dzięki za super kurs 🙂

Mam pytanie do tego artykułu: niestety nie posiadam tego konkretnego wyświetlacza, więc próbuję użyć innego (tego samego, co w kursie STM32F1), ale w ogóle nie chce działać. Trochę nie rozumiem ostatniego parametru funkcji HAL_SPI_Transmit (parametr timeout). Czy mógłbyś może wyjaśnić, cóż to jest i jak to dobrać?

Poza tym, w ogóle fajnie by było, gdyby udało się rozbudować artykuł o chociaż krótki opis jak używać SPI jako takiego wykorzystując HAL (proste wysyłanie i odbieranie danych, bez używanie bibliotek do wyświetlaczy).

Pozdrawiam 😉

Link do komentarza
Share on other sites

Witam.

Jeśli istnieje taka możliwość to bardzo proszę o podanie wskazówek jak komunikować się przez

SPI, gdy dane należy wysłać pod wskazany adres (tak jak to było z akcelerometrem przez I2C).

Nie wiem gdzie zapisać adres, ponieważ funkcja HAL_SPI_Transmit() nie posiada takiego argumentu.

Z góry dziękuję i pozdrawiam:)

Link do komentarza
Share on other sites

wskazany adres

Adres czego? Urządzenia? Przy SPI urządzenie wybiera się dedykowaną linią. Jeśli masz jakąś nietypową implementację i urządzenie wybiera się tak jak przy I2C to komunikacja powinna być opisana w datasheecie urządzenia które chcesz obsłużyć.

Link do komentarza
Share on other sites

Nie rozumiem Twojego problemu.

1. Ustawiasz pin 'Chip select' tak by wybrać dane urządzenie

2. Wysyłasz bajt adresu rejestru

3. Wysyłasz bajt który chcesz zapisać pod adres wysłany w kroku 2.

EDIT: 4. Zwalniasz 'Chip select'

Link do komentarza
Share on other sites

Cześć 🙂

Czy są gdzieś biblioteki w HALu do wyświetlacza OLED (niebieski graficzny 1,3'' 128x64px) konkretnie chodzi mi o ten:

https://botland.com.pl/wyswietlacze-oled/4441-wyswietlacz-oled-niebieski-graficzny-13-128x64px-spii2c-proste-zlacza.html?search_query=oled&results=20

W dokumentacji do tego wyświetlacza są owszem te biblioteki (SSD1306) jednak są one w STD a w artykule nie bardzo zostało wyjaśnione jak przerobić te biblioteki na działające w HALu. Próbuję porównywać Wasz kod całego programu ze swoim, jednak pojawiają się dziwne błędy (głównie przy maskach/innych nazwach funkcji halowskich co nie do końca jest dla mnie zrozumiałe).

Pozdrawiam!

Link do komentarza
Share on other sites

Witam,

Od bardzo długiego czasu próbuję skomunikować się z akcelerometrem LSM303D przez SPI.

W rezultacie dostaję tylko odpowiedź "-1".

Przez I2C wszystko dobrze działa.

Będę bardzo wdzięczny za komentarz na temat sposobu w jaki staram się dokonać komunikacji:

Ustawienia w Cube:

Frame format: Motorola

Data size: 8 Bits

First Bit: MSB First

Baud Rate: 5.625 MBist/s

CPOL: HIGH

CPHA: 1 Edge

CRC Calculation: Disabled

NSS Signal Type: Output Hardware

Kluczowa część kodu:

 uint8_t adres1 = 0x20;
 uint8_t adres2 = 0x21;
 uint8_t Settings1 = 0b10010010;
 uint8_t Settings2 = 0b11100000;
 uint8_t adres_data_0 = 0x2A;
 uint8_t adres_data_1 = 0x2B;

HAL_SPI_Transmit(&hspi3, &adres1, 1, 1000);
HAL_SPI_Transmit(&hspi3, &Settings1, 1, 1000);
HAL_SPI_Transmit(&hspi3, &adres2, 1, 1000);
HAL_SPI_Transmit(&hspi3, &Settings2, 1, 1000);

 while (1)
 {
  HAL_SPI_TransmitReceive(&hspi3, &adres_data_0, &data_0, 1, 1000);
  HAL_SPI_TransmitReceive(&hspi3, &adres_data_1, &data_1, 1, 1000);

	  data = ((data_1<<8)|(data_0));
 }
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.