Forum: Projekte & Code uC Grafikkarte auf Basis von BT815/BT816/BT817/BT818


von Purri K. (purri_k)


Angehängte Dateien:

Lesenswert?

Hallo Ihr,
Ich habe das letzte halbe Jahr an einer Grafikkarte für Mikrocontroller 
gearbeitet und würde diese gerne vorstellen. Ich dachte mir, es wäre 
doch ganz nett wenn man mit recht wenig CPU Leistung(wie z.B ein uC) 
vernünftige Grafik ausgeben könnte. Vor ca. einem halben Jahr kam mir 
dann ein Newhaven Display unter die Finger, welches ein FT813 Chip mit 
der sogenannten Embedded Video Engine (EVE) verwendet. Basierend auf 
dieser Chip-Serie habe ich eine Grafikkarte mit HDMI Ausgang entwickelt. 
Im Beispiel habe ich einen halb transparenten Strichcode durch das Bild 
wandern lassen um das Blending zu testen.

Wer die FT8xx/BT8xx Chips kennt weiß das diese sehr nette 
Grafikoperationen bereitstellen:
Beispielsweise:
- BT815/BT816(EVE 3) Auflösung bis 800x600, BT817/BT818(EVE 4) 1280x800.
- Grafik per SPI senden
- Dekomprimirung von JPGs
- Alpha Blending
- Standard Formen wie Rechteck/Kreis
- Stencil
- Bild Transformationen
- Externes Flash möglich(für Bilder, Schriftarten, etc)
- Eigene Schriftarten. Es gibt sogar einen Schriftkonverter welcher es 
einem Ermöglichen soll Standard Windows Schriften für den Grafikchip zu 
konvertieren

Des weiteren verwende ich einen HDMI Tranceiver welcher auch CEC 
Kommunikation kann. Den CEC Teil habe ich noch nicht getestet sollte 
aber theoretisch funktionieren. Damit könnte man über die 
Fernsehfernbedienung sein Gerät steuern. Ggf lassen sich damit sogar 
einfache Spiele programmieren welche die TV Fernbedienung als 
Game-Controller verwenden. Kann aber auch sein das CEC für vieles zu 
langsam ist, da laut den Spezifikationen Antwortzeiten von bis zu 1 
Sekunde angegeben sind. Hot Plug Detection ist möglich, EDID Daten 
werden automatisch empfangen und stehen per I2C bereit.

Ich muss noch das Layour etwas verbessern da ich am Signalpfad zum Hdmi 
Connector das Routing verbessern kann.

Was haltet Ihr davon?
Ich bin Dankbar für Feedback. Vielleicht hat der ein oder andere Ideen 
was man alles an Projekten damit machen könnte. Ich freue mich auf eure 
Antworten.

Gruß Martin

: Bearbeitet durch User
von Matthias 🟠. (homa)


Lesenswert?

Cool. Soll und wird das ganze open source? Finde es auf jeden Fall 
spannend. Hast du ein Codebeispiel wie solche Grafik erzeugt wird? Wie 
sieht es preislich mit solch einem Grafikboard aus?

von c-hater (Gast)


Lesenswert?

Matthias H. schrieb:

> Cool. Soll und wird das ganze open source?

Das gibt es schon lange als OpenSource. Siehe hier:

Beitrag "FT800 / FT810 Library"

> Wie
> sieht es preislich mit solch einem Grafikboard aus?

Das genau ist eins der zwei Kernprobleme dieser Lösung (oder 
vergleichbarer von der Konkurrenz). Es wird im Endeffekt doch relativ 
teuer, wenn man alle Aufwendungen zusammenrechnet.

Außerdem sind die Möglichkeiten bei näherer Betrachtung doch relativ 
bescheiden. Nur allzu häufig wird das Konzept selber zum limitierenden 
Faktor. Schon im oben verlinkten Thread findest du unzählige Hinweise 
darauf, weil der Entwickler der OSS-Implementierung oft eben genau 
darauf gestoßen ist.

Außerdem auch reichlich Hinweise darauf, dass FT/BT nur wenig offener 
ist als die Konkurrenz. Aber es genügte immerhin, um eine vollwertige 
OSS-Implementierung des Geraffels zu schaffen. Was sich allerdings mit 
der neuesten Generation der Chips (die dann endlich wirklich interessant 
wird) gleich wieder relativiert. Hier ist das nicht mehr möglich, 
jedenfalls nicht mit den bisher veröffentlichten Informationen. Die 
wollen jetzt offensichtlich das komplette Vendor-LockIn. Genau wie die 
Konkurrenz, die das schon immer durchgesetzt hat...

