Forum: Mikrocontroller und Digitale Elektronik Omnivision CMOS Kamera an uC


von Yakup (Gast)


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

von Yakup (Gast)


Lesenswert?

keine eine Ahnung? :(

von JoergL (Gast)


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

von Yakup (Gast)


Lesenswert?

Ich will damit keine Videos abspielen oder sonst was, sondern immer nur 
ein Bild... Da ist die Datenrate dann nicht so extrem hoch oder nicht?

Und was für ein uC würdest Du mir denn empfehlen?

von Coder (Gast)


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.

von JoergL (Gast)


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

von Coder (Gast)


Lesenswert?

@JoergL

Slave Mode Operation.

von Yakup (Gast)


Lesenswert?

@JoergL
Wie genau heißen diese Hardware Encoder? Ich würd mir gern mal einen 
Datenblatt davon anschauen

von Strubi (Gast)


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

von Yakup (Gast)


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...

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


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

von Yakup (Gast)


Lesenswert?

Sollte schon mind. 16bit sein :)

von Geraffel (Gast)


Lesenswert?


von Yakup (Gast)


Lesenswert?

@Geraffel
Verstehe ich das richtig? Der hat den OVSensor direkt an den Atmega 
angeschlossen?? Ist die ISI Schnittstelle vom SAM9G20 überflüssig???

von Joerg L. (Firma: 100nF 0603 X7R) (joergl)


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

von Yakup (Gast)


Lesenswert?

Das mit dem "kärftigen Porzessor" wenn man jetzt normale I/O's nimmt, 
muss das ganze über die Software laufen... Verstehe ich das richtig?

von Hans-Georg L. (h-g-l)


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.

von Hans-Georg L. (h-g-l)


Lesenswert?

Yakup schrieb:
> @Geraffel
> Verstehe ich das richtig? Der hat den OVSensor direkt an den Atmega
> angeschlossen?? Ist die ISI Schnittstelle vom SAM9G20 überflüssig???

Der speichert nur 1 Zeile mit 8Bit Auflösung = 640Byte und das passt in 
1K Ram.

von Yakup (Gast)


Lesenswert?

Ok, das verstehe ich... Danke für die Erklärung :)
Noch eine andere Frage: Was wenn der uC die Daten nicht intern 
speichert, sondern direkt in den externen Ram. Oder geht das nicht?

von Geraffel (Gast)


Lesenswert?

> Was wenn der uC die Daten nicht intern
> speichert, sondern direkt in den externen Ram. Oder geht das nicht?

s. Blackfin

von Hans-Georg L. (h-g-l)


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.

von Strubi (Gast)


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

von Yakup (Gast)


Lesenswert?

Also kann man mit den YUV Daten und einem rund 400MHZ uC mehr anfangen? 
oder was genau bedeutet das?

Ich kann leider kein FPGA oder CPLD nehmen, weil meine Aufgabe mir 
vorgibt, alles mit dem uC zu machen... ggf. extra HW-Encoder

von Joerg L. (Firma: 100nF 0603 X7R) (joergl)


Lesenswert?

Yakup schrieb:
> Also kann man mit den YUV Daten und einem rund 400MHZ uC mehr anfangen?

Also was will man damit eigentlich anfangen?

Du hast bisher reichlich allgemeine Fragen gestellt,
aber leider keine Infos rausgelassen,
anhand derer man Dir richtungsweisende Antworten geben könnte....

von Yakup (Gast)


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 :)

von Coder (Gast)


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.

von Coder (Gast)


Lesenswert?

ok hätte ich bloss das letzte post gelsen...

von Geraffel (Gast)


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 ;-)

von Yakup (Gast)


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

von Geraffel (Gast)


Lesenswert?

Die Aufgabenstellung klingt nach "Wir haben eigentlich keine Ahnung was 
wir da machen wollen aber irgendwas mit Kameras basteln".

Also ist die USB Webcam wahrscheinlich gar nicht so verkehrt...

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.