Forum: Mikrocontroller und Digitale Elektronik ESP32S3 CAM Interface mit DMA verliert Daten


von Dirk (dirk_2023)


Lesenswert?

Hallo liebe ESP32 Freunde.

Ich lese über das CAM Interface Daten ein.
Es sind immer feste Blocklängen und das ganze funktioniert auch recht 
gut.
Nur alle paar Minuten wird wahrscheinlich ein Byte verschuckt und ich 
muss alles neu starten, was zu grösseren Daten verlusten führt.

Aktuel habe ich den Code aus dem Kameratreiber vom ESP32S3 raus kopiert 
und geändert.
Das ganze MSG System, Task und der CAM Interrupt sind weg.
Das einzige was noch übrig ist ist der DMA Interruppt, da prüfe & 
filtere ich die Daten und schiebe die gefilterten Daten in einen Fifo.
Dieser Fifo wird dann über einen Task per SPI weiter geleitet.

So nun ist das ganze auf X Bytes empfang ausgelegt, aber ich brauche 
eigentlich einen DMA EOF egal ob die Daten alle angekommen sind.
Das EOF muss einfach kommen wenn der Frame zuende ist (Signale) oder 
alle X Bytes eingelesen wurden.
Und der DMA Speicher muss nartürlich automatisch auf den nächsten 
FrameBuffer umschalten auch wenn der nur 1 Byte empfangen würde.
Wenn der ausversehen zuviele Daten bekommt darf der logischerweise auch 
nicht auf die dumme Idee kommen und den nächsten DMA Speicher damit zu 
füllen.

Wie bekommt man das hin?

von Dirk (dirk_2023)


Lesenswert?

Keiner eine Idee?

Den Code bin ich noch am ausmisten, dann kann ich den hoffentlich auch 
mal zeigen ohne das man einen Anfall bekommt.

Ich habe gestern noch den CAM VSync Interrupt als trigger getestet.
Im Grunde so wie original in einem Task verarbeitet.
Aber das habe ich nicht zum laufen gebracht, der DMA hat überhaupt nicht 
mehr ausgelöst. Was ich noch testen muss ist ob da vielleicht ein paar 
Daten rein gekommen sind.

Da das ganze etwas schneller arbeiten muss (Variabel 25 bis 50KHz Takt) 
ist da nichts mit dem FREERTOS anzufangen!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.