von Hallo (Gast)


Lesenswert?

Wie obsolet wird es sein ? Es scheint das praktisch alles früher oder 
später verschwindet. Es könnte sein das irgendwann sogar die diskreten 
Logik-Bausteine weg sind.

von Purri K. (purri_k)


Angehängte Dateien:

Lesenswert?

Hi Matthias,
Freut mich, das es dir gefällt. Bin gerade noch dabei CEC zu 
implementieren.
An Open Source habe ich noch garnicht gedacht. Das war für mich ein 
Projekt um mich im Jahr 2020 bei Sinnen zu halten ;). Die Materialkosten 
können sich auf ca 40€ belaufen, wenn man ca 100 Stück baut. Platinen 
sind sehr teuer wenn man nur 1-2 Stück machen lässt ;). Der Grafikchip 
ist recht günstig und kostet ca 5€ der HDMI Tranceiver ca 12€. Dann noch 
eine Paar Bauteile um die verschiedenen Spannungen zu erzeugen.
Hab mal ein Bild anghängt mit einem Codeauszug, wie man Linien zeichnet. 
Es erinnert etwas an den Syntax von opengl. Die ganze API wird vom 
Hersteller bereitgestellt und man muss sich um die Harwarenahe 
Programmierung nichtmehr kümmern. Alles zu den Chips ist bis in das 
letzte Detail dokumentiert. Es gibt auch unzählige Beispielprogramme.

Hier ist der "Programming Guide" zum Chip. Da findest du einige 
Beispiele wie man Elemente auf das Display zeichnet.
https://brtchip.com/wp-content/uploads/Support/Documentation/Programming_Guides/ICs/EVE/BRT_AN_033_BT81X_Series_Programming_Guide.pdf

Falls du noch irgendwas wissen möchtest, einfach fragen ;)

von Purri K. (purri_k)


Angehängte Dateien:

Lesenswert?

Ein kleines Update:
Der Hersteller der BT8xx Chips entwickelt (oder lässt entwickeln) gerade 
ein Arduino Shield mit dem BT815 und einem FPGA. Für ca 40€ soll es das 
mal geben. Das Shield soll eine Auflösung von 1280x720 können und wohl 
auch ein paar andere Features wie Sprites. Das hat mich etwas gewundert. 
Auf der Homepage gibt es eine Vergleichstabelle(Siehe Bild) die höchste 
"Target"-Auflösung die hier angegeben wurde ist 800x600 für den BT815. 
Es steht aber nirgends explizit das auch höhere Auflösungen nicht den 
Spezifikationen entsprechen würden, denn die Zeilen Auflösung von 2048 
Pixel ist nach allem möglich.

Meine Vermutung:
Da eh kein Framebuffer verwendet wird, scheint der einzige limitierende 
Faktor der Pixelclock zu sein, welcher beim BT815 maximal 72MHz sein 
kann. Mit dieser Vermutung habe ich mir die HDMI Timings für die 
Auflösung 1920x1080@30Hz bei 72MHz pixelclock ausgerechnet und siehe da, 
auf meinem Fernseher geht es sogar.

Trotz allem haben die Chips 1MB Grafikspeicher. Hier können z.B. Bitmaps 
abgelegt werden, welche dann auf dem Bildschirm ausgegeben werden 
können. Bei einer Auflösung von 1920x1080 kann kein bildfüllendes Bitmap 
im Grafikspeicher abgelegt werden, ausser wenn man ein Farbformat wählt, 
welches maximal nur 4 Bits pro Farbe verwendet. Aber je nach Anwendung 
braucht man das ja auch nicht unbedingt und man kann ein und das selbe 
Bitmap auch an verschiedenen Stellen wieder verwenden.

von Matthias 🟠. (homa)


Lesenswert?

Hallo Martin,

