Der MSP430 ist ein 16-Bit-RISC-Mikrocontroller der Firma Texas Instruments. Er wurde Anfang der 1990er Jahre bei der deutschen Niederlassung von Texas Instruments in Freising entwickelt und kam 1993 auf den Markt. Der Mikrocontroller ist für Anwendungen mit niedrigstem Stromverbrauch optimiert. Der Prozessorkern ist mittels Compiler in der Programmiersprache C und/oder Assembler programmierbar. Der Controller ist in verschiedenen Ausführungen verfügbar. Texas Instruments erweitert die Palette laufend, was auf einen großen Erfolg dieser Controllerlinie hindeutet. Typische Anwendungen sind Geräte mit Langzeitbatterie, wie zum Beispiel Wärmezähler, Heizkostenverteiler, Tauchcomputer oder auch Blutdruckmessgeräte im medizinischen Bereich.

Die MCU gilt in der Elektronik als Quasi-Standard, wird aber zunehmend von Cortex-M-Derivaten verdrängt.

mini|MSP430 aufgelötet auf einer Leiterplatte mini|Nahaufnahme vom Halbleiterchip des MSP430

Speicheraufteilung Der MSP430 besitzt eine klassische Von-Neumann-Architektur. Die Größe des adressierbaren Speichers ist bei den meisten Derivaten auf 64 kByte limitiert. Speichergrößen liegen bei bis zu 256 kByte FLASH und bis zu 16 kByte RAM (aktuell [November 2008] auch im gleichen Baustein). Bei allen Derivaten sind ca. 2 kByte der unteren adressierbaren 64 kByte für interne Funktionen (wie zum Beispiel einen Boot-Loader) reserviert, so dass mit den zwei größten 16 Bit Speicherausbauten 60 kByte FLASH mit 2 kByte RAM bzw. 48 kByte FLASH mit 10 kByte RAM bereitstehen.

Seit November 2006 bietet TI auch eine Familie mit einer so genannten MSP430X-CPU an. Diese basiert auf einem Speichermodell, welches bis zu 1 MByte Speicher adressieren kann. Der Adressbus hat hierbei 20 Bit, alle Register (außer dem Statusregister R2/SR) sind deshalb nicht mehr 16 Bit breit, sondern 20 Bit. So sind die in den „normalen“ CPUs verfügbaren Befehle weiterhin ohne Änderung verfügbar. Die interne Abarbeitung musste jedoch an die größere Adressbreite angepasst werden, zum Beispiel muss beim CALL-Befehl ein Wort mehr auf den Stack geschrieben werden, da ja 4 weitere Bit als Rücksprungadresse abgelegt werden müssen. Erhältlich sind Bausteine mit bis zu 120 kByte Flash/4 kByte RAM bzw. 116 kByte Flash/8 kByte RAM, alle mit LCD-Treibern.

In den untersten 16 Byte (Adresse 0000 h bis 000F h) sind spezielle Register (SFR, Special Function Register) für die Interrupt- und „Modul“-Steuerung eingeblendet. Die Register der 8-Bit-Peripherie belegen die nächsten 240 Byte (Adresse 0010 h bis 00FF h). Bis hierher ist ein Speicherzugriff byteweise notwendig. Darüber sind die nächsten 255 Byte (Adresse 0100 h bis 01FF h) für die 16-Bit-Peripherie reserviert. Ab hier wird wortweise auf den Speicher zugegriffen.

Ab dem 513. Byte (Adresse 0200 h bis 09FF h) liegt das RAM. Bei den größeren RAM-Ausbauten (größer 2 kByte) liegt dieses tatsächlich im Speicher weiter oben (Adresse 1100 h bis 38FF h), wird aber zum Teil in den unteren Adressbereich gespiegelt. Dazwischen liegen Boot- und Informations-Speicher (Adresse 0C00 h bis 0FFF h resp. 1000 h bis 10FF h).

Der Informations-Speicher ist wie der Code-Speicher ein Flash-Speicher, dessen Besonderheit die Aufteilung in zwei 128 Byte große Segmente darstellt, die als „Zwischenspeicher“ benutzt werden können, für Daten, die immer mal wieder zu ändern sind. Der restliche FLASH-Speicher (für den Programmcode und Konstanten) hat Segmente von 512 Byte. Er liegt grundsätzlich im Speicherbereich 1100 h bis FFFF h, wird aber je nach Speicherausbau (mehr RAM oder kleineres FLASH) erst ab Adresse FC00 h (für 1 kByte FLASH) liegen. Außerdem sind die obersten 32 Byte (Adresse FFE0 h bis FFFF h) des Speichers für die Interrupt-Vektoren vorbehalten, die jedoch nur bei Bedarf benutzt werden. Werden keine Interrupts benutzt, kann auch der Speicher für deren Vektoren als Programmspeicher genutzt werden.

Seit ca. 2012 werden auch FRAM basierende MSP430 angebotenhttps://www.youtube.com/watch?v=44A0et_t8Ws FRAM 101 - Introduction to FRAM and FRAM57xx Überblick über die FRAM-Technologie MSP430 Webseite. Dieser Speichertyp lässt sich, im Vergleich zu Flash, schneller und mit viel weniger Energie beschreiben. Ein wesentlicher Vorteil gegenüber Flash ist auch die deutlich höhere Lebensdauer von FRAM aufgrund von bis zu 1015 Schreib- bzw. Lesezyklen pro Zelle, während Flash höchstens 104 bis 105 Schreibzyklen erlaubt.https://ess.cs.tu-dortmund.de/Teaching/PGs/solardoorplate/seminar/Tondorf-MSP430.pdf Ein weiterer Vorteil dieser Speicherform ist, dass es keine starre Grenze zwischen Code und Daten (Flash und RRAM) gibt, sondern diese nach Bedarf gewählt werden kann. Der verwendete Fertigungsprozess der FRAM-Bausteine wurde gemeinsam von Ramtron und TI entwickelt.

Interruptbehandlung Der MSP430 kennt grundsätzlich 16 Interruptquellen, die nach ihrer Lage in den Interrupt-Vektoren priorisiert sind. Nicht in jedem Baustein sind alle Quellen belegt, dies ist vom Ausbau der „internen“ Peripherie abhängig.

Mehrere Interrupts können den gleichen Vektor belegen. Ist das der Fall, muss von der Software über entsprechende Bits entschieden werden, welcher Interrupt aktuell vorliegt. Außerdem haben verschiedene Interrupts „eigene“ Vektorregister, über die es jeweils wieder bis zu 10 unterschiedliche Quellen (erweiterbar bis zu 128) geben kann. Als Beispiel seien hier die Timer-Interrupts genannt.

Der MSP430 beherrscht mehrere Power-Down-Modi, in denen die Befehlsverarbeitung gestoppt oder der Takt abgeschaltet wird. Im niedrigsten Modus liegt der Stromverbrauch, je nach Typ, bei 0,4 µA. Will man eine Echtzeituhr realisieren, werden ca. 2 µA benötigt. Die CPU kann durch verschiedene Interrupts wieder aufgeweckt werden.

Prozessor mini|MSP430 FG438 auf der Platine eines Blutzuckermessgerätes Der Befehlssatz enthält nur 27 „Grundinstruktionen“ und 24 „emulierte“ Instruktionen, die aus den Grundinstruktionen zusammengesetzt sind. Der Begriff „RISC“ ist dafür angemessen.

Die Abarbeitung eines Befehl dauert 1 bis 6 Takte. Bei Taktfrequenzen von bis zu 25 MHz werden so Schrittzeiten bis herab zu 40 ns erreicht. Die maximale Taktfrequenz ist vom Typ und der Speisespannung abhängig, etwa: MSP430x1xx: 4,15 MHz bei 1,8 V .. 8 MHz bei 3,6 V (linear) MSP430x2xx: 4,15 MHz bei 1,8 V, 16 MHz bei 3,3 .. 3,6 V (nichtlinear) MSP430x5xx: 8 MHz bei 1,8 V, 25 MHz bei 2,4 .. 3,6 V (gestuft)

MSP430-Mikrocontroller können einen MSP430-Kern oder einen MSP430X-Kern als Prozessor enthalten. Letzterer verarbeitet zusätzliche Befehle, um die auf 20 Bit verbreiterten Register zu bedienen und mehr als 64 KiByte (die Grenze von 16 bit) zu adressieren, und ist zum MSP430-Kern (ohne „X“) kompatibel. Aus Sicht des MSP430X-Befehlssatzes ist die erweiterte Bitbreite auf 32 Bits „limitiert“, die 20-Bit-Registerbreite wurde als derzeitiger Kompromiss zwischen Adressierumfang (1 MiByte) und Komplexität sowie Energieverbrauch gewählt. Genügen 20 Bit für bestimmte arithmetische Operationen, kann man diese erweiterten Register auch allgemein verwenden (zurzeit nur in Assembler möglich).

Architektur Der MSP430 hat 16 Register. Register 0 ist der Program-Counter (PC), Register 1 der Stack-Pointer (SP, Stapelzeiger) und Register 2 das Prozessor-Status-Register (PS). Register 3 (Constant-Generator, CG) ist ein Pseudo-Register, das die häufig benötigten Konstanten −1, 0, +1 und +2 liefert. Diese vier Register haben spezielle Funktionen, sind aber wie alle anderen zwölf Register auch frei benutzbar. Die Möglichkeit, den Program-Counter oder den Stack-Pointer als „freie“ Register zu benutzen, wurde bereits bei der PDP-11 verwendet. Die Register sind nicht adressierbar; sie sind nicht als Kopie im Adressraum des MSP430 verfügbar.

