Omnivision CMOS Kamera an uC

Gast #2339777
Lesenswert?

Hallo, ich würde gerne eine CMOS Kamera von Omnivision (z.B. OV7635) an 
einen uC anschließen. Von Atmel gibt es die ARM9 Prozessoren mit der ISI 
Schnittstelle... Kennt jemand sowas ähnliches von anderen Herstellern. 
Oder eine Modul, was die Schnittstelle ersetzt, damit ich einen 
beliebigen uC nehmen kann...


LG Yakup
Gast #2341623
Lesenswert?

Yakup schrieb:
> .... damit ich einen beliebigen uC nehmen kann...

Dir ist aber schon bewußt, mit welcher Datenrate die Kamera die Pixel 
liefert?
Also einen beliebigen uC kann man nicht nehmen.
Und ohne passendes Hardware-Interface am uC würde ich das nicht 
probieren.

Gruß,
Jörg
Gast #2341801
Lesenswert?

Ich möchte wetten, dass man die z.B Pixelclock und weiter signale extern 
vorgeben kann; also vom Mikrocontroller vorgebenen werden kann. Nennt 
sich Slave Operation oder so ähnlich.... also kannst du sehr wohl einen 
beliebigen wählen. Allerdings sind für frameraten mhz erforderlich.
Gast #2341822
Lesenswert?

Yakup schrieb:
> Und was für ein uC würdest Du mir denn empfehlen?

Sorry, kann ich keinen empfehlen, ich kenne nur Lösungen mit FPGAs oder 
Hardware-Encodern.
Da die Kamera einen recht flotten Datenstrom liefert, muß man diesen 
zumindest per DMA auffangen. Nur in Software sehe ich keine Chance.

Coder schrieb:
> Ich möchte wetten, dass man die z.B Pixelclock und weiter signale extern
> vorgeben kann;

Jein, die Pixelclock kommt aus der Kamera, man kann aber den Systemtakt 
vorgeben. Der muß aber noch durch die Kamera-PLL durch, so daß es kein 
per Software generierter Takt sein kann, da Anforderungen an den Jitter 
vorhanden sind....

Gruß,
Jörg
Gast #2342089
Lesenswert?

Hi,

Tip: Nimm einen Blackfin. Der ist perfekt zum Bau von Kameras geeignet, 
bringt auch die nötige Power für Software-JPEG-Encoding mit.
Fertige Referenzdesigns zum Einzug von Bildern gibts in folgenden 
Varianten:

- uClinux v4l : http://blackfin.uclinux.org
- Komplettes v4l2 Kamera-Framework: http://section5.ch/vkit
- Standalone-Shell (kein Betriebssystem): 
http://www.section5.ch/forum/viewtopic.php?f=2&t=118

Wenn du die Bilder anschliessend auch verschicken willst, macht die 
uClinux-Lösung mehr Sinn, zum Prototypen und Verstehen der Hardware ist 
allerdings die Standalone-Shell besser geeignet.

Gruss,

- Strubi
Gast #2342285
Lesenswert?

@ Strubi
Danke für die Tipps... Die bringen mich schon einen Schritt weiter...
Im besten Fall würde ich aber durch einen "Hardware Encoder" das System 
so gestalten wollen, dass ich auch uC ohne spezieller Schnittstelle 
benutzten kann...
Gast #2342296
Lesenswert?

Hi, Yakup,

ich habe mal einen Bewegungsdetektor gesehen mit einem Z80, einem 
A/D-Wandler und wohl einem Dual-Port-RAM zwischen A/D-Wandler und Z80.

Der uP las aber pro Bild nur eine Zeile aus.

Der AVR ist viel schneller - aber richtige Bildspeicherung oder gar 
Verarbeitung, dafür sind die 8-bitter viel zu klein.

Ciao
Wolfgang Horn
(Firma: 100nF 0603 X7R) #2342372
Lesenswert?

Yakup schrieb:
> @JoergL
> Wie genau heißen diese Hardware Encoder?

Naja, da mußt Du in Richtung MPEG, (M)JPEG oder H.264 Encoder suchen.
Hersteller gibt es viele...

> Ich würd mir gern mal einen Datenblatt davon anschauen

Das Dumme daran ist, daß die Datenblätter zu den mir bekannten Chips 
nicht frei erhältlich sind. Stichwort:NDA.
Daher ist die Lösung mit einem FPGA und einem freien Encoder Core 
durchaus reizvoll.
Oder einen "kräftigen" Prozessor wie in Strubi's Vorschlag, der das 
Ganze dann in Software macht.

Gruß,
Jörg
#2342394
Lesenswert?

CMOS Sensoren haben üblicherweise keinen Zwischenspeicher nach der 
AD-Wandlung, deshalb gibt es keinen Modus mit dem man beliebig langsam 
ein Bild auslesen kann.

