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

C Keil - STM32F103VE + kamera OV7725 + wyśw. SSD1963

08 Gru 2013 01:00 3363 16
  • Poziom 16  
    Witam,
    Mam problem - mam za zadanie zrobić coś w stylu skanera 3D na STM32.
    Na razie nie mogę opanować samej obsługi kamery w konfiguracji STM32F103VE+ wyśw. SSD1963 7" (zestaw EB-STM32_08_LCD7) i kamera OV7725 .
    Do zestawu dostałem przykładowe projekty w keilu.
    Bazując na projekcie do sprawdzania kamery z wyświetlaczem 4.3' wkleiłem działające biblioteki z drugiego projektu do mojego wyświetlacza 7' i napisałem coś takiego jak poniżej. Niestety po skompilowaniu i zaprogramowaniu mikrokontrolera ekran przybiera barwę niebieską, potem żółtą, a obrazu z kamery nie ma...
    Proszę o pomoc.

    Kolejno pliki:
    main.c :
    LCD_Driver.c:
    OV7670.c:
    ov7670.h:
    SCCB.c:
    SCCB.h:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 1  
  • Poziom 16  
    1. Jak napisałem podmieniłem bibliotekę na tą dla wyświetlacza 7, która w innym projekcie działała.
    2.Niestety nie mam pewności, jak to najprościej sprawdzić ?
    3.Przyjąłem optymistycznie, do kamery również dostałem przykładowy projekt i algorytm był identyczny jak dla OV7670
    4. patrz pkt 2
  • Poziom 1  
  • Poziom 16  
    Brakuje mi już sił na zabawę z bibliotekami. Potrzebuję prostego programu, który tylko wyświetli obraz z kamery na LCD.

    Zwracam się z prośbą do kogoś obytego w temacie, aby połączył mi bibliotekę z projektu Camera-OV7725-Driver-code (którego dostałem do kamery) z jednym z pozostałych przykładowych projektów do mojej płytki (31-35), które po skompilowaniu działają z tą płytką.
    Wszystko w Keilu 4.

    Oferuję 500 pkt !

    Podłączoną kamerę mam w ten sposób:

    PA0-PA7 - Fifo Data
    FIFO CS - PC0
    FIFO RRST - PC1
    FIFO WRST - PC2
    FIFO RD - PC3
    FIFO WE - PC4

    OVSCL - PC6
    OVSDA - PC7
    VSYNC - PD3
    XCLK - PA8
  • Poziom 16  
    Widzę, że nikt się nie skusił na 500pkt....
    Pracuję nad tym dzień i noc, teraz próbuję podejść od drugiej strony przerabiając projekt do kamery, pozamieniałem wszystkie wyprowadzenia GPIO aby pasowało to do mojej płytki, ale niestety nie chce działać - wyświetlacz cały biały.

    Wydaje mi się, że problem tkwi w pliku GLDC.c, ale nie wiem gdzie...

    main.c

    Kod: c
    Zaloguj się, aby zobaczyć kod


    ov7725.c

    Kod: c
    Zaloguj się, aby zobaczyć kod


    GLCD.c

    Kod: c
    Zaloguj się, aby zobaczyć kod




    GLCD.h

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Proszę o pomoc.
    Osobie, która pomoże mi to odpalić chojnie się odwdzięcze.

    Pozdrawiam
  • Poziom 1  
  • Poziom 16  
    Dzięki za odpowiedź.
    Ok, w takim razie wyjdźmy od przykładu Show_Char_7, który dostałem do płytki testowej i który wydaje się działać.

    Tak wygląda lcd.h:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    A tak lcd.c:

    Kod: c
    Zaloguj się, aby zobaczyć kod




    Gdy w main.c wywołam polecenie wydruku łańcucha znaków na wyświetlaczu w danej pozycji o danym kolorze polecenie działa - na wyświetlaczu widzę napis, np.


    LCD_DisplayString(200,200,"test",0xffff,0x0);


    Śmiem zatem twierdzić iż cały proces inicjalizacji przebiegł poprawnie.
    Biblioteka kamery z tego co rozszyfrowałem zapisuje po prostu w pamięci kontrolera wyświetlacza 16 bitów w danym momencie czasowym za pomocą polecenia LCD_Write_Data. I to wszystko, dobrze rozumuje?

    Jednak jeżeli w main.c w/w przykładu wywołam komendę potrzebną do zapisu tych 16 bitów, np :

    LCD_WR_Data(0x0fff);

    Nie dzieje się nic. Komenda nie działa, czy próbuję w zły sposób ją sprawdzić ?
    Jeżeli tak to jak sprawdzić tą komendę LCD_WR_Data ?
  • Poziom 1  
  • Poziom 16  
    Ok, dodałem funkcję LCD_SetWindow w lcd.c (a także na dole w lcd.h), przekopiowałem pliki lcd.c, lcd.h, char_font.c do projektu OV7225 (dostałem do kamery), wcześniej we wszystkich plikach pozamieniałem podłączenia GPIO na takie jak są na mojej płytce, dodałem te 3 pliki w projekcie OV7225 i spróbowałem odpalić. Niestety program nie chce przejść inicjalizacji kamery (a jest podłączona dobrze).
    Po wykomentowaniu while( 1 != OV7725_Init() ); na wyświetlaczu pojawia mi się napis.
    Szukam co może być nie tak, ale bez rezultatu jak na razie...

    main:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    ov7225.h:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    ov7225.c:

    Kod: c
    Zaloguj się, aby zobaczyć kod




    sccb.c:


    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 1  
  • Poziom 16  
    Dzięki, podmieniłem wyprowadzenia - SCL od kamery podpiąłem pod PB8, SDA pod PB9, zmieniłem w programie, ale niestety...nadal nie przechodzi inicjalizacji.
  • Poziom 1  
  • Poziom 16  
    finalnie wyglada to tak w sccb.c

    Kod: c
    Zaloguj się, aby zobaczyć kod


    sccb.h:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Po ostatniej zmianie (zmienilem GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_OD; na GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;)
    inicjalizacje kamery przechodzi...już się ucieszyłem, ale odłączyłem kamerę i program również idzie dalej, więc chyba nie w tym rzecz.
    Zgaduję, że przekombinowałem tą zamianę I2C2 na I2C1?
  • Poziom 1  
  • Poziom 16  
    niestety jak cofnę GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; (zamiast AF dam Out) to program zatrzymuje się na inicjalizacji kamery...
  • Poziom 16  
    Proszę o pomoc w uruchomieniu programu, za pomoc oferuję 500pkt.