Software für die FLIR Lepton Wärmebildkamera

Mit dem Vivado-Design für die Lepton Wärmebild-IR-Kamera gebaut und die Breakout-Board mit dem Arty Z7 Dev Board verbunden, ist der nächste Schritt, die Software zu aktualisieren,  so daß wir Bilder empfangen und anzeigen können. Um dies zu tun, können wir auch die HDMI-out-Beispiel-Software-Anwendung verwenden, da dies korrekt den VDMA-Ausgang der Karte konfiguriert. Wir müssen nur die Testmuster-Generierungsfunktion entfernen und unsere eigene FLIR-Steuerung und Ausgabefunktion als Ersatz schreiben.

Diese Funktion muß Folgendes tun:
 
  1. Konfigurieren von I2C und SPI Peripheriegeräte mit dem XIICPS und XSPI API zur Verfügung gestellt, wenn wir die BSP erzeugt haben. Um sicherzustellen, daß wir mit der Lepton-Kamera kommunizieren können, müssen wir die I2C-Adresse auf 0x2A setzen und den SPI für CPOL = 1, CPHA = 1 und den Masterbetrieb konfigurieren.
  2. Sobald wir über die I2C-Schnittstelle kommunizieren können, müssen wir feststellen, daß das Lepton-Kameramodul bereit ist und müssen das Statusregister lesen. Wenn die Kamera korrekt konfiguriert und bereit ist und wenn wir dieses Register lesen, wird die Lepton-Kamera mit 0x06 antworten.
  3. Mit dem Kameramodul bereit, können wir ein Bild lesen und im Speicher speichern.  Dazu führen wir mehrere SPI-Lesevorgänge aus.
  4. Nachdem wir das Bild aufgenommen haben, können wir das gespeicherte Bild in den Speicherplatz verschieben und auf den VDMA zugreifen um das Bild anzuzeigen.

Um ein Bild aus der Lepton-Kamera erfolgreich zu lesen, müssen wir den VoSPI-Ausgang synchronisieren, um den Anfang der ersten Zeile im Bild zu finden. Die Kamera gibt jede Zeile als 160-Byte-Block (Lepton 2) oder zwei 160-Byte-Blöcke (Lepton 3) aus und jeder Block hat eine 2-Byte-ID und einen 2-Byte-CRC. Wir können diese ID verwenden, um das Bild zu erfassen, gültige Frames zu identifizieren und sie im Bildspeicher zu speichern.

Durch die Schritte 3 und 4 können wir die Größe des angezeigten Bildes auf dem Bildschirm erhöhen. Die Lepton 2-Kamera, die für dieses Beispiel verwendet wird, hat eine Auflösung von nur 80 horizontalen Pixeln mit 60 vertikalen Pixeln. Dieses Bild wäre sehr klein, wenn es auf einem Monitor angezeigt wird, so daß wir das Bild einfach auf 640x480 Pixel skalieren können, indem wir jedes Pixel und jede Zeile achtmal ausgeben. Diese Skalierung erzeugt ein größeres Bild, das auf dem Bildschirm einfacher zu erkennen ist, obwohl es ein wenig blockig aussieht.