Skocz do zawartości
Komentator

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.

Udostępnij ten post


Link to post
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".

Udostępnij ten post


Link to post
Share on other sites

Fajna kolejna częć ale szkoda że tak krótka i mam pytanie jak stworzyć i dołączyć dodatkowe pliki .c raz .h

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
Share on other sites

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 😉

Udostępnij ten post


Link to post
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:)

Udostępnij ten post


Link to post
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ć.

Udostępnij ten post


Link to post
Share on other sites

Przy kodzie do obsługi I2C muszę użyć następujących adresów:

TWI();

Wg datascheet przy SPI również muszę użyć adresu rejestru.

Jeśli to pomoże to chodzi o akcelerometr ADXL345.

Udostępnij ten post


Link to post
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'

Udostępnij ten post


Link to post
Share on other sites

Witam wszystkich,
chciałbym się dowiedzieć po co jest ten '&' w argumencie __DATA w funkcji :

#define __SSD1331_WRITE_BYTE(__DATA) HAL_SPI_Transmit(&hspi1, &__DATA, 1, 1000)

Udostępnij ten post


Link to post
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!

Udostępnij ten post


Link to post
Share on other sites

ZigRec, _kursSprzet

Udostępnij ten post


Link to post
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));
 }

Udostępnij ten post


Link to post
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!

Gość
Dołącz do dyskusji! Kliknij, aby zacząć 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...