Forum: Mikrocontroller und Digitale Elektronik STM32 liest zu langsam ein


von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

STM32 liest zu langsam ein. Unsicher, ob ich als Interpunktion ein 
Ausrufezeichen, oder ein Fragezeichen setzen soll. :)

STM32F103VE @ 72MHz
Eingangssignal: 5VDC
Eingansteiler 1:15
Verstaerkung : 10x
Ausgangsignal: 3,3VDC

Wenn ich Port A0 als digitalen Eingang beschalte (GPIO_Mode_IPD, 
GPIO_Mode_IPU oder GPIO_Mode_IN_FLOATING aendert nichts am Problem), 
kann ich das Eingangssignal nur dann eindeutig einlesen, wenn ich nach 
dem Umschalten der HC4051 ca. 20usec warte.
Tue ich das nicht, meint die Software:
- dass an keinem Eingang das Signal anliege
- oder dass an einem falschen Eingang das Signal anliege
- oder dass an 2 benachbarten Eingaengen gleichzeitig das Signal anliege

Die MUX werden via SPI (8Mbps) und 74HC595 angesteuert.
Die Verbindung der Testkarte mit der STM32-Karte erfolgt durch ein 50cm 
langes Flachkabel, wobei SPI (MOSI & CLK) durch eine getrennte RS485 
Leitung übertragen wird.
Alle Signale kommen astrein daher.

Die Rechnerei dauert sehr lange (es werden mehrere Testkarten 
ausgewertet). Wenn es mir gelingen würde, diese 20usec zu eliminieren, 
könnte ich mehrere Sekunden einsparen.

SPI laeuft mit DMA und mit 8Mbps, obwohl das Datenblatt der RS485 
Bausteine nur 5 MBps erlaubt. :)
Also von der Hardware her kann ich nichts mehr machen.

Wieso ich diese 20usec einlegen muss, kann ich mir einfach nicht 
erklaeren. Hat jemand von Euch dafür eine Erklaerung?

Dank im voraus.

von (prx) A. K. (prx)


Lesenswert?

Diese MCP6G01 wurden nicht für Wettrennen gebaut. Eine 3dB-Bandbreite 
von 350kHz (~3µs) bei 10facher Verstärkung... Und wenn du deren GSEL 
auch noch dynamisch schalten solltest, dann sind 10-12µs fällig.

von Mehmet K. (mkmk)


Lesenswert?

Servus A.K.
Der MCP6G01 war anfaenglich auch bei mir der Kandidat, auf den ich 
misstrauisch blickte. Aber ich komme zu keinem endgültigen Urteil, weil 
ich weit unter den Limits des Datenblatts arbeite (oder zu arbeiten 
glaube, weil ich irgendwas im Datenblatt missinterpretiere).
Die GSEL werden nicht dynamisch geschaltet. Sie werden bei der 
Initialisierung gesetzt und bleiben bis zum Schluss des Scans in dieser 
Einstellung.

von Mehmet K. (mkmk)


Lesenswert?

Habe nochmals (weiss gar nicht mehr zum wievielten Male) nachgemessen:
Der Scan, ob ein Signal an einem der 128 Eingaenge vorliegt, wird in 4ms 
durchgeführt.
Davon entfallen für die Warteschleife ca. 2,5ms.
Wenn auf diese verzichte, komme ich auf eine Scan-Dauer von 1,5ms.
1,5ms / 128 -> ca. 85kHz.
Also weit unter dem Limit des MCP6G01.