Das Bild wird im Pixeltakt (ca 20 - 30Mhz) geliefert.
Mit einem kleinen MC schaffst du kein Vollbild mit 640*480*2 Bytes 
(intern)zu speichern. Bei 1K Ram max. 1 Zeile.
Farbsensoren liefern auch keine RGB Werte pro Pixel, sondern musst dir 
das aus den Bayer Pattern umrechnen.

ISI macht das für dich und schiebt dir das Bild via DMA ins (externe) 
Ram.
alternativ : CPLD oder Fpga + Ram.
#2342413
Lesenswert?

Joerg L. schrieb:
> Yakup schrieb:
>> @JoergL
>> Wie genau heißen diese Hardware Encoder?
>
> Naja, da mußt Du in Richtung MPEG, (M)JPEG oder H.264 Encoder suchen.
> Hersteller gibt es viele...
>
>> Ich würd mir gern mal einen Datenblatt davon anschauen
>
> Das Dumme daran ist, daß die Datenblätter zu den mir bekannten Chips
> nicht frei erhältlich sind. Stichwort:NDA.
> Daher ist die Lösung mit einem FPGA und einem freien Encoder Core
> durchaus reizvoll.
> Oder einen "kräftigen" Prozessor wie in Strubi's Vorschlag, der das
> Ganze dann in Software macht.
>
> Gruß,
> Jörg

Da ist nichts gross kodiert;)
Die Sensoren sind prinzipiell monochrom. Farbe bekommen die erst wenn 
man den Pixeln Farbfilter vorschaltet.

Die Farbfilter für RGB sind nach einem bestimmten Muster (Bayer Pattern) 
gleichmässig auf die Fläche der Pixel verteilt. .. das ist alles an 
Kodierung.
Gast #2342504
Lesenswert?

Nur ne Anmerkung: der OV7735 spuckt die Daten im UYVY-Format aus (man 
behafte mich nicht auf die genaue Reihenfolge). D.h. da ist bereits ein 
kleiner 'dummer' DSP eingebaut, der das Bayer-Pattern in YUV 4:2:2 
umrechnet, damit spart man sich schon mal was an Zyklen.
Bei der Surveyor SRV1-Robot-Kamera (die man auch einzeln bekommt) ist 
übrigens der fertige JPEG-Encoder zu einem ähnlichen Sensor in 
Opensource vorliegend, der Schaltplan übrigens auch. Viel 
neu/selberzumachen gäb's da also nicht, nun ist die Frage: Ist das Ziel 
der Weg oder die Lösung :-)

Bei HW-Encodern hab ich mir bisher immer die Finger verbrannt. Trotz NDA 
gibt's für den "kleinen Mann" doch immer nur schlechte Infos und die 
Hälfte funktioniert nicht so wie beschrieben. Bisher damit nur Frust 
(von Philips über TI bis ADI...). Dann wäre doch eher noch ein 
vorgeschaltetes FPGA (DCT, usw.) interessant.

Viel Spass,

- Strubi
Gast #2342781
Lesenswert?

Meine Aufgabe in meiner Abschlussarbeit ist folgendes:

Ich soll ein vorhandenes System:
Atmel Sam9g20 uC
CMOS Kamera von OV
LPDDR mit 64MB
so umstellen, dass man die ISI Schnittstelle des Atmel nicht mehr 
benötigt wird, damit man ggf. andere Prozessoren einsetzten kann, die 
nicht über diese Schnittstelle verfügen...

Ich hoffe, dass die Info jetzt reicht, mehr kann ich auch nicht sagen :)
Gast #2342823
Lesenswert?

Also soweit ich mich erinnere, kann die Pixel-Clock bei Sensor extern 
vorgegeben werden (MCLK in slave mode). Also sollte das Teil so langsam 
arbeiten wie der Mircokontroller. Würde z.b einen Xmega nehmen oder 
besser einen avr32. Für die ARM Fans auch m0 oder m3. Je mehr mhz desto 
besser. Dann das ganze geschickt mit usb 2.0 high speed im fifo modus 
verheiraten.
Gast #2342832
Lesenswert?

> so umstellen, dass man die ISI Schnittstelle des Atmel nicht
> mehr benötigt wird, damit man ggf. andere Prozessoren einsetzten
> kann, die nicht über diese Schnittstelle verfügen...



Nennt sich USB Webcam ;-)
Gast #2342839
Lesenswert?

1
> so umstellen, dass man die ISI Schnittstelle des Atmel nicht
2
> mehr benötigt wird, damit man ggf. andere Prozessoren einsetzten
3
> kann, die nicht über diese Schnittstelle verfügen...
4

5

6

7
Nennt sich USB Webcam ;-)

Haha.... entweder bekomme ich damit ne 1.0 oder ne 5.0 :D

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren