Forum: Mikrocontroller und Digitale Elektronik STM32 Problem SPI und Tasten multiplexen


von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Hallo,
da hat sich hier ein interessantes Problem ergeben.
Mit einem STM32F205 (LQFP64) steuere ich per SPI1 ein 240x240 LCD an und 
lese eine kleine Tastenmatrix (3x3) ein.
Die Zeilen werden eingelesen und die Spalten per Opendrain auf LOW 
gelegt.

Das funktioniert wunderbar und ich hab mir eine kleine GUI geschrieben.
Als das fertig war wollt ich per SPI2 einen ADC einlesen.
Aber halt, auf einmal reagieren die Tasten von Spalte 1 und 2 gleich?!
Ich dacht der SPI stört rein, daher die Pullups der Matrix auf 1k 
verstärkt, Fehler bleibt.

SPI2 GPIO und Bitbang GPIO kommen sich nicht in die Quere.
Ich kann die GPIO des SPI initialisieren und es geht noch.
Erst wenn CPE im SPI2 CR1 gesetzt wird gehts kaputt (der SPI2 bekommt 
sein RCC Takt).
Eine CLK Störug kanns nicht sein, ich starte zur Fehlerfindung noch 
keine Datenübertragung.
Wenn ich die GPIO nicht initialisiere und den SPI2 aktiviere dann gehts 
auch noch.

Die Bits der GPIO Register werden nicht verändert laut Debugview.
An den verwendeten Pins für die Tastenmatrix kommt auch kein SPI2 
alternativ raus.

Aber mit dem GPIO muss es was zu tun haben, erst wenn der SPI2 aktiviert 
ist greift er ja auf die AlternateFunction zu.

Was isn da los?
Hat wer ne Idee?

Pinbelegungen:
PortA 6  - Zeile 2 (hier wäre SPI 1 MISO eine AF)
PortB 0  - Spalte 0
PortB 1  - Spalte 1
PortB 2  - Spalte 2
PortB 10 - SCK
PortC 0  - nCS
PortC 2  - MISO
PortC 3  - MOSI
PortC 4  - Zeile 0
PortC 5  - Zeile 1

von Stefan F. (Gast)


Lesenswert?

Zeichne bitte einen Schaltplan, zeichne die Messpunkte ein.
Zeige deine Messergebnisse. Ich erwarte beschriftete Diagramme vom Logic 
Analyzer zu sehen, wo du die fehlerhaften Stellen markierst.

Ach, noch was: Der Quelltext könnte eine Rolle spielen.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Das wär jetz etwas viel Aufwand ;)

Fehler gefunden:
Halbwegs niederohmige Verbindung zwischen PB10 und PB2 (die liegen 
nebeneinander).
Der Pieper piepte nicht, aber Ohmmeter sagt 500R.
Damit hat nach CLK LOW (CPE Bit) die Spalte 2 immer mit detektiert.
(manchmal hilfts eben drüber zu schreiben)

Da war noch etwas Dreck zwischen den Pins, konnt ich rauskratzen, jetzt 
gehts.

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.