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

Jak zacząć projekt oscyloskopu na STM32f429I z wyświetlaczem LCD?

Sajmon_Szy 21 Paź 2014 23:45 2160 12
REKLAMA
  • #1 14062005
    Sajmon_Szy
    Poziom 9  
    Posty: 9
    Witam ponownie,
    Muszę wykonać oscyloskop na bazie STM32f429I LCD, ma on się wyświetlać na tym LCDku. Problem polega na tym, że w zasadzie nie miałem styczności z programowaniem mikrokontrolerów (poza miganiem diody na Atmelu i patrzeniem przez ramie jak znajomy programował prosty ruch robota na Arduino). Muszę więc wdrożyć się błyskawicznie w temat. Od dwóch dni przeglądam internet i bibliotekę - jakieś informacje naturalnie są, ale kompletnie nie wiem od czego zacząć żeby to miało ręce i nogi. Na tym forum pojawia się mnóstwo tematów związanych z STM32, ale takie wyrwane z kontekstu problemy tylko zwiększają mi mętlik w głowie.
    Mam dostęp do książki Krzysztofa Paprockiego -Mikrokontrolery STM32 w praktyce, więc planuję od niej zacząć.
    Generalnie proszę o wskazanie kierunku od którego mogę zacząć żeby to miało sens. Muszę projekt wykonać na gotowo do połowy grudnia, więc za wiele czasu nie mam.
    Mam kilka narzuconych punktów :
    1) Mikrokontroler STM32f429I LCD
    2) Oprogramowanie Visual Studio 2012
    3) .NET
    Reszta zależy ode mnie. Jeśli np. visual studio/.NET nie jest dobrym pomysłem pod mój projekt proszę o radę w co lepiej się zagłębić - może uda mi się przeforsować temat z prowadzącym.
    Generalnie projektem jest coś takiego: (https://www.youtube.com/watch?v=b6bZfzHTtvA)

    W zasadzie to nie bardzo wiem jak w ogóle ugryźć temat. Z jakich dodatkowych rzeczy powinien się taki oscyloskop składać, co tym będę mierzyć, jak podpiąć coś takiego pod zewnętrzne źródło itd. Ale to rozważania na inny dzień.

    Z góry bardzo dziękuję za każdy wpis.
    Pozdrawiam
  • REKLAMA
  • #2 14062065
    Konto nie istnieje
    Poziom 1  
  • #3 14062282
    ZBIQ
    Poziom 17  
    Posty: 336
    Pomógł: 3
    Ocena: 61
    Jeszcze zapytam:
    To ma być zabawka, czy prawdziwy oscyloskop?

    Bo to drugie wymaga dosyć złożonego (i szerokopasmowego) analogowego stopnia wejściowego (szereg tłumików i bufor wejściowy).
  • REKLAMA
  • REKLAMA
  • #5 14137216
    Sajmon_Szy
    Poziom 9  
    Posty: 9
    ZBIQ napisał:
    Jeszcze zapytam:
    To ma być zabawka, czy prawdziwy oscyloskop?

    Bo to drugie wymaga dosyć złożonego (i szerokopasmowego) analogowego stopnia wejściowego (szereg tłumików i bufor wejściowy).


    Raczej bliżej temu projektowi do zabawki będzie.

    Cytat:
    Jaka jest specyfikacja: ile kanałów, jaka podstawa czasu i jaka rozdzielczość sygnału?
    Obraz ma być wyświetlany real-time czy chcesz go zamrażać, zapisywać i/lub przesyłać (usb)?
    Rejestracja sygnału/danych ciągła, z wyzwalaniem poziomem, paternem; jeżeli to ma być też analizator stanów logicznych?

    Na razie nie potrafię odpowiedzieć na te pytania, bo nie rozumiem ich. Jak zaznaczyłem bardzo niewiele wiem na temat elektroniki. Owszem temat nie jest najprzyjemniejszy dla laika, ale i tak nie mam tu nic go gadania ;). Nie ma żadnej możliwości zmiany tematu, więc zrobić go muszę.

    Cytat:
    Na początek Twój oscyloskop powinien wiedzieć jak wyświetlić linię na TFT o zadanych parametrach (współrzędne, kolory).

    Zgadzam się - od tego powinienem zacząć. Problem w tym, że nie mam pojęcia jak to napisać w Visual Studio przy użyciu .net freamwork. Udało mi się połączyć płytkę z komputerem i jak na razie staram się analizować przykładowe programy dostarczone przez ST, czyli wyświetlenie latającego motylka, miganie diodami, user button. Ale jak na razie ma to się nijak do mojego projektu.
    Owszem, przeglądałem te rozwiązania gotowe na mi-k discovery ale niewiele one dają, bo pisane są w innych środowiskach. Ta sama sytuacja występuje z książkami które opisałem.
    Jeśli chodzi o angielski to przy użyciu słownika przy typowo technicznych zagadnieniach powinienem sobie poradzić.

    Cytat:
    Czy w Visual Studio masz jakieś biblioteki dla STM32F4xx?

    http://www.stm32.eu/node/360
    Myślę, że dlatego zalecono mi korzystanie właśnie z Visual Studio i .neta

    Pozdrawiam
  • REKLAMA
  • #6 14137548
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    Dla kogo robisz taki projekt?
    Masz narzucone Visual Studio?
  • #7 14138999
    SeerKaza
    Poziom 20  
    Posty: 468
    Pomógł: 17
    Ocena: 6
    Z tym .NET to trochę nietrafiona przysługa. Mało kto jeszcze z tego korzysta. Najprościej było by to napisać bez środowiska uruchomieniowego. Bierzesz wtedy jakiś przykład specjalnie do płytki i całą konfiguracje wyświetlacza masz już gotową wystarczy tylko modyfikować poszczególne piksele (W SDRAMie) albo skorzystać z biblioteki STMwin (choć nie wiem jak w niej z rysowaniem wykresów) Potem zostaje konfiguracja ADC (choć osiągi tego wbudowanego nie powalają) oraz przetwarzanie odpowiednie danych aby odpowiednio wyświetlać i synchronizować sygnał i to obok analogowych układów wejściowych będzie chyba najtrudniejsze.

    No ale jeśli musisz już to zrobić w .NET to najpierw musisz dowiedzieć się jak zapanować nad obrazem. Powiedział już ktoś to wyżej spróbuj wyświetlić linie na kilku poziomach.
  • #8 14171518
    Sajmon_Szy
    Poziom 9  
    Posty: 9
    Witam,
    Bawię się tym STMem i powiedzmy, że potrafię wyświetlić obrazek, dodać go do pętli i w ten sposób upozorować zjawisko ruchu.
    Chciałbym narysować linię, ale nie bardzo wiem jak do tego podejść, bo to jednak różni się od programowania w c# pod konsolę.
    Jak zacząć działać z programowaniem prostych lini, jakiejśc sinusoidy itd. ?

    Ostatnie kilka dni walczyłem głównie z teorią do tego tematu, więc jeśli idzie o samego STMa to postępy mam bardzo niewielkie.
  • #9 14171721
    SeerKaza
    Poziom 20  
    Posty: 468
    Pomógł: 17
    Ocena: 6
    Pomyśl w jaki sposób maluje się linie Jak mamy obszar np 20x100 pixeli xy i chcemy namalować linie prostą (np w polowie) to trzeba namalować ją piksel po pikselu. Piksele malujemy np funkcją MalowaniePixela(kolor,wspolrzednex,wspolrzedney) to linia prosta wyjdzie nam gdy napiszemy

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

    (program nie przetestowany. Możliwe że można zrobić to bardziej optymalnie)

    Natomiast gdy chcemy malować jakieś wariacje to musimy zrobic tablice Sygnal[100] gdzie umieszczamy nasz przebieg i wtedy malowanie go wyglądać będzie tak

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


    Ja bym od tego zaczął, nie testowałem żadnego z powyższych miniprogramów. Jednak na uC powinny działać choć nie wiem czy pod .NETem jest możliwość dojścia wprost do pamięci wyświetlanej na wyświetlaczu. I jak mówię nie wiem czy program jest optymalny (może można zrobić to szybciej)
  • #10 14172099
    Konto nie istnieje
    Poziom 1  
  • #11 14172168
    SeerKaza
    Poziom 20  
    Posty: 468
    Pomógł: 17
    Ocena: 6
    Marek_Skalski Dlaczego lepiej jest robić tablice niż dane od razu wyświetlać ? Ja tutaj dałem przykład jak wygląda rysowanie linii. Ale biorąc pod uwagę praktyczny przykład gdy odbieramy dane z przetwornika (w oscyloskopie) to procesor i tak musi je przetworzyć więc można od razu wyświetlać przebieg. Wcześniej przygotowane tablice fakt DMA będzie znacznie szybciej. Ale jeśli mamy dajmy na to zapisany w tablicy wektor danych to nie wiem w jaki sposób DMA może zamienić to na przebieg. I tak i tak procesor musi przygotować dane do wyświetlenia.
  • #12 14172252
    Konto nie istnieje
    Poziom 1  
  • #13 14172271
    SeerKaza
    Poziom 20  
    Posty: 468
    Pomógł: 17
    Ocena: 6
    Widać trochę źle się zrozumieliśmy. Z tą funkcją która rysuje piksele miałem namyśli nie protokół który wysyła informacje do wyświetlacza tylko zmienianie wartości RAMU (najczęściej SDRAMU) w której przechowywana jest ramka obrazu. Ja ostatnio używam tylko wyświetlaczy bez kontrolera i korzystam z LTDC stm32f429 i dla mnie rysowanie piksela to zmienianie komórek w pamięci SDRAM.
    Marek_Skalski napisał:
    Kiedy masz do dyspozycji 8MB DRAM, to nie ma sensu cykać po pikselku, jak można przygotować cały ekran i bez smużenia czy artefaktów przesłać obraz kiedy jest gotowy razem z kursorami, liniami pomocniczymi, opisami i w odpowiednich kolorach. Możesz też mieć kilka predefiniowanych ekranów, które ładujesz w kilka ms, a nie sekund. Dodatkowo przesyłanie sprzętowe, to tylko zdefiniowanie kilku wskaźników i kilka zapisów pod te adresy. Nie ma potrzeby sprawdzania, czy


    No jak kolega ma zamiar to zrobić na STM32f4discovery. To najlepsze będzie jak na Layer1 zrobi całą siatkę ze skalą, opisami kursorami. A na Layer2 będzie rysował tylko przebieg i to cyklicznie w 2 ramkach, jedna wyświetlana a kolejna w tle rysowana.

    Więc precyzując o co mi chodziło moje funkcje napisane kilka postów wyżej nie miały za zadanie "rysować" wprost na wyświetlaczu tylko zmieniać dane ramki które są cyklicznie przesyłane przez LTDC na wyświetlacz.
    Marek_Skalski napisał:
    ale do tego nie trzeba I/O, sterowników, oczekiwania na gotowość urządzenia, ani ponawiania komend dla TFT i czekania na zakończenie sekwencji.

    Tak więc tych operacji mój MalowaniePiksela() nie zawierał :P

Podsumowanie tematu

✨ Użytkownik planuje stworzyć oscyloskop oparty na mikrokontrolerze STM32F429I z wyświetlaczem LCD, jednak ma ograniczone doświadczenie w programowaniu mikrokontrolerów. W dyskusji poruszono kwestie dotyczące specyfikacji oscyloskopu, w tym liczby kanałów, podstawy czasu oraz rozdzielczości sygnału. Uczestnicy forum sugerują, aby na początku skupić się na wyświetlaniu prostych linii na wyświetlaczu TFT oraz na konfiguracji ADC. Wskazano również na możliwość wykorzystania DMA do efektywnego przesyłania danych do wyświetlacza. Użytkownik ma dostęp do książki Krzysztofa Paprockiego oraz gotowych projektów, ale zmaga się z programowaniem w .NET, co może być nieoptymalne dla tego typu aplikacji. Wskazówki obejmują rysowanie linii piksel po pikselu oraz przygotowywanie danych w tablicach, co może zwiększyć wydajność.
Wygenerowane przez model językowy.
REKLAMA