Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wyświetlacz EA DOGM204N-A, I2C nie startuje

alienHater 01 Sty 2018 14:11 1002 8
  • #1 01 Sty 2018 14:11
    alienHater
    Poziom 10  

    Dzień dobry,

    mam problem z komunikacją z w/w wyświetlaczem.
    Zapoznałem się z dokumentacją modułu(w załączniku) oraz biblioteką Wire dla arduino

    Korzystam z takiego modułu: SparkFun ESP32 Thing

    LCD podłączyłem zgodnie ze schematem:

    Wyświetlacz EA DOGM204N-A, I2C nie startuje

    Pin SA0 do VDD.

    Ponieważ nie było reakcji, Pin 44(RESET) podpiąłem do Arduino. (bez zmian)
    Zgodnie z wykresem, ustawiam go na 100 ms w stan niski.
    Wyświetlacz EA DOGM204N-A, I2C nie startuje

    W tym module nie stosuje się podświetlenia(refleksyjny). Piny 1,2,3,20,21,22 pozostawiłem niepodłączone( w innych wersjach lutuje się je do podstawki z podświetleniem i przez rezystor podpina do 3,3V).

    I2C scanner dla arduino wykrywa moduł pod adresem: 0x3D.

    Adres urządzenia jest 7 bitowy: MSB 011 1101 LSB
    Adres przesuwany jest w lewo i w miejscu LSB powinien zostać dołączony bit R/W# (Read 1; Write 0).
    Wygląda na to że to część standardu i biblioteka Wire robi to automatycznie(tak jak oczekiwanie na potwierdzenie ACK).
    Informacja w datasheecie, że adres to 0x7A(dla SA0 = 1) jest więc nieścisła.

    Próbowałem zainicjalizować LCD:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nie jestem pewien czy prawidłowo wysyłam znaki do LCD.
    Próbowałem też z control byte 0b00000000 (Continuation bit = 0, D/C - 0) - ten sam efekt.

    Wydaje mi się że przy inicjalizacji muszę sprawdzać czy LCD (Busy Flag = 1) jest zajęty i czekać na BF = 0.

    Wyświetlacz EA DOGM204N-A, I2C nie startuje

    Wyświetlacz EA DOGM204N-A, I2C nie startuje

    Próbowałem to zrobić tym kodem(oraz w wersji z dorzuconą procedurą startową):
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pobieram 4 bajty, wszędzie same "1".
    Jeżeli wpiszę zły adres , nie odbieram żadnych danych.

    Odczytywany bajt to BF + adres licznika
    naprzemian z BF + PART ID.

    A więc coś jest nie tak Przynajmniej w miejscu Part ID powinno być coś innego niż same "1".

    Dziękuję za wszelką pomoc i sugestie.

    0 8
  • #2 01 Sty 2018 17:21
    22053
    Użytkownik usunął konto  
  • #3 01 Sty 2018 17:46
    alienHater
    Poziom 10  

    Chętnie przejrzę ten kod. Może znajdę błąd w procesie komunikacji, tworzenia ramki.
    Z góry dziękuję.

    0
  • Pomocny post
    #4 01 Sty 2018 18:20
    22053
    Użytkownik usunął konto  
  • #5 01 Sty 2018 18:20
    alienHater
    Poziom 10  

    Dzięki. Tak, 20x4.

    0
  • Pomocny post
    #6 01 Sty 2018 18:27
    22053
    Użytkownik usunął konto  
  • #7 03 Sty 2018 23:49
    alienHater
    Poziom 10  

    Dalej nic, wydaje mi się że ramka danych jest teraz poprawna.
    Przy próbie odczytu busy flag - same "1". Jak wspomniałem wyżej, odczyt wydaje się błędny ze względu na Part ID.

    Nawet jeśli źle wysyłałbym znaki, po inicjalizacji powinien błyskać kursor.

    Jeżeli dobrze zrozumiałem(strona 30,31) najpierw wysyłane są polecenia(komendy).
    Polecenie składa się z 2 bajtów. 1 bajt(kontrolny) zawiera stany bitów co i d/c plus "000000".
    Drugi to dane czyli wybrane polecenie( clear display, contrast set itd).

    Jeżeli w bicie kontrolnym pojawi się co == 0, to będzie to ostatni bajt kontrolny - aż do pojawienia się bitu stopu(?).
    Od stanu d/c będzie zależało czy kolejne bajty to dane czy polecenia( oszczędzamy transmisję).

    Poniżej kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zastanawia mnie że w tabeli na str 38 - 40(i innych miejscach) jest podawany stan RS. "0" przy poleceniach. W przypadku komunikacji IIC, pin ten jest nazywany SA0 i służy do ustawieniu adresu. Zakładam że w przypadku tej transmisji stan RS nie jest brany pod uwagę.

    0
  • #8 03 Sty 2018 23:57
    22053
    Użytkownik usunął konto  
  • #9 07 Sty 2018 15:52
    alienHater
    Poziom 10  

    Komenda ON jest już w procedurze startowej. Problemem nie był sposób tworzenia ramki.
    Wyświetlacz EA DOGM204N-A, I2C nie startuje

    Pozdrawiam i dziękuję za pomoc :D

    0