Cortex M3 wird sehr heiß

Gast #2805022
Lesenswert?

Hallo liebes Forum,

mein Problem:

Ich benutze eine Cortex M3 um Daten die über den USART reinkommen über 
USB an einem PC weiterzuleiten.
Das klappt auch alles so wie es soll. Wenn ich jetzt allerdings im 
laufenden Betrieb die USART verbindung kappe, erhitzt sich der Cortex M3 
binnen weniger Sekunden so sehr, dass man ihn nicht mehr anfassen kann.

Versuche ich anschließend über den JTAG ihn zu debuggen (benutzte Keil 
µVision) meldet er mir immer "No JTAG device found"
und ich kann nicht mehr auf den µC zugreifen!


Wo genau kann denn der Fehler liegen? ist ein Pin womöglich gesetzt und 
verursacht einen Kurzschluss?
Arbeite auch erst seit etwa 1 1/2 Monaten mit dem Cortex, also bin ich 
kein Profi...

Vielen Dank

Gruß
TimeOut
Gast #2805025
Lesenswert?

TimeOut schrieb:
> Ich benutze eine Cortex M3 um Daten die über den USART reinkommen über
> USB an einem PC weiterzuleiten.
> Das klappt auch alles so wie es soll. Wenn ich jetzt allerdings im
> laufenden Betrieb die USART verbindung kappe, erhitzt sich der Cortex M3
> binnen weniger Sekunden so sehr, dass man ihn nicht mehr anfassen kann.
Was heisst "kappen"? Die Verbindung soft- oder hardwareseitig trennen? 
Wenn hardwareseitig, dann: Eins hinter die Ohren. Man verbindet oder 
trennt im laufenden Betrieb nur dann, wenn die HW dafür ausgelegt ist.
Zeig mal deine Schaltung.

> Wo genau kann denn der Fehler liegen? ist ein Pin womöglich gesetzt und
> verursacht einen Kurzschluss?
Das musst doch du wissen, ob er gesetzt ist, du bist der Programmierer 
:)
Wie gesagt, zeig mal den Schaltplan.

> Arbeite auch erst seit etwa 1 1/2 Monaten mit dem Cortex, also bin ich
> kein Profi...
Macht ja nix, das kommt mit der Erfahrung.

Ralf
Gast #2805034
Lesenswert?

Also die Verbindung wird Hardwareseitig getrennt.
War dabei einen Timer zu programmieren, der mir meinen mit USART Daten 
gefüllten Puffer rausschickt, auch wenn dieser noch nicht komplett 
gefüllt ist, sollte es mal dazu kommen dass eine Verbindung unterbrochen 
ist.
Damit soll verhindert werden, dass Daten womöglich verloren gehen.
Die USART Daten schickt mir ein RFID-Lesekopf.