danke für die Erklärung und das Update. Wollte Dir vorschlagen das ganze 
für die Arduino Welt zugänglich zu machen, aber wie Du ja selber 
schreibst gibt es da eine Entwicklung. Dort, so denke ich, hätte man die 
größte Chance auf eine Verbreitung und sicherlich genug Hobbyleute wie 
mich.
Da ich das ganze nur Hobby mäßig mache staune ich immer wieder was ihr 
so in der Freizeit alles auf die Beine stellt.
Ich hätte ja Lust und Interesse an 2-3 Platinen wenn Du in Serie gehen 
solltest und welche abgeben magst.
Der Chip kann ja auch Sounds/Töne via HDMI ausgeben, klappt das bei Dir 
auch?
Kann CEC auch für HDMI Monitore mit Touchscreen verwendet werden?
LG und guten Rutsch
Matthias

: Bearbeitet durch User
von Purri K. (purri_k)


Angehängte Dateien:

Lesenswert?

Hier noch der Link für das Crowdfunding Arduino Shield
https://www.hackster.io/news/gameduino-3x-dazzler-hdmi-arduino-shield-launches-on-crowd-supply-e42656abff2b

Promo Video dazu:
https://www.youtube.com/watch?v=rBP3xzeS2k4

Matthias H. schrieb:
> Da ich das ganze nur Hobby mäßig mache staune ich immer wieder was ihr
> so in der Freizeit alles auf die Beine stellt.

Ich denke 99% in diesem Forum ist Hobby ;) Und das ist ja auch schön das 
es für Tekki-Leute ein Forum gibt in dem man Projekte vorstellen kann 
oder Fragen stellen kann ;). Man ist ja irgendwie auch stolz auf so 
manches was man baut. Wenn du das "nur" als Hobby machst ist das doch 
super. Solange du Spass dabei hast. Man darf sich nur nicht von den 
Besserwissern entmutigen oder einschüchtern lassen ;).

Matthias H. schrieb:
> Der Chip kann ja auch Sounds/Töne via HDMI ausgeben, klappt das bei Dir
> auch?

Der BT815 selbst hat keine HDMI Ausgang. Es gibt nur ein Pin an den man 
einen kleinen Lautsprecher anschließen kann.
Der HDMI-Encoder(ADV7513) könnte Audio übertragen. Dafür wird die I2S 
Schnittstelle verwendet (Eine Digitale Schnittstelle für Audio) aber da 
der BT815 kein I2S ausgibt und viele Mikrokontroller keine I2S 
Schnittstelle haben, hab ich diese nicht verbunden.
Hab mal im Bild oben grob aufgemalt wie die Platine funktioniert.

Matthias H. schrieb:
> Kann CEC auch für HDMI Monitore mit Touchscreen verwendet werden?

Ich denke das macht oft nicht sehr viel Sinn da CEC recht langsam ist 
mit Antwortzeiten bis zu 1 Sekunde. Einzelne Befehle könnte man sicher 
per Touch übertragen aber "live"-übertragung der touch-Koordinaten ist 
denke ich nicht möglich.

Ein ganz nettes Video zu CEC (Wenn man sich mit CEC recht wenig 
auskennt, so wie ich, bekommt man hier schon eine Idee wie CEC 
grundlegend funktioniert und auf was man sich einlässt):
https://www.youtube.com/watch?v=Q6S2FabX2WA

Auch noch ein Gutes neues Jahr
Grüße Martin

von chris_ (Gast)


Lesenswert?

>viele Mikrokontroller keine I2S
>Schnittstelle haben, hab ich diese nicht verbunden.

Das ist aber schade. Viele Mikrocontroller haben die I2S-Schnittstelle 
und sie wird zunehmend verwendet.
z.B. ESP32 oder verschieden Teensy's.

von Purri K. (purri_k)


Lesenswert?

chris_ schrieb:
> Viele Mikrocontroller haben die I2S-Schnittstelle
> und sie wird zunehmend verwendet.

Ich habe nicht zu tief recherchiert aber doch auf mehreren Blogs gelesen 
das der Arduino UNO der beliebteste ist. Es gibt ein paar Arduinos mit 
den SAM Controllern + ESP32 die I2S können. Man findet auch viele 
Projekte, wenn man speziell danach sucht. Wenn man auf Amazon danach 
sucht hat der Arduino UNO die meisten Bewertungen. So entstand mein 
Eindruck das die beliebten Controller die in den meisten Projekten 
verwendet werden kein I2S können.

