MSP430

Wechseln zu: Navigation, Suche

Der MSP430 ist ein 16 Bit-Mikrocontroller von Texas Instruments (TI). Er wurde speziell für eine geringe Stromaufnahme entwickelt, so dass er besonders für batteriebetriebene Geräte geeignet ist. Es gibt verschiedene Typen mit 1-256 kB Flash-ROM, 128-18432 Byte RAM, teilweise mit Hardware-Multiplizierer, UART, AD-Wandler oder LCD-Treiber, die meisten im SMD-Package mit 20 bis >100 Pins. Einige neuere aus der MSP430F2xxx-Serie gibt es auch im DIP-Package (Bezeichnung: MSPxxxx -N). Der MSP430F1121 zum Beispiel hat 4kB Flash-ROM, 256B RAM, 2 Timer und steckt in einem SO-20 Gehäuse.

Entwicklungshardware[Bearbeiten]

Das Launchpad (ca. 10€) enthält neben dem per USB ansprechbaren Programmer auch das "Spy bi Wire" Interface, mit dem der µC in der Schaltung emuliert werden kann (in Circuit emulation).

Für den schnellen Einstieg stellt TI mehrere Entwicklungssysteme mit USB Schnittstelle zur Verfügung. Beliebt ist, auf Grund des günstigen Preises, vor allem das MSP430 Launchpad. Es gibt jedoch noch andere wie z.B. das MSP430 USB Stick Development Tool.

Das Launchpad besitzt einen integrierten JTAG-Programmer, dessen Pins über Jumper herausgeführt sind. So kann man auch Controller direkt im Breadboard programmieren. Es können dadurch auch Controller programmiert werden, die nicht in den 20-Pin PDIP-Sockel passen, wie z.B. die MSP430F-Serie.

Weitere Adapterplatinen und JTAG-Programmer für MSP430-Controller bekommt man bei Olimex (Bulgarien), in Deutschland bei Elektronikladen oder Watterott.

Einen einfachen Schaltplan für den JTAG-Programmer von TI bzw. Olimex gibt es hier. Die Spannungsversorgung kommt im Gegensatz zum Original allerdings nicht vom Drucker-Port sondern muss extern (am besten vom MSP430 Board) bereitgestellt werden.

Neben der JTAG-Programmierung bieten die MSP430-Controller auch die Möglichkeit, die Firmware über einen Bootloader einzuspielen. Die dafür erforderliche Hardware wird in der Application Note SLAA096d von Texas Instruments beschrieben.

Launchpad Bezugsquellen: [1] [2] [3] [4] [5]

Stromversorgung[Bearbeiten]

Der MSP430 benötigt meistens eine Spannung zwischen 1,8 und 3,6 V. Es gibt einige wenige Derivate, die mit 0.9V auskommen (z.B. MSP430L092). Einfach erzeugen kann man diese z. B. mit der folgenden Schaltung:

lm317.png

An den Eingang wird ein Steckernetzteil angeschlossen, die Ausgangsspannung lässt sich über das Potentiometer P1 einstellen. Benutzt man für P1 einen 500Ω-Typ, kann man die Spannung in einem Bereich von 1,2 Volt und knapp 3,6 Volt einstellen. Dann kann man den MSP430 nicht durch zu hohe Versorgungsspannungen zerstören.

Für den Batteriebetrieb eines MSP430 gibt es von TI eine fertige Lösung mit wenig Peripherie: TPS61221

Schaltung für 3,3V Versorgung: [6]

Die neue Generation mit USB, MSP430F55xx, enthält bereits einen Längsregler von 5 V auf 3,3 V für den Betrieb an der USB-Speisespannung. Die Minimalausstattung für die Erstinbetriebnahme ist ein Quarz (bspw. 12 MHz), ein Widerstand 1,5 kΩ und eine Drahtbrücke.

MSP430V1.jpg

Programmieren und Debuggen[Bearbeiten]

Zum Füllen des internen Flash-Programmspeichers und zum Verfolgen des Programmablaufs stehen üblicherweise drei Schnittstellen zur Verfügung:

  • Der Bootloader (seriell oder USB)
  • Das JTAG-Interface
  • Der Spy-bi-Wire-Anschluss

Bootloader (Seriell oder USB)[Bearbeiten]