Zur Schaltung, also ich benutzte z.Z eine vorgefertigte Schaltung auf 
der viel mehr Bauteile drauf sind, als ich eigentlich benötige. Meine 
eigene Schaltung ist noch nicht aufgebaut. Die platine wird erst nächste 
Woche geliefert :/
Habe aber unnötige Bauteile bereits runtergelötet.
Da es eine kleine Projektarbeit für die Firma ist weiß ich nicht, in wie 
fern ich Schaltungen raus geben darf :(

Evtl, könnte ich meine modifizierten Schlatplan mal hochladen. Ich schau 
nochmal

Gruß

PS:Habe im Moment auch keine Versorgungsspg anliegen. Einzig und allein 
über den angeschlossenen JTAG wird sie "versorgt". Also nur so, dass ich 
den Cortex überhaupt flashen kann
Gast #2805051
Lesenswert?

Hallo Uwe,

Die Versorgungspins sind alle mit Kondensatoren versehen.

Könnte der Fehler hier liegen?

/* Configure USART1 Rx as input */
  GPIO_InitStructure.GPIO_Pin = UART1_RxPin;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

Das ich den falschen Mode gewählt habe,also nicht Floating?

Gruß
Gast #2805055
Lesenswert?

Hört sich nach Latch-Up an. Wundert mich aber, heutzutage sind Chips 
i.A. nicht mehr so empfindlich drauf. Gerade wenn es sich nur um eine 
USART/RS232? handelt. Versuch doch mal was passiert wenn du sicher 
stellst dass der GND-Kontakt als letztes getrennt wird. Betriebsspannung 
ist keine auf dem Stecker den du trennst? Versuch auch mal 100-Ohm 
Serienwiderstände in die Datenleitunen zu legen, bei RS232 und nocht so 
hoher Datenrate sollten die nicht stören.
Gast #2805062
Lesenswert?

> PS:Habe im Moment auch keine Versorgungsspg anliegen. Einzig und allein
> über den angeschlossenen JTAG wird sie "versorgt".

Daran könnte es auch liegen. Wenn die CPU mehrere Betriebsspannungen hat 
dann ist i.A. vorgeschrieben welche anliegen müssen wenn andere da sind. 
Auch die Reihenfolge in der die Spannungen hoch kommen ist meist 
vorgeschrieben. Im Datenblatt nach "power sequencing" suchen. Nur die 
2,5V JTAG anlegen aber nicht die Betriebsspannung für den Core: Da hat 
der Chip vermutlich was dagegen, auch wenn es geht, dann fließt über 
irgendwelche pn-Übergänge Strom vom JTAG-Teil des Dies in den Core die 
dafür dar nicht ausgelegt sind.
Gast #2805080
Lesenswert?

asd schrieb:
> Betriebsspannung
> ist keine auf dem Stecker den du trennst?

Doch ist sie. Das ist ein V1 Stecker der Versorgung/GND und USART 
zusammen verwendet.

asd schrieb:
> Versuch auch mal 100-Ohm
> Serienwiderstände in die Datenleitunen zu legen, bei RS232 und nocht so
> hoher Datenrate sollten die nicht stören.

Also er wird auch sofort heiß, wenn ich keine Verbindung zum lesekopf 
habe, sprich keine Datenleitung angeschlossen ist.

asd schrieb:
> wenn die CPU mehrere Betriebsspannungen hat
> dann ist i.A. vorgeschrieben welche anliegen müssen wenn andere da sind.
> Auch die Reihenfolge in der die Spannungen hoch kommen ist meist
> vorgeschrieben.

Also egal welche Spg. ich zuerst anlege, er erhitzt sich immer.
Lege ich allerdings nur UB (24V) an wird er langsam heiß. Dauert etwa 
30Sek bis man ihn dann nicht mehr anfassen kann.
Schließe ich den JTAG an dauert es wie gesagt nur 2-3 Sek.
(Firma: EleLa - www.elela.de) #2805156
Lesenswert?

Ich hatte mal auf einem STM32F4DISCOVERY irgend ein Programm auf 
gespielt. Der wurde dann auch Heiß, weil die irgend welche Port-Pins die 
Eingang sein sollten auf Ausgang gesetzt wurden und das hat sich auch 
nicht vertragen.

Ist ja klar, der eine Chip will ein Hi Pegel haben, der STM32 will ein 
Low Pegel und da fließt schon mal etwas mehr Strom.

Wenn Du alle GPIO Pins nicht initialisierst und einfach nur ein 
while(1); programmierst, dann sollte auch nichts warm werden.
Gast #2805482
Lesenswert?

> Habe ich bereits. Läuft alles ohne Probleme, bis ich die
> USART-Verbindung trenne
Wenn ich deine Antworten von oben richtig interpretiere, dann hast du 
mehrere Spannungen die dem Board zugefügt werden, richtig?
Welche Signale trennst du auf? -> Trennst du auch den GND der 
restlichen Versorgungsspannungen auf? Also so, dass der gesamten 
Schaltung der GND der anderen Versorgungsspannungen fehlt?

Ralf
Gast #2805518
Lesenswert?

> GPIO_Mode_IN_FLOATING

input und floating is bei CMOS keine gute Idee.

Aber warum steht davor als Kommentar  :
> /* - Set unused ports to floating input to reduce EMI/EMC */

Habe jetzt keine Lußt das Datenblatt zu wälzen, kommt mir aber seltsam 
vor.
Solte man als potentielln Fehler betrachte. Denn warum sollte es bei 
STM32 anders sein als bei sonstigen CMOS Bauelementen.
Vieleicht ist das Kommentar bei externen Pullups/pulldowns gemeint, dann 
ergäbe es Sinn.
Gast #2805573
Lesenswert?

@Ralf

Also auf der derzeitigen Schaltung führe ich einmal 24V zu und dann die 
3,3V vom JTAG kommend.
Die normale Versorgungsspg. von 24V wird dann auf 3,3V runtergeregelt.

Bei meiner späteren Schaltung wird die komplette Platine nur noch über 
den USB-Port versorgt. Also dann wird nur noch eine SPg zugeführt.

Soweit ich das aber beurteilen kann teilt sich die Spg vom JTAG und UB 
den gleichen GND. Meinst du das so?

@Uwe

Meinst du ich sollte es mal in Pullup bzw Pulldown abändern?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren