Ein Software-/Hardware-Reset der MCU führt manchmal dazu, dass die externe 24-Bit-ADC-Konvertierung in der Tiva C-Serie schief geht

Ich habe ein seltsames Problem und konnte 1-2 Monate lang keine Lösung finden.

In meinem System habe ich eine Tiva TM4C123GH6PM MCU und einen externen 24-Bit-ADC (MCP3919). Mein PWM-Pin erzeugt einen 8-MHz-Takt für den ADC-Haupttakt. Die ADC-Wandlung beginnt automatisch mit diesem Takt.

Mein Problem ist, dass beim Software-/Hardware-Reset der MCU meine ADC-Messwerte manchmal schief gehen. Es ist, als ob "fester Müllwert" von einem externen ADC mit SPI-Kommunikation zu mir kommt.

Nur Gerät aus/einschalten löst Problem!!!

Infolgedessen tritt ein Problem auf, das beim Software-/Hardware-Reset der MCU während der Laufzeit auftritt, und das Problem wird nur mit dem Aus-/Einschalten des Geräts gelöst.

Ich weiß nicht, dass es mit Power-Cycle-Problemen zusammenhängt. so oder nicht.

Ich brauche dringend eure Erfahrungen zu diesem Thema.

Grüße

Haben Sie versucht, den SPI-Bus mit einem Logikanalysator zu überwachen, um zu sehen, was passiert, wenn Sie schlechte Werte erhalten?
Sie verwenden das PWM-Peripheriegerät, um einen Takt zu erzeugen? Das ist dein Problem. Bereich dieses Signal beim Zurücksetzen.
Hallo. Meine Verstärkung ist 1. Ich bin nur Oversampling. Ja, ich habe den SPI-Bus untersucht und festgestellt, dass das Muster behoben ist. Wie gesagt, das Zurücksetzen der MCU verursacht dieses Problem. Aber es ist seltsam, dass das Problem nicht auftritt, wenn das Gerät aus- und eingeschaltet wird. Dasselbe gilt für das Zurücksetzen der MCU.
Ich habe den PWM-Takt beobachtet, aber alles sieht wie erwartet aus.
Bist du dir sicher? Der PWM-Ausgang schwebt während des Zurücksetzens kurz, was sehr wahrscheinlich den Takteingang des ADC stört und möglicherweise sogar Latchup auslöst. Scope das Taktsignal während der Reset-Phase und poste ein Bild. Versuchen Sie es mit einem Puffer (vorzugsweise Scmitt-Trigger) zwischen PWM und Takteingang.
Auf was hast du AMCLK eingestellt?

Antworten (2)

Die Tatsache, dass ein POR es behebt, zeigt mir manchmal, dass etwas nicht richtig initialisiert wird.

Ich würde vorschlagen, den / RESET-Eingang des ADC mit dem Tiva zu steuern und ihm genügend Zeit zu geben, bevor er von Reset-Zehnern oder Hunderten von ms freigegeben wird.

Hallo. Ich glaube ich habe mein Problem falsch erklärt. Das Problem tritt nach dem Zurücksetzen von ADC nicht auf. Das Problem hängt mit dem Zurücksetzen der MCU zusammen. Es gibt eine wirklich große Zeit zwischen ADC Reset und MCLK
Übrigens steuere ich das ADC-Reset mit einem der GPIO-Pins in der MCU
Ich stimme Spehro zu: Insbesondere ist es möglich, dass beim Zurücksetzen der MCU eine Kommunikation im Gange war und falsch beendet wurde, wodurch einige (unbekannte) Werte in den Registern zurückblieben. Der einzige Ausweg besteht darin, den ADC-Reset-Pin für die erforderliche Zeit zu aktivieren, vorausgesetzt, Sie verwenden nicht die 2-Draht-Schnittstelle, da ein Hard-Reset nur für einen internen POR oder einen externen Hard-Reset erfolgen kann (aber dieser Pin hat nur diese Funktionalität im SPI-Modus).
Außerdem sollten Sie den ADC zurückgesetzt lassen, bis das Taktsignal aktiv ist und läuft.

Datenblatt für ADC:

Alle analogen Vorspannungen werden während eines Reset aktiviert, so dass das Teil direkt nach einer ansteigenden Flanke von RESET voll funktionsfähig ist, wenn MCLK angelegt wird, wenn RESET logisch niedrig ist. Wenn MCLK nicht angewendet wird, gibt es nach einem Hard-Reset eine Zeit, in der die Konvertierung möglicherweise nicht genau dem Start der Eingabestruktur entspricht.

Wahrscheinlich würde Ihnen eine gewisse Zeitverzögerung zwischen der Anwendung von MCLK und RESET helfen.

Hallo. Es gibt eine große Zeitverzögerung zwischen MCLK und dem Zurücksetzen. Ich habe diesen Teil gelesen, aber wie gesagt, das Problem tritt nicht beim Aus-/Einschalten des Geräts auf. Es tritt nur auf, wenn ich meine MCU zur Laufzeit zurücksetze