Wer fehlerarm programmieren kann und für jedwede Hilfsadapter zu geizig ist, benutzt am besten den eingebauten Bootloader. Dies ist auch der günstigste Weg bei der Serienfertigung.

Zur Nutzung des seriellen Bootloaders ist es am günstigsten, wenn die fertige Schaltung sowieso eine serielle Schnittstelle vorsieht. Ungünstigerweise „hört“ der Bootloader nicht auf RxD und TxD, sondern zumeist auf P1.1 und P2.2 (siehe jeweiliges Datenblatt!). Daher behilft man sich mit festen oder trennbaren Brücken zwischen P1.1 und TxD sowie P2.2 und RxD. Von den SubD-Pins 1+4+6 geht man via Serienwiderstand bspw. 33 kΩ auf /RESET, von den SubD-Pins 7+8 ebenso via 33 kΩ auf TCK, fertig ist der On-Board-Programmieradapter.

Richtig debuggen kann man mit der seriellen Schnittstelle nicht.

MSP430 mit USB-Schnittstelle haben keinen seriellen Bootloader. Dieser ist durch den USB-Bootloader ersetzt worden. Zu seiner Verwendung werden keine ominösen Brücken verwendet; der USB-Anschluss (den wohl jede Anwendungsschaltung mit MSP430F55xx haben wird) ist sofort zum Herunterladen der Firmware geeignet. Clevererweise meldet sich der Bootloader als HID-Gerät, das erspart den Treiber (genau genommen gibt es extra für Firmware-Updates eine eigene USB-Geräteklasse). Zum Füllen des Flash steht von Texas Instruments eine Software mit Quelltext zur Verfügung. Leider ist die API der DLL wenig brauchbar, und das Programm schluckt keine .HEX-Dateien (wie sonst üblich), sondern TI-spezifische .TXT-Dateien. Eine alternative Software für Windows gibt es von Henrik Haftmann.

JTAG[Bearbeiten]

Komfortabel und dennoch preisgünstig ist der JTAG-Anschluss. Leider benötigt dieser mindestens 5 Kontakte und damit Platz auf der Schaltung. Anschluss-Adapter für den Parallelport sind leicht zu bekommen und beinhalten im einfachsten Fall nur Schutzwiderstände. Wer keinen Parallelport hat, benötigt teurere aber komfortable USB-JTAG-Adapter.

Spy-Bi-Wire[Bearbeiten]

Die TI-Erfindung Spy-Bi-Wire kommt mit nur 2 Leitungen aus. Hier sind nur spezielle USB-Adapter bekannt, die vom Hersteller zu beziehen und closed-source sind. Auf TI-Entwicklungsplatinen ist dieser Umsetzer bereits als ein weiterer Chip aufgelötet. Eine Liste möglicher Adapter ist z.B. [hier] einsehbar. Die verfügbaren Adapter variieren teils sehr stark in ihrem Preis aber auch in ihrer Leistungsfähigkeit.

Die kostengünstigste Lösung ist es, ein MSP430 Launchpad als USB-Programmieradapter zu verwenden. Das Launchpad ist ein kleines Entwicklungsboard von TI und kann bei Farnell bereits für unter 10 Euro bezogen werden. Die Spy-Bi-Wire Anschlüsse (RST & TEST) können einfach an J2, J3 oder J4 abgenommen und an den zu programmierenden MSP430 angeschlossen werden. Zu beachten ist nur, das man den auf dem Board eingesetzten MSP430 heraus nimmt. Siehe Launchpad Userguide/SLAU318

Ein genereller Nachteil bei Spy-Bi-Wire ist die zum Teil erheblich reduzierte Geschwindigkeit bei der Datenübertragung. Dies liegt v.a. daran, dass die Daten, die vorher bei JTAG über 3 Leitungen übertragen wurden (TMS, TDI, TDO) nun über eine gemeinsame bidirektionale Leitung laufen. Es gibt jedoch auch Tools die diesen Nachteil weitestgehend ausgleichen können.

Es bleibt daher zu überlegen, ob es nicht sinnvoll ist, lieber einen Chip in einem etwas größeren Gehäuse mit mehr Pins zu verwenden und dafür JTAG zu nutzen. v.a. in Sachen Selbstbaudebugger ist dies sinnvoll.

