Es gibt viele hilfreiche Informationen im Internet darüber, wie man die OV7670-Kamera zum Laufen bringt, aber das folgende Problem hat mich etwas ratlos gemacht.
Ich verwende ein Maple r5 Board (STM32F103RBT6), um ein Bild von diesem Modell von OV7670 mit AL422- Puffer auf einer Leiterplatte aufzunehmen.
Ich habe den Schaltplan für dieses Gerät von ebay und meinen Code hier hochgeladen .
Mein Code schnappt sich einen Frame vom OV7670, speichert ihn in AL422 und leitet ihn dann mit UART über eine USB-Verbindung zurück an den PC (sehr langsam!). Wie Sie unten sehen können, ist das Bild zunächst nicht ausgerichtet, dann bekomme ich nur 640 mal etwa 300 Pixel, dann wiederholt sich das Bild. Ich lese nur den Graustufen-Y-Kanal. Aus dem Blickwinkel der Kamera sieht es so aus, als würde sich die rechte Seite des Bildes nach links wiederholen.
Ich habe die Kamera auf mein Oszilloskop fokussiert, da sich dieses Bild schnell ändert, um zu testen, ob die Wiederholungen aufeinander folgende Frames oder dasselbe Bild sind. Die Pixel sind identisch, was meiner Meinung nach bedeutet, dass der Lesezeiger den Puffer umschließt und dieselben Daten ausgibt. Ich habe versucht, weitere Zeilen aus dem Puffer auszulesen, und ich bekomme immer wieder denselben verkürzten Frame.
UPDATE: Ich habe das Produktblatt für den AL422B überprüft. Dieser Puffer kann 393.216 Bytes aufnehmen. Bei zwei Bytes für ein Pixel (eines für Farbe, eines für Graustufen) bedeutet dies, dass nur 393.216/2 = 640x307 Pixel gespeichert werden können! Ich denke, das erklärt, was hier passiert! Jetzt ist meine Frage, gibt es irgendwelche Einstellungen für den OV7670, um nur den Graustufenkanal auszugeben, damit ich ein ganzes Bild speichern kann!
PS: Ich bin neu hier, also lassen Sie mich bitte wissen, wie ich Fragen effektiver stellen kann.
Als Referenz, wenn andere dies finden: Das COM7-Register wurde auf Bayer RAW gesetzt (Bits [2: 0] = 001). Dadurch gibt die Kamera 640 x 480 Bytes aus, die auf den AL422B passen. Die Bayer-Interpolation muss jedoch extern durchgeführt werden, um ein vollständiges RGB-Farbbild zu erhalten. Alternativ können die Verstärkungen auf den r-, g-, b-Kanälen gefummelt werden, um einem Graustufenbild nahe zu kommen, was ich wollte.
Platzhalter
Eidelon