Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 15 lip 2025, o 07:20


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 3 kwi 2017, o 10:38 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Witam,

    Tym razem chciałbym podłączyć mój wyświetlacz oparty na ili9481 pod szynę FSMC STM32. Skonfigurowałem sobie projekt w CubeMX, ale mam pewne wątpliwości co do podłączenia (chodzi o linie sterujące). Wydaje mi się, że powinno być to w ten sposób połączone:

    STM32 <-> ili9481
    FMC_Ax <-> RS
    FMC_NE1 <-> CS
    FMC_NWE <-> WR
    FMC_NOE <-> RD (nie jest wyprowadzony na module)
    GPIOx <-> RESET

    Dobrze myślę?

    I druga moja wątpliwość. Jak zapisywać dane do tak skonfigurowanego interfejsu. To znaczy jak wpisać komendę, a jak czyste dane? Dotychczas korzystałem z biblioteki UTFT i programowej obsługi LCD. I na przykład moja funkcja wysyłająca komendę wygląda tak:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Domyślam się, że teraz dane mam zapisywać bezpośrednio pod konkretny adres pamięci. Ale czy muszę nadal ręcznie sterować na przykład pinem RS? Będę wdzięczny za jakieś wskazówki.



    Ostatnio edytowano 4 kwi 2017, o 23:01 przez r03c10, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2017, o 16:57 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    Witam,

    Najpierw poczytaj jak wstawia się kod C w tematach......

    W CubeMX jaki tryb pracy wybrałeś dla FSMC? Coś mi się wydaje, że nieodpowiedni. Zaglądnij do dokumentacji procka do działu FSMC. Od tego powinieneś zacząć......

    Jak używasz FSMC to nie machasz programowo żadnymi pinami. Wpisujesz pod konkretny adres w pamięci daną. Generowaniem przebiegów zajmuje się FSMC.

    A jaki to adres w przestrzeni adresowej będzie - zależy jak masz zrobioną konfigurację FSMC.
    Co do adresu dane/rejestry - Inny będzie adres dla rejestrów a inny dla danych. Odpowiada za to pin RS.

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 kwi 2017, o 17:25 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Wszystko zadziałało za pierwszym razem:) Pytałem trochę na wyrost bo bałem się podchodzić do FSMC. Jednak jego obsługa okazała się naprawdę prosta wbrew pozorom. Opiszę jak to u mnie wygląda. Może komuś się przyda w przyszłości.

    W CubeMX wybrałem oczywiście NOR Flash/PSRAM/SRAM/ROM/LCD 1. CS podłączone do NE1, RS pod A16.

    Adresy pamięci dla komend i danych:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Funkcje zapisu komendy i danych:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jednak po pierwszych testach mam pytanie. Biblioteka UTFT oferowała bardzo przydatną funkcję _fast_fill_16, która pozwalała na przykład szybko wypełnić ekran. Wyglądała ona tak, że raz ustawialiśmy na pinach dane i potem "banglowaliśmy" tylko pinem WR odpowiednią liczbę razy. Poniżej przykład jak to wyglądało:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Teraz z braku możliwości dostępu do pinu WR wpisuję w pętli for dane do LCD_RAM. Wydaje mi się, że spowalnia to cały proces. Może ktoś ma inny pomysł jak to zrealizować żeby osiągnąć poprzednią funkcjonalność.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 kwi 2017, o 22:55 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    Witam,

    Więc pokaż tą pętlę.

    Do tej funkcji _fast_fill_16 co jest przekazywane ?
    pix - liczba pikseli ?
    ch, cl - kolor starsza oraz młodsza część ?

    To raczej na pewno nie będzie wolniejsze:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 kwi 2017, o 11:31 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Tak, pix to liczba pikseli, a cl i ch to kolor.

    Moja funkcja wygląda podobnie jak w przykładzie kolegi. I faktycznie chyba nie ma innej możliwości zrealizowania tej operacji, więc tak już musi zostać.

    Pojawił się jednak inny problem. Otóż kiedy wyświetlam napis, gubione są losowo piskele. Doszedłem do wniosku, że co jakiś czas na linii danych pojawiają się zakłócenia. Poniżej zdjęcia obrazujące ten problem (mam nadzieję, że brakujące piksele będą widoczne):

    ObrazekObrazek

    Oczywiście eksperymentuję z timingami FSMC (zwiększyłem czasy) i jakiekolwiek wartości ustawię, efekt jest podobny.

    Dodatkowo co jakiś czas na moment pojawiają się dziwne paski na LCD co też wygląda niekorzystnie.

    Całość uruchamiam na DISCO-F429ZI i zastanawiam się czy te zakłócenia nie mają związku z tym, że do pinów FSMC podłączone są inne peryferia (podobny problem miałem z USARTEM).

    Chyba będę zmuszony powrócić do realizacjo programowej sterowania LCD bo tam wszystko było wolniejsze, ale za to nie miałem problemu z poprawnym wyświetlaniem obrazu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 kwi 2017, o 13:36 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    Witam,

    Ja obstawiam problem w funkcji wyświetlania znaków, a nie problem z magistralą FSMC. Zauważ, że kwadrat jest wypełniony prawidłowo na obu fotkach, które przedstawiłeś.
    Kontrolery ILI są dosyć kapryśne. Zawsze możesz zmniejszyć taktowanie kontrolera FSMC. Zaglądnij do PDF-a kontrolera LCD, z jakimi prędokościami może pracować.

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 kwi 2017, o 14:42 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Dzięki za odpowiedź,

    Czasy ustawiłem na wartości maksymalne, więc nie powinno być tutaj problemu. Przedtem ustawiałem je zgodnie z notą katalogową. Z tym kwadratem też zauważyłem tą prawidłowość. I ogólnie doszedłem do wniosku, że wszystkie funkcji korzystające z fast_fill_16 działają prawidłowo, a te gdzie wybierany jest pojedynczy piksel sprawiają problemy.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO