Forum: Mikrocontroller und Digitale Elektronik STM32F1 was bewirkt max. output speed?


von Stefan F. (Gast)


Lesenswert?

Beim STM32F1 kann ich für jeden I/O Pin im register GPIOx_CRx die "max. 
output speed" wahlweise auf 2, 10 oder 50Mhz einstellen.

Ich hoffe an, dass automatisch Wait States eingefügt werden, wenn mein 
Programm versucht, schneller auf den Pin zuzugreifen. Ist das der Fall?

In der Application Note 8849 habe ich dazu noch was anderes gefunden:
1
The rise time, fall time and maximum frequency are configurable 
2
using the GPIOx_OSPEEDR configuration register. Such adjustment 
3
has an impact on the EMI (electromagnetic interferences) and SSO 
4
(simultaneous switching output) due to higher switching current peak.

Allerdings hat der STM32F1 kein GPIOx_OSPEEDR Register, insofern bin ich 
unsicher, ob dieser Text auf den STM32F1 überhaupt zutrifft..

Nach keinem Verständnis hängt die "rise time" und "fall time" ganz 
erheblich von der Stromstärke und der Last-Kapazität ab. Wenn der Chip 
nun diese Zeiten vergrößern will, muss er die Ausgänge mit weniger Strom 
antreiben. Dass dieser Parameter einstellbar wäre und welche Konkreten 
Werte das dann sind, wird im Datenblatt und im Referenz-Handbuch aber 
mit keinem Sterbenswörtchen erwähnt.

Weiß irgend jemand, was dieser "max. output speed" Parameter im 
GPIOx_CRx Register wirklich bewirkt, oder wo man das nachlesen kann?

von Martin B. (ratazong)


Lesenswert?

Bei dem STM32f103 habe ich mal an den Ausgängen gemessen (ohne 
zusätzliche Lastkapazität). Die Slew Rate des Ausgangs ändert sich, wenn 
ich die Output speed anders konfiguriere. Wie die interne Schaltung ist, 
weiss ich allerdings nicht. Der Maximalstrom ändert sich nach DB nicht.

Wait States werden nicht eingefügt beim Port Zugriff. Du kannst auch bei 
Speed reduction sehr schnell toggeln. High oder Low werden nach Oszi 
dann nicht mehr erreicht, es schwabbelt so in der Mitte herum.

Die Einstellung läuft über die normalen PORT Konfigurationsregister 
GPIOx_CRL GPIOx_CRH, es gibt kein Extra Register für die speed beim F1

von Stefan F. (Gast)


Lesenswert?

Vielen Dank, das hilft mir weiter.

von A. B. (Gast)


Lesenswert?

Martin B. schrieb:
> Bei dem STM32f103 habe ich mal an den Ausgängen gemessen (ohne
> zusätzliche Lastkapazität). Die Slew Rate des Ausgangs ändert sich, wenn
> ich die Output speed anders konfiguriere. Wie die interne Schaltung ist,
> weiss ich allerdings nicht. Der Maximalstrom ändert sich nach DB nicht.
>
> Wait States werden nicht eingefügt beim Port Zugriff. Du kannst auch bei
> Speed reduction sehr schnell toggeln. High oder Low werden nach Oszi
> dann nicht mehr erreicht, es schwabbelt so in der Mitte herum.

Genau, die Einstellung

MODEy[1:0]: Port x mode bits (y= 0 .. 7)
01: Output mode, max speed 10 MHz.
10: Output mode, max speed 2 MHz.
11: Output mode, max speed 50 MHz.

kann offensichtlich nichts mit dem internen Buszugriff zu tun haben, 
denn sonst müsste dort ja Bezug auf einen der internen Takte genommen 
werden.

Außerdem z. B. im Datenblatt STM32F103x8, Table 37. I/O AC 
characteristics
ist genau ausgeführt, wie die Schaltzeiten in Abhängigkeit von MODEy
sind. Diese Einstellung wirkt also ausschließlich auf die 
Ausgangstreiber.

von STM32 (Gast)


Lesenswert?

Die OutputSpeed solltest du so langsam wie möglich wählen. Damit kannst 
du schonmal das ein oder andere Problem im EMV-Labor besänftigen.

Wenn du höere Geschwindigkeiten zulässt, dann hast du höhere 
Anforderungen an das Platinendesign, Impedanzmatching etc.pp.

Der Output-Speed hat keinerlei Einfluss auf deinen Programmablauf, da 
wird nichts automatisch verlangsamt oder durch Delays verzögert. Du bist 
selbst dafür verantwortlich dass dein Programm mit langsameren 
Schaltflanken zurecht kommt.

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.