Falls ich das Projekt weiter verfolge müsste ich an der Platine ein paar 
Dinge anpassen dann kann ich auch die Schnittstelle rausführen. Ob ich 
daran weiter mache hängt davon ab ob ich einen anderen HDMI Encoder 
finde, welcher es mir erlaubt aus dem max. 72MHz Pixelclock einen 
schnelleren zu machen. 1920x1080@60Hz sollte die Platine können damit 
die meisten Monitore damit klar kommen und sich mehr Leute dafür 
interessieren. Ich habe ein Chip gefunden der das vielleicht könnte aber 
dafür bekomme ich kein Datenblatt und ich habe nur ein Linux Kernelmodul 
gefunden welcher diesen Chip implementiert. Der Entwickler meinte das 
sie auch kein Datenblatt hatten und den Treiber reverse engineeren 
mussten. Aber vielleicht stolpere ich noch zufällig auf was. Dann gibts 
ein Update ;)

von Rudolph R. (rudolph)


Lesenswert?

Interessant, den Thread habe ich verpasst.

c-hater schrieb:
> Aber es genügte immerhin, um eine vollwertige
> OSS-Implementierung des Geraffels zu schaffen. Was sich allerdings mit
> der neuesten Generation der Chips (die dann endlich wirklich interessant
> wird) gleich wieder relativiert. Hier ist das nicht mehr möglich,
> jedenfalls nicht mit den bisher veröffentlichten Informationen. Die
> wollen jetzt offensichtlich das komplette Vendor-LockIn. Genau wie die
> Konkurrenz, die das schon immer durchgesetzt hat...

Kannst Du das mal näher erläutern? Ich habe gerade keine Idee was Du 
damit meinst.
Was fehlt denn jetzt vorgeblich?
Zwei Monate vor Deinem Kommentar, Ende Oktober, war der offizielle 
Release mit Datenblatt und Programming Manual.
Und praktisch am selben Tag habe ich den Teil meiner Library mit den 
BT817/BT818 Funktionen veröffentlicht welchen ich vorher freiwillig 
zurückgehalten habe.

Und man kann immer noch keine Displays mit den Chips kaufen.
Bisher wüsste ich auch nur drei Typen von zwei Herstellern.

Purri K. schrieb:
> Bei einer Auflösung von 1920x1080 kann kein bildfüllendes Bitmap
> im Grafikspeicher abgelegt werden,

Doch, das geht. :-)
Die BT81x können Bilder im ASTC Format anzeigen.
Ich habe mir gerade mal ein Bild in 1920x1080 aus dem Internet gefischt 
und durch den EVE Asset Builder gejagt.
Als ASTC 8x8 hat das 518400 Bytes.
Nur ausprobiert habe ich sowas noch nicht, die verfügbaren Displays 
haben etwas weniger Auflösung. :-)
Theorethisch geht das auch aus dem externen Flash, rein praktisch

Nur das mit dem Pixel-Clock ist etwas seltsam, der Wert von 1 für 
REG_PCLK ist eigentlich nicht zulässig für die BT815.
Und für die BT817/BT818 bedeutet ein Wert von 1 das die zweite PLL für 
den Pixel-Clock verwendet wird.
Das Datenblatt gibt einen einstellbaren Bereich von 20MHz bis 228Mhz für 
die Pixelclock-PLL an mit 96MHz maximal in der Tabelle der 
Beispielwerte.

Ich habe ein Display mit 1024x600 und BT817, für das habe ich mit der 
zweiten PLL 51MHz eingestellt um auf 60Hz zu kommen.

von Purri K. (purri_k)


Lesenswert?

@Rudolph Super Beitrag Danke! Vermutlich greife ich das Projekt doch 
wieder  auf. :) Falls du mehr Ideen hast, freue ich mich diese zu hören.

Rudolph R. schrieb:
> Doch, das geht. :-)
> Die BT81x können Bilder im ASTC Format anzeigen.
> Ich habe mir gerade mal ein Bild in 1920x1080 aus dem Internet gefischt
> und durch den EVE Asset Builder gejagt.
> Als ASTC 8x8 hat das 518400 Bytes.

Oh das klingt sehr interessant. Die anderen Bildformate hatte ich 
ignoriert weil ich nicht wusste was dahinter steckt und nur die Bits per 
Pixel gesehen hatte. ASTC 8x8 wird mit 2,56 Bits per Pixel angegeben. 
Aber man kann wohl damit noch recht ansehnliche Bilder anzeigen. Da es 
aber ein komprimiertes Format ist, kann man es nicht so einfach als 
Framebuffer verwenden.

