Hallo,
ich habe ein Problem und weiß jetzt wirklich nicht mehr weiter. Ich
benutze ein STM32F429 Disco Board und die ov7670 Kamera.
Ich habe jetzt die I2C Schnittstelle eingerichtet und beim senden der
Addresse bekomme ich ein ACK. Sende ich die Registeraddresse an die
OV7670 wird der Bus blockiert...
Im anhang habe ich bilder von der Kommunikation angehängt. Einmal wenn
kein Slave (OV7670) verbunden ist und dann wenn der OV7670 angeschlossen
ist.
Wie kann ich dieses Problem beheben?
Danke
Hallo Michael,
Danke für deine Antwort.
Mir ist bewusst dass SCCB nicht I2C ist. Wenn ich kein Ack bekomme wird
mit dem nächsten Schritt weiter gemacht. Deswegen wundert es mich, das
nach der SlaveAddresse und der RegisterAddresse das Camera Modul den Bus
blockiert.
Hi,
ich bin jetzt ein wenig weiter gekommen, leider ist jetzt ein neues
Problem aufgetreten.
Mitlerweile kann ich ohne Porbleme Addressen und Registeraddressen
senden.
Leider wenn ich die Slave-Addresse(write) gefolgt von der
Registeraddresse und dann Slave-Addresse(read) sende, bekomme ich nichts
zurück.
(Beim dem Ack Bild bitte beachten, dass der Logik Analyser irgendwie die
Busdaten falsch interpretiert! Gesendet wird: 0x42+0x01 danach 0x43).
Wie bekomme ich jetzt die Registerdaten aus dem ov7670/ das >SCL Signal
dass das Kamera Modul die Daten senden kann?
Hallo,
Uli S. schrieb:> Wie bekomme ich jetzt die Registerdaten aus dem ov7670/ das >SCL Signal> dass das Kamera Modul die Daten senden kann?
ich habe jetzt ein Problem: ich bin über einen anderen Thread zu den
Basteleien mit der OV7670 und einem Mega328 gekommen...
Beitrag "Brauche Unterstützung beim OV7670 (bzw. SCCB)"
Schicke doch mal dem Andreas S. (igel1) eine PM, der hat sie an einem
STM, und machen ihn auf Deinen Thread hier aufmerksam.
Ich habe das SCCB-Zeug aus einer Internetsource für die TWI-Hardware des
Mega328 nur übernommen und kann nur sagen, daß das hier stabil läuft.
Das dürfte Dir aber nur bedingt helfen.
Gruß aus Berlin
Michael
Hi Uli,
ich hatte seinerzeit einige Tage benötigt, um SCCB auf dem STM32 ans
Laufen zu bringen. Bist ein Glückspilz, dass Michael U. uns zueinander
gebracht hat ...
Code läuft auf STM32F429i Discovery-Board - sowohl auf dem alten Board,
als auch auf der neueren Board-Version mit Namen "Disc1".
Anbei die wesentlichen Code-Passagen - ist sicherlich noch ein klein
wenig einzufeilen, weil's Code-Auszüge sind.
Board: STM32F429i-Disc1 Discovery # = 2. Generation des Boards
Libs: Standard Peripheral Library 1.8.0
Aufruf mit:
Hi Andreas,
danke für deine Antwort. Da ich alles über direkten Register-Zugriff
mache hilft mir dein Code nicht weiter...
Ich habe jetzt hinbekommen, dass der OV7670 den Bus nicht mehr
blockiert. Nur habe ich jetzt ein Problem mit dem STM32F4! Ich kann
0x42/ACK+Registeraddresse/ACK senden (und bekomme für beide ein ACK),
aber danach wird das Clock Signal eingestellt! Wie kann ich den STM32F4
dazu "zwingen" mein Clocksignal aufrecht zu erhalten für die zweite
Adresse und empfangen der Daten?
Danke
Edit: Wenn ich bis vor der zweiten Start Kondition stopppe (breakpoint)
und dann weiter gehe bis zum Anfang, bekomme ich noch sieben Clockzyclen
aus der SCL Leitung raus aber dann wird abgebrochen...
Hallo Uli,
Uli S. schrieb:> Da ich alles über direkten Register-Zugriff> mache hilft mir dein Code nicht weiter...
Die Standard Peripheral Library ist noch relativ hardwarenahe.
Mit etwas Maikäferarbeit kannst Du die Funktionsaufrufe
in Deine Register-Direktprogrammierung zurückverwandeln.
Alternativ kannst Du mit scharfem Hinsehen auch direkt ableiten,
welche Register bei welchem Funktionsaufruf gesetzt werden.
Ich selber habe die SCCB-Geschichte vor 1,5 Jahren in Gang
gebracht und seitdem leider vieles vergessen (zum Glück - es
war ziemlich gruselig).
Leider habe ich aktuell nicht die Zeit, mich nochmals so tief
einzudenken, um Dir auf Registerebene zu helfen - dies nur,
damit Du Dir keine zu großen Hoffnungen auf meine Unterstützung
machst.
Viele Grüße
Igel1
Hallo @igel1,
danke für deine Antwort. Mitlerweile habe ich die SCCB Kommunikation zum
laufen bekommen. Das Datasheet sagt vor dem Lesen muss ein Write
Erfolgen, das ist völlig falsch, genau deswegen blockiert das Camera
Modul. Read: Sende zweimal Read Adresse!
Jetzt mit laufender SCCB Kommunikation habe ich das nächste Problem, ich
bekomme kein Bild. Wäre es möglich das du mir den Code für die
Bilddarstellung auf dem Display sendest, main und display lib, ich will
dies nur zum ausprobieren verwendent, Ich habe die Vermutung irgendwie
bekomme ich nicht die richtigen Daten...?
Mein Bild erkennt zumindest eine Taschenlampe, da ändert sich das Bild
in weiß...
Hallo Uli,
hatte auf Deine PN geantwortet, bekam aber eine Fehlermeldung zurück.
Leider wirst Du mit meinem Code nichts anfangen können, weil ich damals
jäh durch einen familiären Trauerfall im Projekt unterbrochen wurde:
Der Code blieb damals völlig chaotisch und mehr oder weniger
undokumentiert liegen. Sogar ich selbst traue mich kaum noch an den Code
heran - es wäre reine Zeitverschwendung.
Wenn Du den Code trotzdem unbedingt haben möchtest, so kann ich
versuchen, die Teile zusammenzusammeln. Allerdings kann (oder ehrlicher:
möchte) ich Dir leider keinen Support dabei geben, den Code ans Laufen
zu bringen, weil ich meine Zeit lieber in den sauberen Neuaufbau von
OV7670-Software stecken möchte und aktuell in einem Nachbarthread zum
Thema OV7670 engagiert bin:
Beitrag "Brauche Unterstützung beim OV7670 (bzw. SCCB)"
Vielleicht wäre es ja interessant für Dich, wenn Du in diesem anderen
Thread mitmachst?
Viele Grüße
Igel1