Skocz do zawartości

Pomocna odpowiedź

Napisano

Cześć,

po ponad półrocznej przerwie kontynuuje zmagania z z kamerką OV7675 z użyciem płytki Nucleo z stm32f446RE. DCMI ani DMA jeszcze nie udało mi się uruchomić ale na swój AVR'owy sposób jestem w stanie UARTem (baud 2M) przesłać w grayscale wartości pixeli z stm32 do apki w Python na moim PC. Po wygenerowaniu obraz jest akceptowalny, ale daleko mu do tego co widziałem na youtube, gdzie obraz nie dość że był czysty to jeszcze przsyłany na żywo( u mnie wygenerowanie zdjęcia przy 5 sekundach to jest dość szybko ^^).

Problem wygląda tak: przesyłane dane a dokładniej linijki ( pixele przesyłam rzędami: [dane][index linijki] ) są często zlepkiem dwóch linijek, przez to rozmiar linijki często jest dwukrotnie  większy niż to jest dla prawidłowego pakietu. Wydaje mi się że problem jest po stronie Pythona/Windowsa, który nie radzi sobie z taką ilością danych i gdy się gubi to skleja mi pakiety, chociaż dokumentacja PySerial mówi o obsłudze jeszcze większych baudrate.

Podczas przeszukiwania internetu natknąłem się też na informacje że czasem taktowanie kamerki zegarem z MCU może powodować problemy i potrzebne jest ustawianie rejestrów w kamerce w celu przeskalowania zegara co powoduje jej poprawne działanie. Może miał ktoś podobny problem?

Co myślicie?

Gość

Robiło mi się tak z innym urządzeniem. Przyczyną może być faktycznie niezgrane taktowanie pomiędzy urządzeniami albo sam przewód połączeniowy z kompem. Spróbuj zmienić baud aż trafisz albo zastosować jakiś specjalizowany scalak. Przesyłanie danych pomiędzy 2 uC może działać świetnie a z kompem już niekoniecznie. Może to też być wina samego kodu, jeśli jest to softwarowy uart, transmisja może mieć jakieś lagi (np. przerwania w trakcie transmisji) i się ramki sypią. Sprawdź łączność czymś prostszym np. stringiem i sprawdź czy się wysypuje, łatwiej będzie ocenić z czym jest problem.

  • 2 tygodnie później...

Dzięki atMegaTona za odpowiedź.

Aktualnie mcu zajmuje się tylko i wyłącznie zapisem całej ramki do ramu a następnie wysłaniem jej do PC. Nic więcej się nie dzieje, także nie ma żadnych przerwań które by robiły tu problemy. Zajme się teraz konfiguracją zegara w rejestrach, może to coś pomoże. Dodatkowo myśle że dodam do kodu logike, dzięki której PC będzie odpytywał STM o konkretne ramki i potwierdzał otrzymanie prawidłowej ramki aż do uzyskania całkowitego obrazu. Na tą chwilę mam ustawiony obraz z paskami do debugowania i widać że coś jest nie halo bo pixele dla konkretnego pasa się zmieniają (te czarne paski poprzeczne to brakujące linie, które nie dotarły z stm do pc). 

 

mcuramka.png

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...