Cortex: wozu Taktangabe für GPIO

Gast #3090595
Lesenswert?

Kan schrieb:
> Jim Meba schrieb:
>> Martin schrieb:
>>> Warum muss man beim ARM (Cortex M3) beim Konfigurieren der GPIOs
>>> den Takt angeben?
>>
>> Von welchem Cortex M3 reden wir? Die GPIOs werden von den Lizenznehmern
>> unterschiedlich implementiert.
>
> http://de.wikipedia.org/wiki/Hern%C3%A1n_Cort%C3%A9s

Danke für den schnellen Link ;-)

Ich habe mit STM32F107 angefangen und habe noch keinen wirklich guten
Überblick über die unterschiedlichen anderen Implementierungen (NXP, 
TI).

@ A.K.
Vielen Dank.

Gruß
#3090618
Lesenswert?

soweit ich weiß kann man damit leider nicht die Flankensteilheit 
einstellen, sondern lediglich, mit welcher Taktrate das GPIO Modul 
getaktet wird. Das hat zur Folge, dass sich die Pins nur mit dieser 
Geschwindigkeit ändern lassen.
D.h. du kannst zwar schneller in die GPIO Register schreiben, jedoch 
werden die Änderungen niemals so schnell ausgegeben.

Ich bin mir dabei aber selbst nicht komplett sicher - korrigiert mich, 
wenn ich falsch liege.

Christian
#3090647
Lesenswert?

Christian Aurich schrieb:
> soweit ich weiß kann man damit leider nicht die Flankensteilheit
> einstellen, sondern lediglich, mit welcher Taktrate das GPIO Modul
> getaktet wird.

Da diese Werte pro Pin definiert werden, nicht pro GPIO-Modul, scheidet 
das aus. Der Modultakt entspricht den APB-Takt, an dem das Modul hängt.

Zudem müssten diese Takte (2/10/50MHz) intern überhaupt irgendwie 
vorliegen, und dafür spricht nichts. Auch das in der Referenz 
aufgeführte Diagramm der Taktversorgung zeigt davon nichts.

Das Datasheet wiederum definiert ausdrücklich ein unterschiedliches 
Zeitverhalten, abhängig von der Pinkonfiguration. Nämlich 
Anstiegs/Abfallzeiten von max 5-12ns // 25ns // 125ns (F10x).
Gast #3095442
Lesenswert?

Torsten S. schrieb:
> An meinem Discovery habe ich ein schönes buntes GLCD mit dem SSD1963
>
> Controller via FSMC angepappt. Mit ca. 15cm langen fliegenden Strippen.
>
>
>
> Das geht auch, aber nicht wie in den Beispielen beschrieben mit
>
> 50/100MHz sondern nur wenn ich GPIO_Speed_2MHz setze.

Ich benutze ebenfalls einen STM32F103VC6 mit intern 72Mhz auf einem 
MiniSTV32 Board. Das 3.5" TFT-Display (HY35A) ist auch mit einem SSD1963 
Controller ausgestattet und schmiert bei mehr als 10Mhz an dem FSMC 
(GPIO) Ports an unterschiedlichsten Programmstellen ab. Ganz besonders 
wenn das Display viele schnelle Änderungen darstellen (also auch 
übertragen) muss, fliegt es weg. Ein Display Reset mit folgendem 
LCD_Init() macht das Display wieder hell (Background LEDs) und zeigt 
wieder an.
Aus dem Datenblatt des SSD1963 bin ich noch nicht schlau geworden, was 
das Timing des SSD1963 im Parallelbetrieb angeht. Ich habe die GPIO's 
der FSMC Ports von 50Mhz auf 10Mhz gestellt und damit scheint es zu 
funktionieren.
erstaunlich finde ich, dass das an dem Board ursprünglich gelieferte 
Display (HY32D) mit einem SSD1289 ausgestattet zu sein. Der jedenfalls 
funktioniert mit 50Mhz GPIO Speed einwandfrei, was gegen die 
Empfindlichkeit des SSD1963 spricht. Leider habe ich noch keine 
preiswerten 5" und 7" Displays mit dem SSD1289 oder ILI9320 finden.

Vy 73 de Gerd
#3097016
Lesenswert?

DD4DA schrieb:
> erstaunlich finde ich, dass das an dem Board ursprünglich gelieferte
> Display (HY32D) mit einem SSD1289 ausgestattet zu sein. Der jedenfalls
> funktioniert mit 50Mhz GPIO Speed einwandfrei, was gegen die
> Empfindlichkeit des SSD1963 spricht. Leider habe ich noch keine
> preiswerten 5" und 7" Displays mit dem SSD1289 oder ILI9320 finden.

Gut zu wissen.