Dokumentation[Bearbeiten]

  • TI's Website: http://www.msp430.com
    Für jede MSP430 Familie (z. B. MSP430F1xxx) gibt es ein generelles "datasheet" und einen detailierten "user guide". Die im user guide verwendeten Registerbezeichnungen (Ports, SFRs, etc.) findet man auch bei den meisten Compilern wieder.
  • Buch: Mikrocontrollertechnik Am Beispiel der MSP430-Familie
    Dieses Lehrbuch führt in die Grundlagen der Mikrorechentechnik ein. Es beschreibt sehr detailliert den Aufbau, die Funktion und die Handhabung von Mikrocontrollern am Beispiel des MSP430F1232. Programmbeispiele sind in Assembler und C enthalten. Ideal für Einsteiger mit geringen technischen Vorkenntnissen. Autor: Matthias Sturm ISBN 3-446-21800-9, Hanser Verlag
  • Buch: Das MSP430 Mikrocontroller Buch
    ... sagt u.a.: "Dieses Buch eröffnet einen schrittweisen Einstieg in die Welt der Mikrocontrollerprogrammierung und führt mit ausführlichen Anwendungsbeispielen in die Fähigkeiten dieser außergewöhnlichen Prozessorfamilie ein. Jede Komponente des Prozessors wird ausführlich erklärt und deren Funktion in kleinen Beispielprogrammen gleich umgesetzt. Abgerundet wird jedes Kapitel mit einigen Übungsaufgaben. So entsteht neben dem eigentlichen Lerneffekt gleichzeitig eine Referenzbibliothek von Funktionsmodulen, die später in eigenen Anwendungen leicht weiterverwendet werden können."
    Autoren: Marian Walter und Stefan Tappertzhofen; ISBN 978-3-89576-236-9, Elektor Verlag

Software[Bearbeiten]

TI Code Composer Studio[Bearbeiten]

Die Eclipse-basierte Entwicklungsumgebung von TI ist für Linux und Windows verfügbar. Der Compiler der kostenlosen Version ist auf 16kB Codegrösse beschränkt. Die kommende (schon als Beta verfügbare) Version 6 enthält einen GCC-basierten Compiler ohne Codegrößenbeschränkung, und dürfte damit erste Wahl für MSP430-Entwickler werden. (Stand 2014)

MSPGCC[Bearbeiten]

Man kann Programme für den MSP430 komplett mit freien Tools entwickeln. Mit dem C-Compiler MSPGCC, dem Debugging-Programm GDB/Insight und einem beliebigen Texteditor kann man C-Programme schreiben, kompilieren, in den Controller programmieren und debuggen. In Kombination mit MSPGCC kann man auch die freie Entwicklungsumgebung Eclipse verwenden.

Direkt mit Eclipse 3.6 Helios compilieren und debuggen

Weblinks:

Mittlerweile (Stand 2014) gibt es von TI selbst einen neuen GCC-basierten Compiler für MSP430, welcher komplett neu entwickelt wurde [7], und als Beta-Version verfügbar ist (standalone, und integriert in die ebenfalls als Beta verfügbare Version 6 des Code Composer Studio).

Energia[Bearbeiten]

Diese auf der Arduino IDE basierende Entwicklungsumgebung bietet die gleiche Nutzererfahrung für MSP430-Boards, die von der Entwicklung für Arduino-Boards bekannt ist. Es werden fortlaufend Verbesserungen vorgenommen.

MSPDebug[Bearbeiten]

MSPDebug ist ein Programmier/- Debugwerkzeug für den MSP430, ähnlich wie avrdude für die AVRs. Es beinhaltet auch einen gdb-server um in eclipse oder direkt mit msp430-gdb zu debuggen.

Momentan (0.21) unterstütze Programmer/Debugger (aus der Hilfe übernommen):

  • ez430-RF2500 z.B. der Programmieradapter von der ez430-Chronos
  • Olimex MSP-JTAG-TINY / ISO
  • Launchpad
  • GoodFET
  • TI FET430UIF und Kompatible (z.B. eZ430)
  • TI FET430UIF bootloader
  • Flash Bootloader

Er läuft unter Linux, *BSD, OS/X und Windows.

