Forum: Mikrocontroller und Digitale Elektronik STM32L443CC GPIO Problem


von Mark A. (Gast)


Angehängte Dateien:

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)


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)


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)


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)


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)


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)


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)


Lesenswert?

AFRL und AFRH Register bitte noch. Die anderen sehen ok aus.

von Mark A. (Gast)


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)


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)


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.

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.