Mögliche Adressierungsarten sind Registeradressierung (Rn), indizierte Adressierung (X(Rn)), symbolische Adressierung, absolute Adressierung, indirekte Adressierung (@Rn), indirekte Adressierung mit Autoinkrement (@Rn+) und direkte Adressierung für Konstanten. Diese Adressierungsarten stehen für den Quelloperanden zur Verfügung. Bei Instruktionen mit zwei Operanden stehen für den Zieloperanden nur Register-Adressierung, symbolische Adressierung, absolute Adressierung und indizierte Adressierung bereit.

Interne Peripherie („Module“) Die Register der „internen“ Peripherie (Takt-Erzeugung, SVS (Überwachung der Versorgungsspannung), Hardwaremultiplizierer, DMA, Ports, Watchdog, Timer, serielle Schnittstellen, Komparatoren, ADCs und DACs) sind (wie oben erwähnt) im Adressbereich eingebunden. Diese Peripherie ist je nach Modell mit auf dem Chip integriert. Es wird zwischen 8-Bit-Peripherie und 16-Bit-Peripherie unterschieden.

Takterzeugung Bei der Takterzeugung setzt TI auf drei unterschiedliche Quellen, die je nach Bedarf sehr geringen Stromverbrauch (32,768 kHz in Form eines Uhrenquarz), sehr schnelles Aufwachen nach einem Interrupt (interner RC-Oszillator, 6 µs Zeit bis zum Erreichen der nominellen RC-Taktfrequenz) oder hohe Frequenz (bis zu 16 MHz) ermöglichen. Der MSP430 eignet sich sehr gut zum Übertakten: Der Niederfrequenzoszillator kann mit einem 100-kHz-Quarz (rund 200 % Übertaktung) betrieben werden, und der HF-Oszillator kann um 100 % übertaktet werden, zumindest bei Raumtemperatur und bei der maximal zulässigen Betriebsspannung.

SVS Der Supply Voltage Supervisor, auch Brown Out Reset oder Brown Out Detector genannt, überwacht die Versorgungsspannung und ermöglicht auch bei einem kurzfristigen Unterschreiten der Mindestspannung ein geregeltes neues Hochfahren (Reset) des Systems. Wird die Mindestspannung unterschritten, können unvorhersehbare Fehler im System auftreten, die zu nicht gewollten Programmausführungen oder Hängen bleiben führen können. Mit dem SVS werden solche Fehler vermieden und ein geregelter Neustart, auch ohne Abschaltung der Versorgungsspannung, vollzogen.

Hardwaremultiplizierer Der Hardwaremultiplizierer beherrscht die Multiplikation von vorzeichenlosen und vorzeichenbehafteten 8-Bit- und 16-Bit-Zahlen, wobei als Ergebnis eine bis zu 32 Bit große Zahl entsteht. Das jüngste Kind der MSP430-Familie beherrscht sogar 32 Bit große Zahlen und ein 64 Bit großes Resultat. Er beherrscht ebenso vorzeichenloses und vorzeichenbehaftetes Multiplizieren und Zusammenzählen (MAC, eine Domäne der DSPs). Der erste Operand dieser vier Operationen ist jeweils in einem speziellen Register abzulegen, der zweite Operand immer im gleichen Register. Das Ergebnis steht immer in den beiden gleichen Ausgangsregistern. Es liegt automatisch drei (!) Takte nach dem Ablegen des zweiten Operanden zur Verfügung.

DMA Mit Hilfe des DMA-Controllers können ohne Zutun der CPU sehr schnell Daten von einem Speicherbereich in einen anderen transferiert werden. In dieser Zeit kann die CPU nicht auf den Bus zugreifen, weshalb sie angehalten werden muss. Der DMA-Transfer ist aber auch in den Low-Power-Modi zugelassen, wobei der CPU-Takt hochgefahren werden muss. Ein weiterer Vorteil des DMA-Moduls besteht darin, dass es im „Tandem“-Prinzip verwendet werden kann, das heißt, dass die Taktzyklen alternierend zwischen CPU und DMA aufgeteilt werden. Das eignet sich beispielsweise hervorragend, um ein Videobild aufzubauen, ohne dass dazu die CPU verwendet werden muss. Durch die Möglichkeit der Hintereinanderschaltung der DMA-Einheiten (meistens 3) kann so aber auch ein digitaler Filter realisiert werden, welcher mit Hilfe der AD- und DA-Wandler beispielsweise für Audioapplikationen verwendet werden kann. Eine weitere sehr hilfreiche Funktion mit dem DMA ist, Speicherinhalte zu verschieben, das erspart erheblich Zeit und Programmieraufwand. Es ist beispielsweise bei der MSP430F16XX-Serie sehr interessant, da diese mehr Speicher (RAM) besitzen. Auch das Kopieren vom RAM zum FLASH kann per DMA einfacher gestaltet werden als mit Software.

Ports