Weblinks:

MSP430 Instruction Set Simulator[Bearbeiten]

Die Firma Lauterbach bietet unter der Artikelnummer LA-8815 einen Instruction Set Simulator für den MSP430 an. Die Demoversion ist zur Evaluierung kostenlos. Einschränkungen bestehen in der Anzahl der zu ladenen Debugsymbole, was jedoch für die meisten (teils auch kleineren) Hobbyanwendungen kein Problem darstellen sollte. Der Simulator unterstützt alle gängigen MSP430 Derivate, d.h. beide Instruction Sets (16bit/20bit CPUs). Der Simulator lädt alle gängigen Debugformate, wie die des IAR Compilers, des Code Composer Studios von TI oder des freien Tools MSPGCC.

Zum Simulator gäbe es entsprechende zugehörige Debugtools für den MSP430, die käuflich zu erwerben sind.

MSP430 Simulator

Der Screenshot zeigt ein Beispiel mit Quellcode (HLL/ASM mixed), Register/Stack Fenster, Breakpoint-Konfiguration, Variablenansicht, Stackframe und Darstellung des anfänglichen RAM Inhalts.

MSP430 Forth[Bearbeiten]

Mecrisp ist eine Forth-Implementation, die direkt im Microcontroller läuft und über eine serielle Schnittstelle angesprochen wird. Momentan werden die Chips MSP430F2274 und MSP430G2553 unterstützt.

Weblinks:


CamelForth/430 ist ein ANSI Standard Forth für die Texas Instruments MSP430 Mikrocontroller-Familie. CamelForth sollte mit jedem MSP430, der wenigstens 512B RAM, 8K ROM und einen USART hat, funktionieren.

Weblinks:


4E4th ist kleines Forth das auf dem Texas Instruments LaunchPad läuft. Es steckt in der MCU MSP430G2553. Du kommunizierst mit dem 4E4th mit Hilfe eines Zeilen Editors der über einen Terminal Emulator betrieben wird. 4E4th basiert auf der MSP430 CamelForth version 0.3 von B. J. Rodriguez, welches er für das TI Tini430 board mit dem MSP430F1611 geschrieben hatte. Es ist ein ANS Forth, und belegt knapp 8K im FLASH der MSP430G2553 MCU (0xE000-0xFFFF). Weitere 8K (0xC000-0xDFFF) sind frei für eigene Experimente. 4E4th ist, wie das CamelForth auch, freie Software (GNU General Public License).

Weblinks:

Weitere Kommerzielle Compiler für MSP430[Bearbeiten]

Beispielanwendungen[Bearbeiten]

  • Mathar.Com: Auf http://www.mathar.com gibt es ein paar Beispiele (in C), was man so alles mit dem MSP430 anstellen kann. Dort hat der Autor einige Anwendungen näher erläutert. Angefangen mit simplen Aufgaben wie LEDs leuchten lassen geht es weiter über eine LCD- und GLCD-Ansteuerung (HD44780- und KS0108-kompatibel) sowie einigen Beispielen zur Verwendung des integrierten A/D-Wandlers, des USARTs, des Timers und vielem mehr ... Als weitere Codebeispiele sind dort auch eine I2C-Softwareimplementation und eine CAN-Library für den MSP430 zu finden.
  • Examples Ordner der freien Toolchain MSPGCC: Der "examples"-Ordner bzw. "checkout" aus dem CVS vom MSPGCC ist auch sehr umfangreich: http://mspgcc.cvs.sourceforge.net/mspgcc/examples/
  • Codebeispiele auf Mikrokontroller.net: Einige MSP430 Codebeispiele finden sich auch hier in der Artikelsammlung.
  • uIP Port auf Mikrokontroller.net: Der Port des TCP/IP Stacks von Adam Dunkels uIP 1.0 für den MSP430 findet sich hier.
  • Launchpad interne Temp. Messung mit ADC und Anzeige auf LCD: C Codebeispiel für Launchpad mit IAR Kickstartcompiler, interner ADc und LCD Ansteuerung. Vergleich Atmel 8 Bit AVR Controller und mit MSP Familie: [8]

Links[Bearbeiten]

Bezugsquellen[Bearbeiten]

Evaluation Boards[Bearbeiten]