Forum: Mikrocontroller und Digitale Elektronik STM32L443CC GPIO Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mark A. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend zusammen,

ich sitze gerade vor meiner frisch gelöteten Platine mit einem 
STM32L443CC und bin am verzweifeln.

Erste Inbetriebnahme hat funktioniert (es kam kein Rauch und ich konnte 
mich mit Hilfe der SWD Schnittstelle mit dem uc verbinden).

Mit Hilfe von 4 GPIO's möchte ich einen 4-fach Schalter IC (TPS4H000) 
ansteuern, dies realisiere ich mit 3 GPIO's von Port A (9,10,11) und 
einem von Port B (15). Pin uC und Pin von TPS4H000 sind direkt verbunden 
ohne was dazwischen.

Also habe ich schnell ein kleines Testprogramm geschrieben und die 4 
Pins einfach mal angeschaltet. Die Pins konfiguriert und im ODR Register 
die Bits gesetzt. Pin B15, A10 und A11 funktioniert und ich habe 3,3V am 
Pin anlegen, nur bei Pin A9 liegen nur 0,5V an...und das kann ich mir 
nicht erklären. Im ODR Register ist das Bit definitiv gesetzt. Kann ein 
einzelner Pin kaputt gehen ? Ich kenne es nur so dass sich der gesamte 
Port verabschiedet.

Dann habe ich noch einen Step-up Wandler und dessen Enable Pin ist auch 
direkt mit dem uC verbinden (Pin am Port B) und dort habe ich das 
gleiche Problem dass der Pin laut Debugger geschaltet ist aber keine 
Spannung an dem Pin anliegt. Der Enable Pin hat im Schaltregler einen 
Pull down eingebaut.

Hatte schonmal wer das gleiche Problem?

Gruß Mark

von Code Betrachter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mark A. schrieb:
> Hatte schonmal wer das gleiche Problem?

Ja, das saß vor dem Bildschirm und Tastatur.

Hauptproblem ist primär dass du dein Programm geheim hältst.

von Gerd E. (robberknight)


Bewertung
0 lesenswert
nicht lesenswert
Vielleicht irgendwo eine kleine, nur schwer sichtbare Lötbrücke nach 
GND?

Schau Dir die gesamte Leiterbahn mal unter der Lupe an.

von Mark A. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Code Betrachter schrieb:
> Ja, das saß vor dem Bildschirm und Tastatur.
>
> Hauptproblem ist primär dass du dein Programm geheim hältst.

Dachte nicht dass das Notwendig ist, da der Debugger ja ausliest dass 
das Bit gesetzt ist. Hab einfach in den neuem Project in der Main die 
Register beschrieben.
1
RCC->AHB2ENR = 0x00000003;
2
3
GPIOA->MODER = 0x55555555;
4
GPIOA->OTYPER = 0x00000000;
5
GPIOA->OSPEEDR = 0x00000000;
6
GPIOA->PUPDR = 0x00000000;
7
GPIOA->BSRR = 0x00000E00;
8
9
GPIOB->MODER = 0x55555555;
10
GPIOB->OTYPER = 0x00000000;
11
GPIOB->OSPEEDR = 0x00000000;
12
GPIOB->PUPDR = 0x00000000;
13
GPIOB->BSRR = 0x0000CC00;

Gerd E. schrieb:
> Schau Dir die gesamte Leiterbahn mal unter der Lupe an.

Hab ich gemacht, ist nichts zu erkennen. Hab auch mal die 4 Verbindungen 
mit dem Multimeter durchgemessen. Auffällig ist: die 3 Verbindungen, die 
funktionieren, haben einen Widerstand nach GND von ca. 700 KOhm. Die 
fehlerhafte Verbindung hat 1.2 Mohm. Hab auch von Pin zu Pin 
durchgepiepst, die Verbindung besteht.

von Code Betrachter (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Mark A. schrieb:
> RCC->AHB2ENR = 0x00000003;
>
> GPIOA->MODER = 0x55555555;
> GPIOA->OTYPER = 0x00000000;
> GPIOA->OSPEEDR = 0x00000000;
> GPIOA->PUPDR = 0x00000000;
> GPIOA->BSRR = 0x00000E00;
>
> GPIOB->MODER = 0x55555555;
> GPIOB->OTYPER = 0x00000000;
> GPIOB->OSPEEDR = 0x00000000;
> GPIOB->PUPDR = 0x00000000;
> GPIOB->BSRR = 0x0000CC00;

... und wir sollen jetzt im Manual nachschauen ob die Register-
Bits die richtigen sind?

von Mark A. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Genau deswegen hab ich den Code im ersten Beitrag weggelassen, da es 
wirklich nur ein schneller versuch war ob das wichtigste funktioniert. 
Da aber die richtigen ODR Bits gesetzt sind, werden die Bits passen. 
Clock ist aktiviert und ich habe vorsichtshalber alle Pins auf Output 
gestellt. Deswegen sollte aus Code Sicht alles passen.

von Code Betrachter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mark A. schrieb:
> Deswegen sollte aus Code Sicht alles passen.

Na dann hast du ja keine Probleme mehr und alles läuft.

von . . (Gast)


Bewertung
0 lesenswert
nicht lesenswert
AFRL und AFRH Register bitte noch. Die anderen sehen ok aus.

von Mark A. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
.                                                . schrieb im Beitrag 
#5757312:
> AFRL und AFRH Register bitte noch. Die anderen sehen ok aus.

Spielen die eine Rolle wenn der MODE nicht AF ist ? AFRL und AFRH sind 
im Reset Zustand, die habe ich nicht angefasst.

von Mark A. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also ich muss mir leider eingestehen dass ich bei dem ersten Problem 
doch eine unsaubere Lötstelle hatte und nach erneutem hinhalten des 
Lötkolbens funktionierts nun.

Zu dem Pin zu dem Schaltregler: hier ist alles richtig gelötet und es 
funktioniert trotzdem nicht. Nun habe ich aber einfach mal mittels Draht 
3,3V von außen an den pin des uC angelegt und siehe da der Schaltregler 
funktioniert. Für mich heißt das nun eins, der Pin des uC ist zu schwach 
um den EN Pin des TPS55340PWP zu treiben. Laut Datenblatt hat der Pin 
aber nur einen Pulldown von min. 400 KOhm und das sollte für den uC Pin 
doch zu schaffen sein...

von Code Betrachter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mark A. schrieb:
> Für mich heißt das nun eins, der Pin des uC ist zu schwach
> um den EN Pin des TPS55340PWP zu treiben.

Für mich heisst das du hast einen Ausgang auf
Open Drain programmiert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.