Der Hintergrund warum ich gerne ein unkomprimiertes Bildformat haben 
wollte ist, da man doch recht limitiert ist, was die Anzahl der 
anzuzeigenden Elemente per Frame angeht. Mit Text kann man den Puffer 
z.B sehr schnell auffüllen. Bei einer Auflösung von 1920x1080 sieht das 
recht verlassen aus wenn man nur einen kurzen Absatz Text schreiben kann 
;). Habe aber nachträglich gesehen das es ein spezielles Text-Element 
gibt, welches nur zum Anzeigen von Text gedacht ist. Das habe ich aber 
noch nicht ausprobiert.

Könnte man ein Bitmap über den ganzen Bildschirm zeichen, kann man 
direkt in den Grafikspeicher in dem das Bitmap liegt reinzeichnen. Somit 
wäre man etwas freier was das Zeichen von Elementen angeht. Mit dem L2 
Format sollte es aber gehen. Man hat sogar 4 Graustufen ;)

Rudolph R. schrieb:
> Nur das mit dem Pixel-Clock ist etwas seltsam, der Wert von 1 für
> REG_PCLK ist eigentlich nicht zulässig für die BT815.

Ja ;) genau das hat mich auch etwas verwirrt. Da dieser Wert aber im 
Datenblatt Clock Devisor genannt wird dache ich, der Wert von 1 sollte 
möglich sein somal ja in der Zeile auch die Pixel Clock Werte dafür 
angegeben werden. Vermutlich ist es der Standard Wert und wurde deshalb 
nicht dazu geschrieben. Ich verwendet jedoch den Wert 1 und es scheint 
das zu machen was in der obersten Zeile der Tabelle angegeben wurde.

Rudolph R. schrieb:
> Das Datenblatt gibt einen einstellbaren Bereich von 20MHz bis 228Mhz für
> die Pixelclock-PLL an mit 96MHz maximal in der Tabelle der
> Beispielwerte.

Diese Info finde ich sogar noch interessanter. Da ich den BT815 verwende 
habe ich das Datenblatt für den BT817 garnicht durchgelesen. Mit dem 
BT817 könnte man eine Bildwiederholrate von 60Hz bei 1920x1080 
realisieren. Das macht das Projekt denke ich auch wieder sinnvoller. 
Denn 30Hz bei 1920x1080 wird nicht immer unterstützt. Das mit den 96MHz 
verstehe ich auch noch nicht so ganz. Ich habe den Teil gerade nur kurz 
überflogen. Ich denke aber das man die angegeben Pixelclocks schon 
einstellen kann. Ich muss mir das nochmal genauer durchelesen aber es 
hört sich so an als ob mein Vorhaben mit dem BT817 möglich sein müsste. 
Ich glaube der BT817 ist Pin-Kompatibel zum BT815. D.h ich könnte mir 
einfach mal den anderen Chip bestellen und umlöten.

Was ich mir auch noch zum Projekt überlegt hatte:
Die Kapazitiven Touch Varianten der Chips verwenden eine I2C 
Schnittstelle um mit dem Touch Sensor zu kommunizieren. Ich habe mir mal 
angesehen was so ein Sensor zurückliefern muss. Das ist garnicht so 
viel. Meine Idee war einen Touch Sensor mit einem I2C Slave zu 
simulieren. Somit könnte man u.U. Koordinaten und Tasten Events einer PC 
Maus als Touch Information verwenden. Dann kann man die coolen TAGs und 
alle anderen Gadgets die der Chip bereit stellt verwenden auch wenn man 
nur einen Fernseher angeschlossen hat.

von Rudolph (Gast)


Lesenswert?

Naja, die BT81x als Framebuffer zu "misbrauchen" ist wohl nicht die 
geschickteste Idee, damit verliert man ja praktisch jeden Vorteil den 
die Dinger bieten.
Dafür müsste es doch bessere Lösungen geben.

Stimmt schon, die Idee 1920x1080 zur Verfügung zu haben ist ziemlich 
übel für das was die Chips eigentlich machen sollen. :-)
Ich bin schon gespannt wie das mit 1280x1024 auf 10.1" ausgehen wird.
Aber ein paar von den GUIs die ich bisher auf 7" mit 800x480 hatte waren 
schon erheblich voll gestopft, im einfachsten Fall wird das entspannter 
zu bedienen, weil die Elemente kompatibler für dicke Finger werden indem 
sie größer sind und weiter auseinander liegen.
Nett ist auch, dass die eingebauten Fonts durch die höhere Auflösung 
kleiner werden. #26 ist mir manchmal noch zu groß und die größten Fonts 
nutze ich praktisch gar nicht.


