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
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.
Vielleicht irgendwo eine kleine, nur schwer sichtbare Lötbrücke nach GND? Schau Dir die gesamte Leiterbahn mal unter der Lupe an.
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.
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?
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.
Mark A. schrieb: > Deswegen sollte aus Code Sicht alles passen. Na dann hast du ja keine Probleme mehr und alles läuft.
. . 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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.