Wie überprüfe ich die Frequenz der MSP430-Uhr?

Ich arbeite an einem Projekt, in dem ein MSP430 verwendet wird, um das Timing für einige Dinge bereitzustellen, bei denen ein genaues Timing wichtig ist (es kann um 10% abweichen, aber nicht um 2x). Dies wird in diesem Fall durch den Timer A0 getrieben, der von der SMCLK-Taktquelle läuft. Ich hätte gerne eine Selbsttestfunktion, mit der ich überprüfen kann, ob der MSP430-Takt nicht zu weit von der Spezifikation entfernt ist (er soll 25 MHz betragen). Insbesondere mache ich mir Sorgen über Fehlermodi (wenn auch unwahrscheinlich), die den Hochgeschwindigkeitstakt des MSP430 auf einen wirklich niedrigen Wert (kHz) senken, obwohl der Chip weiterläuft: Das wäre für den Rest der Hardware katastrophal betroffen. Auf dieser Platine befindet sich ein 32-kHz-Takt von einem Quarz.

(1) Gibt es eine Bibliotheksfunktion (msp430ware usw.), um zu überprüfen, ob die Uhren in Ordnung sind?

(2) Kann ich den 32-kHz-Takt verwenden, um den Hochgeschwindigkeitstakt zu überprüfen? Was ist der beste Weg, das zu tun?

(3) Welche Taktintegritätsfunktionen gibt es beim MSP430?

Danke!

Einige MSP430 haben einen FLL, um einen schnelleren Takt von einem externen Quarz abzuleiten. Welche Chips?
@CL.: Es ist MSP320F53xx. Es gibt eine FLL, Sie sind sich nicht sicher, wie Sie sie verwenden sollen?

Antworten (2)

(2) Kann ich den 32-kHz-Takt verwenden, um den Hochgeschwindigkeitstakt zu überprüfen? Was ist der beste Weg, das zu tun?

Verwenden Sie zwei Timer: einen auf 32 kHz, einen auf der Hochgeschwindigkeitsuhr. Vergleichen Sie den Unterschied und überprüfen Sie, ob es sich um eine gültige Wut handelt.

(2) Verwenden Sie zwei Timer, einen von jeder Taktquelle, und zählen Sie, wie viele Ticks des Hochgeschwindigkeitstakts zwischen zwei 32-kHz-Ticks auftreten. Wenn der Wert außerhalb des Bereichs liegt, stellen Sie den DCO entsprechend ein.

Auf Chips mit dem UCS-Modul kann die FLL dies automatisch tun, ohne zusätzliche Ressourcen wie Timer zu benötigen. Sie können die FLL mit der Funktion driverlib konfigurieren UCS_clockSignalInit(UCS_FLLREF,...).

(1), (3) Die internen Taktquellen (VLO, REFO, DCO oder was auch immer Ihr Chip hat) können nicht wirklich ausfallen. Ihr einziges Problem ist, dass sie möglicherweise nicht sehr genau sind.

Die externen Taktquellen werden überwacht und haben Fehlerbits und Interrupts. Wenn ein externer Kristall ausfällt, müssen Sie dies irgendwie handhaben. (Das UCS schaltet automatisch auf eine interne Taktquelle um, wenn ein Quarz ausfällt, aber Sie müssen prüfen, ob dies in Ihrer Anwendung angemessen ist. Wenn in Ihrem Fall der 32-kHz-Quarz durch REFO ersetzt wird, liegt der Takt immer noch innerhalb der 10% Grenzen.)