Was mir noch gefehlt hatte war die Info welcher Chip da überhaupt zum 
Einsatz kommt, aber in der graka.png steht das es ein ADV7513 ist.

Damit ist die Frage ob ich sowas selber löten könnte schon beantwortet:
"This product implements technologies licensed by HDMI.org. Customers 
must be HDMI adopters listed at HDMI.org to purchase it."

Sprich, keine Chance an die Chips heran zu kommen.
Damit würde es dann auch nicht so richtig viel bringen wenn das Projekt 
Open Source wäre.

von Purri K. (purri_k)


Lesenswert?

Ich bin keine Mitglied von HDMI.org. Das kann ich mir nicht leisten :D. 
Ich bin da recht naiv gewesen und habe die Chips einfach als 
Privatperson gekauft;). Ist die Lizenzgebühr nicht schon im Preis 
enthalten? Ich kenne mich da nicht so aus.
Du bekommst diese Chips bei rsonline-privat ohne Probleme. Ich denke 
wenn die diese Chips in Ihrem Privatpersonen Shop verkaufen, hat das 
schon Hand und Fuß.
https://www.rsonline-privat.de/Products/ProductDetail/HDMI-Ubertrager-ADV7513BSWZ-fur-DDR-HDMI-ITU656-RGB-SPDIF-Stereo-LPCM-YCbCr-8-Kanal-LQFP-64-Pin-8023626
Vielleicht schlagen RS Components die HDMI Gebühr auf den Preis. Ich 
denke am Ende zählt für HDMI.org nur das für jede Komponente die diese 
Technologie verwendet auch entsprechend dafür bezahlt wird. Wer das 
macht, ist denke ich egal. In diesem Fall ist vermutlich RS-Components 
Mitglied von HDMI.org.
Eine andere Überlegung von mir: Man kann man ja auch einen DVD-Player 
kaufen der diesen Chip enthält ohne das man Mitglied von HDMI.org sein 
muss.

: Bearbeitet durch User
von Rudolph (Gast)


Lesenswert?

Okay, also man kommt doch ran, schön.
Und mit der genauen Bezeichnung habe ich jetzt auch welche bei EBay 
gefunden und zumindest Einträge bei Amazon.

Interessant.
Aber eine echte Anwendung fällt mir dafür auch gerade nicht ein.
Aber, hust, dafür habe ich vielleicht auch schon zu viele Displays in 
meiner Sammlung. :-)

von Purri K. (purri_k)


Lesenswert?

Rudolph R. schrieb:
> Nur das mit dem Pixel-Clock ist etwas seltsam, der Wert von 1 für
> REG_PCLK ist eigentlich nicht zulässig für die BT815.
> Und für die BT817/BT818 bedeutet ein Wert von 1 das die zweite PLL für
> den Pixel-Clock verwendet wird.
> Das Datenblatt gibt einen einstellbaren Bereich von 20MHz bis 228Mhz für
> die Pixelclock-PLL an mit 96MHz maximal in der Tabelle der
> Beispielwerte.

Habe jetzt etwas genauer über das Datenblatt geschaut. Wenn du diesen 
hohen Pixelclock verwenden möchtest, musst du in den EXTSYNC mode 
umschalten. So wie ich das verstehe, hat man auch nur in diesem Modus 
die Möglichkeit REG_PCLK_2X einzuschalten. REG_PCLK_2X erlaub, das pro 
Systemclock Zyklus 2 Pixel an den EXTSYNC Block geschickt werden. Ich 
denke der EXTSYNC Block erleubt einfach eine etwas andere Art und Weise 
wie die Pixel weiter verarbeitet werden -> das z.B. die 2 Pixel pro Takt 
funktionieren. aber das ist denke ich auch nicht so wichtig was da 
intern passiert. Das ist Magic die nur der Hersteller genau kennt.

Im Datenblatt steht auch, das man für REG_HSIZE, REG_HOFFSET, 
REG_HCYCLE, REG_HSYNC0, REG_HSYNC1 nur gerade Zahlen verwenden darf wenn 
man in diesem Modus arbeitet. Das klingt für mich auch logisch, denn 
wenn man immer 2 Pixel auf einmal verarbeitet, möchte man auch intern 
gerne das die Pixel genau aufgehen.