Ein anderes 3.2 Zoll Display (SSD1289) aus dem fernen Osten zeigt bei 
mir nämlich das gleiche Verhalten. Obwohl ich zur Initialisierung 
zunächst den Takt stark gebremst und viele Wartezyklen eingefügt habe 
komme ich über 2MHz nicht hinaus. Bei 10MHz reicht es die 
Schreibtischlampe ein/aus zu schalten dann ist dunkel.

Ohne FSMC, also mit Portpins wackeln, funktioniert zuverläßig. 
Allerdings gefühlte 10x langsamer.
Moderator (Firma: Titel) Persönliche Seite #3097318
Lesenswert?

Martin schrieb:
> Warum muss man beim ARM (Cortex M3) beim Konfigurieren der GPIOs
> den Takt angeben?
Prinzipiell ist es einfach so, dass in den IO-Zellen eben nicht nur 
irgendwelche Treiber sitzen, sondern dass dort für viele Funktionen 
schon die erste Signalvorbereitung für den Prozessor stattfindet (z.B. 
Flankenerkennung für Pinchange-Interrupts usw.). Und große ASIC-Designs 
lassen sich nur mit synchroner (=getakteter) Beschreibung durchgehend 
verifizieren und simulieren.

BTW: Deshalb tauchen "asynchrone" Prozessordesigns alle 5-10 Jahre auf 
und verschwinden nach kurzer Diskussion wieder von der Bildfläche...
Zuletzt 2006:
http://www.tecchannel.de/test_technik/news/446217/hot_chips_taktloser_arm_prozessor/
#3097483
Lesenswert?

Bronco schrieb:
> Der Takt ist beim AVR fest verdrahtet, beim ARM selektierbar.

In der Frage der IO-Taktung ist von ARM nicht vorgegeben, das definieren 
die Chiphersteller wie NXP, TI, ST selbst und dementsprechend 
unterscheiden sich die Chip in dieser Frage.

Bei den STM32 ist der Takt vom GPIO-Modul m.W. identisch mit dem Takt 
des IO-Busses (APB) an dem sie hängen. Der ist zwar wählbar, aber das 
betrifft dann auch die anderen IO-Module am betreffenden APB.
Persönliche Seite #3097651
Lesenswert?

Torsten S. schrieb:
> DD4DA schrieb:
>> erstaunlich finde ich, dass das an dem Board ursprünglich gelieferte
>> Display (HY32D) mit einem SSD1289 ausgestattet zu sein. Der jedenfalls
>> funktioniert mit 50Mhz GPIO Speed einwandfrei, was gegen die
>> Empfindlichkeit des SSD1963 spricht. Leider habe ich noch keine
>> preiswerten 5" und 7" Displays mit dem SSD1289 oder ILI9320 finden.
>
> Gut zu wissen.
>
> Ein anderes 3.2 Zoll Display (SSD1289) aus dem fernen Osten zeigt bei
> mir nämlich das gleiche Verhalten. Obwohl ich zur Initialisierung
> zunächst den Takt stark gebremst und viele Wartezyklen eingefügt habe
> komme ich über 2MHz nicht hinaus. Bei 10MHz reicht es die
> Schreibtischlampe ein/aus zu schalten dann ist dunkel.


Das hat doch nix mit dem Display zu tun, sondern mit der Terminierung. 
Wenn man mit so scharfen Flanken um sich wirft, sollte man wissen, was 
man tut! Wellenwiderstand
Gast #3097663
Lesenswert?

Denke mal, daß man damit die Treiberstärke der Pins einstellen kann.
Je nach angeschlossener Leitung muß ja eine mehr oder weniger große 
Kapazität umgeladen werden. So kenn ich das von FPGAs. Es macht mich 
jedoch stutzig, daß hier eine Frequenz angegeben wird ohne weitere 
elktrische parameter oder Bedingungen anzugeben.
Gast #3097882
Lesenswert?

Lothar Miller schrieb:
>> Die GPIOs des AVR haben auch einen Takt
> Da hatte Atmel bei den ersten AVR noch ein sporadisches Problem mit
> nicht einsynchronisierten Eingängen. Seit sie 2 Sync-Flipflops verwenden
> ist der Fehler weg... ;-)

Wieso wundert es mich überhaupt nicht, daß Du gleich wieder das Thema 
"Einsynchronisieren" aufgreifst... ;^)
Ohne Witz: bei dem Begriff "SYNCHRONIZER" mußte ich gleich an Dich 
denken...
Gast #3097900
Lesenswert?

Ich habe vor einiger Zeit mal die Flankensteilheit untersucht, der 
Unterschied war nur sehr geringfügig, jedoch messbar! Allerdings habe 
ich an einem offenen Pin gemessen. Das bringt's wohl eher nicht ohne 
Lust zu messen.

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