Irgendwo mache ich irgendwas falsch ..... :(

von Mehmet K. (mkmk)


Lesenswert?

Kleiner Nachtrag: 85kHz kommen nur dann zustande, wenn an allen 
Eingaengen ein Signal anliegt.
Wenn nur an einem Eingang ein Signal anliegt, liegt die Frequenz 
natürlich noch viel tiefer. Aber auch hier habe ich dasselbe Problem.

von (prx) A. K. (prx)


Lesenswert?

Wie sieht denn die Ansteuerung des HC595 aus? Der braucht ja einen 
Latch-Takt. Gelten die 20µs Wartezeit ab diesem Taktsignal?

Einen Oszi hast du keinen? Denn das schreit geradezu danach.

von (prx) A. K. (prx)


Lesenswert?

Mehmet Kendi schrieb:

> Wenn nur an einem Eingang ein Signal anliegt, liegt die Frequenz
> natürlich noch viel tiefer. Aber auch hier habe ich dasselbe Problem.

Diese Rechnung bringt dich nicht weiter, denn im Grunde ist die 
Bandbreitenangabe im Datasheet für dein Problem nicht entscheidend. 
Entscheidend ist vielmehr die Pulsantwort auf ein sich änderndes 
Eingangssignal, aber die steht nur für GSEL und CS drin, nicht für das 
Analogsignal. Wenn sich nach der Messzeit ewig nichts rührt, dann sinkt 
die Grundfrequenz des Signals zwar, aber dafür kannst du dir nichts 
kaufen.

Zur Pulsantwort gibt es als Indiz die Slewrate, mit 0,5V/µs bei G=1 und 
2,3V/µs bei G=10. Wenn deine kaskadierten MCPs zusammen G=10 haben, dann 
hat einer davon G=1 und braucht für einen Spannungshub von 3V immerhin 
solide 6µs.

Wobei dabei auch noch offen ist, auf welchen Spannunghub sich dieser 
SR-Wert bezieht. Bei der Bandbreitenangabe steht es dran, 100mVpp am 
Ausgang. Die hier interessantere Grosssignalbandbreite könnte 
OPA-typisch weit darunter liegen.

von (prx) A. K. (prx)


Lesenswert?

Hoppla, da steht sie ja, in Table 4-1. Die full swing Bandbreite bei G=1 
liegt bei nur 29kHz bei Vdd=5,5V. Bei Vdd=3,3V CMOS-typisch 
wahrscheinlich entsprechend weniger.

von Mehmet K. (mkmk)


Lesenswert?

A. K. schrieb:
> Gelten die 20µs Wartezeit ab diesem Taktsignal?

Yep, nachdem alle HC595 ihre Werte ausgegeben haben, muss ich 20us 
Daeumchen drehen.

A. K. schrieb:
> Zur Pulsantwort gibt es als Indiz die Slewrate, mit 0,5V/µs bei G=1 und
> 2,3V/µs bei G=10. Wenn deine kaskadierten MCPs zusammen G=10 haben, dann
> hat einer davon G=1 und braucht für einen Spannungshub von 3V immerhin
> solide 6µs.

Stimmt. Du hast recht. Au Backe, das tut weh ....
Ich muss nochmals über die Bücher; herzlichen Dank für den Fingerzeig.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Bei AD und Port A0 gehen bei mir immer die Alarmglocken, da steht doch 
was im Errata?

von (prx) A. K. (prx)


Lesenswert?

Mag sein, aber derzeit fährt er den erklärtermassen digital.

von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

Waere schon zum Schreien, wenn ich diese Arbeit einstampfen müsste.

von Mehmet K. (mkmk)


Lesenswert?

A.K. ich mach für heute Schluss.
Ich gebe Dir morgen 'ne Antwort. Danke nochmals für Deine Hilfe.

von (prx) A. K. (prx)


Lesenswert?

Nun ist der Kram ja analog konzipiert, warum betreibst du ihn digital, 
mit grenzwertiger Aussteuerung einer kaskadierten analogen 
Verstärkerstufe, trotz 5Vpp am Eingang und 3,3Vpp am Ausgang? Die Dinger 
sind ja gegengekoppelte Verstärker, keine Komparatoren.

Ist das Szenario ein realistisches, oder ist das ein erster Test unter 
vereinfachten extremen Bedingungen, d.h. mit digitalem Testpattern statt 
den späteren Analogsignalen an den Eingängen?

Aus der bisherigen Analyse ergibt sich ja, dass dein Problem im
Grosssignalverhalten der MCPs zu suchen ist. Bei kleiner Amplitude sind
sie schneller. Wenn du also sicherstellen kannst, dass der Ausgang des
zweiten MCPs im Bereich weniger 100mVpp bleibt, vorzugsweise
um Vdd/2 herum, dann ist die Sache möglicherweise zu retten. Es sieht ja 
sowieso so aus, als ob du eigentlich per ADC messen wolltest.

Aber zum Bild: Ohne Test gleich in die Massenproduktion zu gehen ist
zwar ein moderner vollendet rationalisierter Ansatz - aber nur wenns
auch so funktioniert wie geplant.

von Mehmet K. (mkmk)


Lesenswert?

A. K. schrieb:
> Ohne Test gleich in die Massenproduktion zu gehen ...

Zu meiner Verteidigung: Ist keine Massenproduktion, mehr eine 
Kleinserie. Desweiteren musste das Projekt innerhalb von 3 Monaten 
umgesetzt werden. Da hatte ich keine Zeit um gross angelegte Tests 
durchzuführen. Hinzufügen muss ich noch, dass ich bis heute bei solchen 
Sprüngen ins kalte Wasser noch keine grösseren Vögel abgeschossen habe. 
Vermutlich mehr Glück als Verstand :)

A. K. schrieb:
> Nun ist der Kram ja analog konzipiert, warum betreibst du ihn digital

Gute Frage. Eine (ehrliche) Antwort darauf habe ich nicht. Vermutlich 
habe ich vor Uebermüdung und lauter Baeumen den Wald nicht mehr gesehen. 
Das Geraet hat in der Menü-Führung überall die Wahl zwischen analog und 
digital, wobei die Software auch tatsaechlich dementsprechend misst. 
Wieso ich Depp überhaupt eine digitale Möglichkeit eingefügt habe und 
mich erst noch auf die Digitale festgebissen habe ... ich weiss es 
nicht.
Jetzt, wo ich analog mit 1x Verstaerkung messe, dauert die Messung einer 
Testkarte nicht mehr 700ms, sondern nur noch 20ms.

A.K. wenn Du mir ein Bild von Dir schickst, will ich gerne in meinem 
Office einen kleinen Schrein einrichten, wo ich Dein Bild jeden Tag mit 
frischen Blumen, Früchten  und Raeucherstaebchen schmücken will. :)

Nochmals Danke, vielen Dank!

von 3phg7lqz (Gast)


Lesenswert?

Die Clamping-Dioden gehören bestimmt auf die andere Seite des 
Längswiderstandes.

von Mehmet K. (mkmk)


Lesenswert?

Heute das Geraet beim Kunden abgegeben.
Nach 2 Stunden Dauertest: rundum laechelnde Gesichter.
Fehlen zwar noch so "Kleinigkeiten" wie Ethernet-, VGA Monitor- und 
USB-Anschluss ... aber was soll's.

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.