Hallo, ich habe momentan das Problem die Kamera (OV7670) per Ethernet (UDP) zu stream. Ich nutze momentan die Demosoftware und kann eine einfache UDP Verbindung (Server) aufbauen, nun möchte ich die Kamera daten als JPEG Format senden. Könnt ihr mir bitte dabei helfen? Ich habe die Demo Software auf Dropbox hochgeladen ->https://www.dropbox.com/sh/x74c963dkxyct74/3oCAFAA8dq?v=0mcn Wie könnte ich die Daten vom Kamera auslesen und per UDP senden? Ich würde mich sehr freuen wenn ihr mir helfen könnt? Vielen Dank
>nun möchte ich die Kamera daten als JPEG >Format senden liefert den die Kamera ein JPG-Format ? versuch doch erstmal die Kamera "einzeln" ans laufen zu bekommen und im zweiten Schritt dann die Daten zu senden
Hallo Uwe, ich habe bereits ein Demo Software welche die Kamera zum laufen bekommt und diese an dem Display ausgibt. Es gibt eine Funktion "DCMI_JPEGCmd" welche warscheinlich die Daten daten als JPG bereit stellt. Nur finde ich die Demo Software so komplex, dass ich die einzelnen schritte nicht ganz verstehe. Die Daten werden vom Kamera über die DMA gesendet an das Display gesendet, ich wüsste momentan nicht wie ich den DMA Stream abfangen und als UDP Paket versenden soll?? :( Freundliche Grüße
>Es gibt eine Funktion "DCMI_JPEGCmd" welche warscheinlich die Daten >daten als JPG bereit stellt. das Datenblatt vom OV7670 sagt das Output-Format ist RGB oder YUV (in versch. Modes) und das die DCMI-Schnittstelle vom STM32 autom. in JPG wandelt halte ich für unwahrscheinlich >ich wüsste momentan nicht wie ich den DMA Stream abfangen und >als UDP Paket versenden soll die Kamera hat ein "Einzelbild-Mode" in dem nur ein einzelnes Frame übertragen wird du könntest als Ziel beim DMA statt dem Display eine RAM-Adresse angeben, dann wäre das Bild erstmal im RAM (allerdings brauchst du genügend RAM für ein Bild :-) den RAM Block müsstest du dann per UDP versenden was hast du den als "Gegenstelle" bzw. wo sollen die Bilder angezeigt werden ? Gruss Uwe
Vielen dank für dein Tipp. Die gegenstelle könnte VLC Player sein, nur ist für mich hierbei die Herausforderung die Frames bzw. einzelnen Bilder in die SRAM zubekommen. Müsste die Einstellung unter dcmi_OV7670.c vorgenommen werden? --------------------------------------------------- /* DMA2 Stream1 Configuration */ DMA_DeInit(DMA2_Stream1); DMA_InitStructure.DMA_Channel = DMA_Channel_1; DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS; DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS; //Hier die änderung? DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = 0xfffe; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream1, &DMA_InitStructure); ----------------------------------------------------- Speicher hätten wir unter SRAM 192 kByte zur verfügung. Schöne Grüße
1 | DMA_InitStructure.DMA_MemoryInc |
das hier muss noch auf "enable" eingestellt werden sonst schreibt er alle Daten in eine Adresse ich hab sowas schon mal gemacht (für eine OV9655) und kann heut abend mal nach dem Code schauen um das Einzelbild aufzunehmen...das hab ich nicht mehr im Kopf für ein Bild brauchst du 320x240x16 = 150 KByte (also mehr als ein Bild passt in deinen Speicher nicht rein :-) der VLC Player erwartet allerdings vermutlich einen MPEG-Stream und wie der aufgebaut ist kann ich dir nicht sagen (ob es da ein Plugin für RGB gibt ?) das wird nicht so trivial... kannst du die Gegenstelle selbst programmieren ? (z.B. .NET) dann könntest du die Roh-Daten direkt anzeigen und müsstest sie nicht erst umformatieren Gruss Uwe
Die Gegenstelle dürfte kein Problem sein, diese würde ich noch schaffen ob mit Java oder C++:-) Ich würde mich riesig freuen, wenn du die Codestelle bzw. Projekt von dir damals nähr bringen könntest. Ich versuche zwischenzeitlich das mit SRAM "zwischenspeichern" umzusetzen, ob es klappt ist eine andere Frage... :-) Freundliche Grüße
so diese Zeile muss auch noch geändert werden
1 | DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot; |
damit macht die Kamera nur ein einzelnes Bild Gruss Uwe
Uwe B. schrieb: > so diese Zeile muss auch noch geändert werden > >
1 | > DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot; |
2 | > |
> > damit macht die Kamera nur ein einzelnes Bild > > Gruss Uwe Hallo Uwe, ich kämpfe momentan noch mit alles drum und dran...:( Vielen dank aber für deine vorab information! Das ist sehr nett von dir:)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.