: Bearbeitet durch User
von Rudolph R. (rudolph)


Lesenswert?

Purri K. schrieb:
> Habe jetzt etwas genauer über das Datenblatt geschaut. Wenn du diesen
> hohen Pixelclock verwenden möchtest, musst du in den EXTSYNC mode
> umschalten.

Ja, mit REG_PCLK = 1 wird die zweite PLL verwendet die man vorher
passend konfigurieren muss.

Man könnte die Register von Hand konfigurieren.
Aber zumindest als ich mir das im Draft Datasheet angesehen habe war das 
eher schwach beschrieben und schlecht richtig hinzubekommen.
Dafür gibt es aber CMD_PCLKFREQ was ich mit EVE_cmd_pclkfreq() 
implementiert habe.
Dem teilt man mit welche Frequenz man haben möchte und es antwortet mit 
der Frequenz die es eingestellt hat.

Ich habe in der EVE_config.h aktuell drei Profile für BT817 drin.
Zum Beispiel "BT817_TEST3".
#define EVE_PCLK (1L)
#define EVE_PCLK_FREQ (51000000L)

Was damit passiert habe ich in EVE_init() in der EVE_commands.c.

> So wie ich das verstehe, hat man auch nur in diesem Modus
> die Möglichkeit REG_PCLK_2X einzuschalten. REG_PCLK_2X erlaub, das pro
> Systemclock Zyklus 2 Pixel an den EXTSYNC Block geschickt werden.

Das REG_PCLK_2X habe ich noch nicht benutzt, müsste ich eigentlich mal 
ausprobieren.
Eigentlich benötigt man das vor allem wenn der Pixel-Clock höher wird 
als der Systemtakt.
Aber das 1024x600 Display das ich hier habe benötigt "nur" 51MHz für 
60Hz.

von Matthias 🟠. (homa)


Lesenswert?

Purri K. schrieb:
> Crowdfunding Arduino Shield

Das macht aber für $39 auch nur die 1280x720 (720p) over HDMI (as well 
as audio)

Ich habe das hier bei der Ankündigung von dem neuen PiPico entdeckt:

https://github.com/Wren6991/picodvi

bei dem Preis für den 2040 chip wird das spannend
aber macht auch nur 640x480 RGB565 image, 640x480p 60 Hz DVI mode. 264 
kB SRAM, 2x Cortex-M0+, system clock 252 MHz

von Rudolph R. (rudolph)


Lesenswert?

c-hater schrieb:
> Was sich allerdings mit der neuesten Generation der Chips (die dann
> endlich wirklich interessant wird) gleich wieder relativiert.
> Hier ist das nicht mehr möglich, jedenfalls nicht mit den bisher
> veröffentlichten Informationen.
> Die wollen jetzt offensichtlich das komplette Vendor-LockIn.

C-Hater?
Ich wüsste immer noch gerne was Du damit sagen willst.
Wenn Du das irgendwo aufgeschnappt hast, gib mal bitte einen Link.
Aus meiner Perspektive ist das kompletter Unsinn.

von Purri K. (purri_k)


Lesenswert?

@Rudolph ich denke es ist nicht so wichtig. Ich habe beschlossen auf 
Kommentare zu antworten, wenn sie inhaltlich bereichernd sind. Und die 
anderen zu ignorieren. Personen die wirklich an dem Thema interessiert 
sind werden auch Kommentare mit Substanz scheiben oder auch interessiert 
Fragen zum Thema stellen. Ich denke es ist nicht so wichtig, da du und 
ich, wir haben uns mit dem Thema wirklich auseinadergestetzt, 
Datenblätter gelesen und tatsächlich auch etwas kreiert. Ich denke wir 
können darauf vertrauen das wir wissen was wir tun ;). Und falls doch 
mal etwas nicht ganz klar ist, gibt es hier auch viele nette Menschen im 
Forum die auch wissen was sie tun und gerne weiter helfen ;)

: Bearbeitet durch User
von Purri K. (purri_k)


Lesenswert?

@Matthias das ist ein nettes Projekt. Das würde mir sicher auch Spass 
machen. Ich kann mir gut vorstellen wie er sich gefreut halt, als er 
über die normalen IO-Pins TMDS erzeugt hat. Mir fehlt da leider noch das 
passende Oszi dazu. Muss mal mein Chef fragen wie es mit meinem 
Weihnachtsbonus aussieht. :D

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.