MSP430-Tutorial I


1 Zusammenfassung

In diesem  MSP430-Tutorial werden die ersten Schritte mit dem Launchpad EXP430G2, der Entwicklungsumgebung IAR Embedded Software und die Grundlagen der MSP430-Addresierung erklärt. Das Tutorial richtet sich an Anfänger. Es werden zunächst keine Hardwarekenntnisse benötigt, da ausschließlich das Launchpad EXP430G2 Revision 1.5 und der Mikrocontroller MSP430G2553 darauf verwendet werden.

Alternativ zu diesen Tutorial kann auch das MSP430-Tutorial II, welches sich für fortgeschrittene richtet, gelesen werden. Hierbei wird ein Beispielprojekt mit dem MSP430F5342 als Mikrocontroller behandelt. Dabei werden unter anderem: JTAG-Programmer, Datenblatt, Users Guide, Entwicklungsumgebung, MSP430-Adressierung und Grundschaltung des Mikrocontrollers beschrieben.

Alle Informationen zu diesen Tutorial sind in einer einzelnen ZIP-Datei zusammengefasst: Alle Infos


2 Was wird für den Start benötigt

Um mit der MSP430-Tutorial anzufangen, werden nur eine Entwicklungsumgebung (kurz IDE) und das Launchpad benötigt.

Folgende Links dazu:


3 Installation der Softwarepakete

Zwei Softwarepakete müssen für das MSP430-Tutorial installiert werden: Die IDE und die Treiber fürs Launchpad.

3.1 IDE

Die Entwicklungsumgebung kann direkt bei TI runtergeladen werden (Kickstartversion IAR Embedded Workbench (IDE)). Bei der Seite angekommen muss man nun auf den Button für „IAR-Kickstart for MSP430“ klicken (Bild 1, Get Software).

MSP430-Tutorial – Download-Seite von Texas Instruments

Abb. 1: MSP430-Tutorial – Download-Seite von Texas Instruments

Nun werden wir automatisch auf die Webseite von IAR weitergeleitet. Anschließend ganz unten auf „Download software“ (Bild 2) drücken.

MSP430-Tutorial – Weiterleitung auf der Seite von IAR Embedded Workbench

Abb. 2: MSP430-Tutorial – Weiterleitung auf der Seite von IAR Embedded Workbench

Nachdem die Software vollständig runtergeladen wurde, einfach die Installationsroutine für das Programm starten und den Anweisungen folgen.

3.2 Launchpad-Treiber

Um die Treiber für den EXP430G2 zu installieren, reicht es das Launchpad über USB an den PC anzuschließend (zumindest ab Windows 7). Daraufhin startet Windows automatisch die Installationsroutine. Nach ein paar wenigen Minuten kann man das Launchpad nutzen.

3.3 Testen (Dieser Punkt kann auch übersprungen werden)

Vorab soll nun getestet werden ob die Installationen gelungen sind (am diesem Punkt kann das MSP430-Tutorial auch übersprungen werden). Oftmals kann es sein, dass der PC nach den Installationen neu gestartet werden sollte. Zum Testen wird ein „Hallo Welt“ Programm abgespielt. Als „Hallo Welt“ Programm wird meistens ein einfaches Programm bezeichnet, mit dem der Anwender testen kann, ob alles wie erwünscht funktioniert. Für dieses Beispiel soll zunächst die rote LED zum Blinken gebracht werden. Hiermit soll nur überprüft werden, ob das Launchpad funktioniert. Die Erläuterungen zu dem Programm folgen ab dem nächsten Abschnitt. Der Quellcode dazu kann hier geladen werden.


4 Hardware

4.1 Launchpad

Texas Instruments fasst alle nötigen Information zu dem Launchpad in drei Dateien zusammen (siehe auch Link zu TI). Im

  • Hardware Design Files; bei dem alle elektrische Eigenschaften wie auch Pinout des Boards zu finden sind
  • Users Guide; der dem Anwender bei der Programmierung des Mikrocontrollers helfen soll und
  • ZIP-Datei Code Examples; Wo der Nutzer viele Beispiele zum jeweiligen Launchpad finden kann.

Einen ersten Überblick vom Launchpad soll das nachfolgende Bild verschaffen.

MSP430-Tutorial – Pin-Out EXP430G2 mit MSP430G2553

Abb. 3: MSP430-Tutorial – Pin-Out EXP430G2 mit MSP430G2553

Zunächst einmal zu beachten, dass die Platine mit 5 V aus dem USB versorgt und daraufhin der Pegel auf 3,3 V für den Mikrocontroller umgewandelt wird. Über dem USB wird der Mikrocontroller nicht nur versorgt und programmiert, sondern kann auch für die Kommunikation über UART mit dem PC genutzt werden. Dazu muss jede glich UART-Kanal 0 benutzt werden und die Jumper für Hardware-UART eingesteckt sein. Natürlich kann auch ein externer USB zu UART-Wandler genutzt werden, man sollte jedoch einen mit 3,3 V-Pegel nutzen. Sonst könnte der Mikrocontroller zerstört werden.

Bei der Stiftleiste mit den Jumpern oben rechts sollten die Jumper horizontal für Hardware- oder vertikal für Software-UART eingesetzt sein. Außerdem bietet sich die Stiftleiste an, um mit Serial-bi-Wire externe Mikrocontroller zu programmieren. Dazu müssen die Jumper für RST und TEST entfernt und mit fliegenden Drehten darauf zugegriffen werden.

Das Ersatzschaltbild zum Launchpad kann auf den Seiten 17 bis 20 des PDF-Dokuments slau318G von Texas Instruments studiert werden.

4.2 MSP430G2553

Beim Launchpad soll zunächst der MSP430G2553 genutzt werden, daher wird es nützlich sein, zusätzlich sich die Informationen zum MSP430G2553 zu beschaffen. Die Links dazu:

Wem das zu anstrengen ist, kann für das MSP430-Tutorial auch folgende ZIP-Datei (Alle Infos) runterladen, bei der ich alle Informationen zusammengefasst habe.

Nun betrachten wir kurz den hier eingesetzten MSP430G2553.  Dazu werden wir das Datenblatt des MSP430G2553 benötigen. Schon auf der ersten Seite finden wird eine Zusammenfassung der wichtigsten Parameter des Mikrocontrollers, wie zum Beispiel Versorgung, Taktrate, Schnittstellen usw. Interessanterweise jedoch keine Angaben über RAM und ROM des Mikrocontrollers. In diesem Fall sind es RAM 0,5 kB und ROM 16 kB.

MSP4530G2553 Kurzbeschreibung

Abb. 4: MSP4530G2553 Kurzbeschreibung

Was uns zunächst interessiert, ist das Pin-Out, um die Peripherie des Mikrocontrollers besser kennen zu lernen. Wir sehen, dass wir auf den Launchpad ein 20-Piner als DIP20-Package nutzen. Durch Blick ins Datenblatt finden wir das Pin-Out schon auf Seite 3 (vgl. auch Bild aus Datenblatt des MSP430G2x53, Revision J, Seite 3, stand 10/2016).

MSP430G2553-Pin-Out

Abb. 5: MSP430G2553-Pin-Out

Der MSP430G2553 hat 20 Pins. Davon sind nur 2 (es können auch deutlich mehr sein) für die Versorgung zuständig. Gekennzeichnet werden diese mit DVCC für 3,3 V (Pin 1) und DVSS für GND (Pin 20). Der Rest der Pins steht dem Anwender zur Verfügung. Fast alle Pins (16 von 20 Pins) können als Ein- oder Ausgänge genutzt werden, ein paar Pins jedoch haben Spezialfunktionen. Was welcher Pin kann, kann im Datenblatt des MSP430G2553  –  Revision J, Seiten 6 – 8, stand 10/2016 – gefunden werden.

Spezialpins

Alle Pins (auch den Spezialpins) muss der Anwender am Anfang des Programms für die gewünschte Funktion konfigurieren. Bis diese neu konfiguriert werden, behalten die Pins ihr Einstellungen (auf ewig, wenn nie etwas geändert wird). Der gleiche Pin kann mehrere Spezialfunktionen aufweisen, davon kann aber immer nur eine Funktion genutzt werden.

Die wichtigsten Spezialpins des MSP430G2553 sollen kurz vorgestellt werden.

  • Ein- Ausgänge

Ob ein Pin als Ein- und Ausgang genutzt werden kann, kann schon durch den Namen erkannt werden oder der Pinbeschreibung auf den Seiten 6 bis 8 folgen. Die Ein- Ausgänge werden mit der Bezeichnung Px.y kodiert (Beispiel P1.1 für Pin 3 oder P2.6 für Pin 19).

  • UART

Für UART werden bekanntlich RX fürs empfangen und TX zum Senden einer Information benötigt. Der MSP430G2553 hat nur 1 Kanal für UART verfügbar. Gekennzeichnet wird dieser mit UCxyRXD (Empfangen) und  UCxyTXD (Senden). Mit dem xy möchte ich kennzeichnen, dass dies variieren kann (nur wenn mehrere Kanäle angeboten werden, folgt noch eine Beispiel beim SPI). Im diesen Fall haben wir jedoch nur 1 Kanal daher ist die Kennzeichnung UCA0TXD und UCA0RXD.

  • SPI

Der MSP430G2553 verfügt über 2 SPI-Kanäle, gekennzeichnet werden diese mit: UCxySIMO (Master Out Slave In), UCxySOMI (Slave Out Master In), UCxyCLK (Takt) und UCxySTE (Slave Select). Der UCxySTE wird nur benötigt wenn der MSP430G2553 als Slave konfiguriert wird, wenn dagegen der Mikrocontroller als Master genutzt werden soll, dann kann jeder freier E/A als Chip-Select-Leitung genutzt werden. Die 2 Kanäle werden im Datenblatt unterschieden indem statt xy A0 oder B0 steht (Beispiel UCA0SOMI steht für Master Out Slave In – Kanal A0).

  • I2C

Der I2C-Bus wird üblicher Weise als Datenbus für kurze Strecken auf einer Platine eingesetzt. Seltener werden auch „lange“ Kabel genutzt, physikalisch ist das sicherlich möglich. Der MSP430G2553 bietet wiederum 2 Kanäle für I2C an. Gekennzeichnet mit UCxySDA (Serial Data) und UCxySCL (Serial Clock).

  • AD-Wandler

Zusätzlich besitzt der Mikrocontroller noch 6-mal 10 Bit AD-Wandler. Beschriftet werden diese mit dem Kürzel  Ax (Pins 2 bis 7).

Der Mikrocontroller besitzt natürlich noch weitere Funktionen. Die Beschreibung für jeden Pin kann im Datenblatt des MSP430G2553  –  Revision J, Seiten 6 – 8, stand 10/2016 (vgl. Bild 6) – nachgeschlagen werden.

MSP430G2553 Pin-Beschreibung

Abb. 6: MSP430G2553 Pin-Beschreibung

Nun müssen wir den Mikrocontroller irgendwie programmieren. Die MSP430G-Serie bietet dazu 2 Möglichkeiten an: JTAG oder Spy-Bi-Wire. Der Vorteil bei JTAG ist das mehr Debugg-Punkte genutzt werden können und zudem äußerst stabil läuft. Spy-Bi-Wire dagegen benötigt nur 3 Pins (anstatt 7 von JTAG) ist aber weniger stabil und man kann nur 2 Break-Punkte setzen.

JTAG

JTAG ist die Kurzfassung von englischem Join Test Action Group. Über JTAG kann der Anwender den Mikrocontroller nicht nur programmieren sondern auch Debuggen beziehungsweise Testen. Die JTAG-Schnittstelle läuft bei TI sehr stabil. Für die MSP430G-Serie werden für JTAG insgesamt 7 Leitungen verwendet (vgl. Tabelle 1). Leider fasst das Datenblatt nicht zusammen welche diese Leitungen sind. Man kann diese erkennen indem man die „Tabel 2. Terminal Functions“ (Datenblatt Seiten 6 – 8) studiert. Achte dazu auf die Description der Pins. Zusätzlich muss zusammen mit den JTAG-Pins der GND weitergeführt werden.

Die Tabelle 1 fast die Programmierpins für JTAG zusammen.

Tab. 1: Pins für JTAG

Name Pin Beschreibung
TCK 6 JTAG-Takt
TMS 7 JTAG Test Mode Select
Test 17 Selects test mode for JTAG pins on Port 1
TDI/TCLK 14 JTAG test data input or test clock input during programming and test
TDO/TDI 15 JTAG test data output terminal or test data input during programming and test
RST 16 Reset
GND 20 Erde

Spy-Bi-Wire

Das Spy-Bi-Wire wurde von Texas Instruments entwickelt und bietet eine Alternative zum herkömmlichen JTAG. Der Vorteil von Spy-Bi-Wire ist das nur 3 Pins (zusammen mit GND) benötigt werden.

Die Pins sind in Tabelle 2 zusammengefasst (vgl. auch Datenblatt des MSP430G2553, Revision J, Seiten 6 – 8, stand 10/2016).

Tab. 2: Pins für Spy-By-Wire

Name Pin Beschreibung
SBWTDIO 16 Spy-Bi-Wire test data input/output during programming and test
SBWTCK 17 Spy-Bi-Wire test clock input during programming and test
GND 20 Erde

Sonst

Sofern eine eigene Platine mit einem MSP430G2553 erstellt werden soll, ist die Seite 41 des Users Guide sehr hilfreich (vgl. Abbildung 7).

Ausschnitt aus Seite 41, Users Guide MSP430x2xx Family

Abb. 7: Ausschnitt aus Seite 41, Users Guide MSP430x2xx Family

Was von hier fest zu halten ist, ist der Pullup-Widerstand und der Pulldown-Kondensator am Reset-Pin. Als Schaltung schlage ich die nachfolgende vor.

MSP430-Tutorial – Grundschaltung MSP430G2553

Abb. 8: MSP430-Tutorial – Grundschaltung MSP430G2553

Der Vorteil dieser Schaltung ist, dass der Mikrocontroller mit fliegenden Drehten über den Launchpad programmiert werden kann.


5 Programmierung

An dieser Stelle sind Kenntnisse der C-Sprache dringen erforderlich. Eine nützliche online Quelle ist das kostenlose eBook „C von Abis Z“ (Link dazu) welches von Rheinwerk angeboten wird. Das MSP430-Tutorial geht davon das aus, dass der Leser zumindest ein Basiswissen in C hat.

Die C-Sprache ist Mikrocontroller unabhängig. Wenn man diese einmal gelernt hat, kann man das Wissen auf jeden Mikrocontroller anwenden. Was jedoch immer Mikrocontroller spezifisch ist, ist das Ansprechen  der „Pins“. Als Pin (die kleinen Beinchen am Mikrocontroller) kann man die Schnittstellen eines Mikrocontrollers zur Außenwelt verstehen. Dabei kann es sich um einen einfachen Ein- oder Ausgang, UART bis zu USB-Pins handeln. Ein paar der Beinchen werden nur dazu benötigt um den Mikrocontroller mit Spannung zu versorgen.

5.1 Entwicklungsumgebung

Als IDE wird die Kickstartversion von IAR Embedded Workbench genutzt. Diese kann für Projekte bis 8 kB frei benutzt werden und sollte für diese Einführung ausreichend sein. Vollständig kostenlos dagegen ist der Code Composer von Texas Instruments (kurz TI), um diesen zu installieren muss man sich jede glich bei TI kostenlos anmelden.

Die ersten Schritte mit IAR als Entwicklungsumgebung kann im nachfolgenden Beitrag gelesen werden. Wer sich mit IAR schon auskennt, kann den Beitrag überspringen.

5.2 Grundlagen der MSP430-Adressierung

Mit MSP430-Adressierung ist der Umgang mit den Pins des Mikrocontrollers gemeint. Wir gehen zunächst mal der Frage nach, wie kann man die Spezialfunktion oder die E/A Funktionen des Mikrocontrollers einstellen?

Der MSP430 hat verschiedene Port-Register (vgl. Tabelle 3). Alle Port-Register sind am Start des Programms, also bevor noch etwas eingestellt wurde, standartmäßig auf 0 gesetzt. Die IAR bietet die Möglichkeit die Register des Mikrocontrollers in einem Fenster live zu verfolgen. Um diese Einstellung zu öffnen, muss zuerst in den Debug-Modus gesprungen werden. In dem Debug-Modus kommt man, indem man zuerst mit “F7“ das Projekt erstellt und daraufhin mit “strg + D“ das Programm auf den Mikrocontroller lädt. Nun gehe auf den Reiter “view -> Register“. Bei der ComboBox wähle dann das entsprechende Register aus was du haben willst (zum Beispiel “Port 1/2“)

Alle elementaren Funktionen die zum initialisieren eines Ports benötigt werden, sind in Tabelle 3 zusammengefasst. Wobei links der Befehl und rechts die Beschreibung dazu stehen. Beachte x ist Variabel und ist abhängig vom Port des Pins (Beispiele folgen nach der Tabelle).

Tab. 3: MSP430-Tutorial – Adressierungsbefehle

Befehl Funktion
PxSEL Das Port Select Register. Bit = 1 aktiviert für diese Leitung die erste alternative Leitungsfunktion; Bit = 0 belässt die Leitung als GPIO.
PxSEL2 Das Port Select Register 2. Bit = 1 aktiviert für diese Leitung die zweite alternative Leitungsfunktion. Dazu muss vorher auch PxSEL aktiviert werden.

Beachte existiert nicht bei alle Derivate als Option!

PxDIR Das Richtungsregister. Bit = 0: zugehörige Leitung ist ein hochohmiger Eingang; Bit=1: zugehörige Leitung ist Ausgang.
PxOUT Das Ausgangspufferregister, wenn Pin als Ausgang (über PxDIR) definiert. Bit = 0: zugehörige Ausgangsleitung wird auf LOW geschaltet; Bit = 1: Leitung wird HIGH geschaltet.
PxIN Das Eingangspufferregister, wenn Pin als Eingang (über PxDIR) definiert. Wenn zugehörige Eingangsleitung LOW ist: Bit = 0; wenn Eingangsleitung HIGH ist: Bit=1. Kann damit die Eingangsleitung abfragen ob Spannung anliegt.
PxREN Das Resistor Enable Flag Register, macht nur sin wenn Pin als Eingang (über PxDIR) definiert.  Bit = 1 aktiviert die eingebauten Pullup- oder Pulldown-Widerstände; Bit = 0 deaktiviert. Diese ziehen offene Eingänge auf definierte Potentiale.

Beachte um zu definieren ob der Pin einen Pullup oder Pulldown bekommt, wird das PxOUT Register genutzt (macht nur für Pin als Eingang sin). Bit = 1 Pullup; Bit = 0 Pulldown.

PxIE Das Interrupt Enable Register. Bit=1: Interruptauslösung für die zugehörige Leitung ist aktiviert; Bit=0: Deaktiviert Interruptauslösung. Nicht jeder Pin ist Interuptfähig.
PxIES Das Interrupt Edge Select Register. Auswahl, ob der Interruptauslösung bei ansteigender Flanke (Wechsel von LOW auf HIGH) dazu Bit=0 oder bei fallender Flanke Bit=1 setzen.
PxIFG Das Interrupt Flag Register. Bit=1 zeigt an, ob über diese Leitung ein Interrupt ausgelöst wurde.

 

Bevor wir uns den MSP430-spezifischen Beispielen widmen,  empfehle ich für Anfänger zunächst einmal den Beitrag zur Bitmanipulation von Mikrocontroller.net  zu lesen. Wer das alles schon kennt, kann den Beitrag natürlich überspringen.

Nun zu den Beispielen. Ein paar der nachfolgenden Beispiele können direkt auf dem Launchpad ausprobiert werden. Die Ergebnisse sind direkt optisch erkennbar da, die LEDs und der Taster genutzt werden.

5.3 MSP430-Tutorial,  Beispiele

Mpla

 

// Sehe aus Abb. 5 das P1.0 für rote LED zuständig ist void main(void) { WDTCTL = WDTPW + WDTHOLD;// Stoppe watchdog timer (sonst startet Programm nicht) P1DIR = BIT0; // Wähle die Richtung P1OUT = BIT0; // Setze den Ausgang (LED an) while(1) { } // Endlosschleife

Mpla

P1DIR &=~ BIT0; // Wähle die Richtung Eingang; 1 für Aus-, 0 für Eingang P1OUT &=~ BIT0; // Nehme Pulldown; 1 für Pullup, 0 für Pulldown P1REN = BIT0; // Aktiviere Pulldown; 1 für Aktivieren, 0 für deaktivieren

MPLA

P1DIR &=~ BIT0; // Wähle die Richtung Eingang; 1 für Aus-, 0 für Eingang // Da ich keinen Pullup oder Pulldown einstellen möchte, muss ich auch nichts mehr // tuen außer die Richtung einzustellen

MPLA

// Sehe aus Abb. 5 das am P1.3 der Taster und am P1.6 die grüne LED hängt void main(void) { WDTCTL = WDTPW + WDTHOLD;// Stoppe watchdog timer (sonst startet Programm nicht) P1DIR = BIT6; // LED als Ausgang P1DIR &=~ BIT3; // Taster als Eingang (kann man auch weglassen) P1OUT = BIT3; // Pullup Widerstand für Taster einsetzen P1REN = BIT3; // Pullup aktivieren while(1) // Endlosschleife (hier spielt die Musik) { if(!(P1IN & BIT3)) { // Wenn Taster auf ”Low” P1OUT = BIT6; // Setze den Ausgang (LED an) } // if else { // Sonst (auf ”High”) P1OUT &=~ BIT6; // Lösche den Ausgang (LED aus) } } // while }

MPLA

// Aus dem Pin-Out (Abb.6) finde die Pins heraus (P1.1 und P1.2, willkürlich P1.5) // Wann PxSEL2 genutzt werden muss, kann durch ein Blick im Beispielcode des MSP // herausgefunden werden P1SEL = BIT1 + BIT2 + BIT4; // Um P1SEL2 zu nutzen, zuerst P1SEL1 einstellen P1SEL2 = BIT1 + BIT2 + BIT4; // P1SEL2 auf SPI-Einstellen (MISO, MOSI, SCK) P1DIR = BIT5; // Nun CS-Leitung als Ausgang einstellen P1OUT = BIT5; // Dann auf “High“ // Da für SPI die Spezialfunktionen ausgewählt wurden, müssen MISO und MOSI nicht // zusätzlich als Ein- und Ausgänge eingestellt werden // Wie man den Rest der SPI einstellt (Frequenz, Modi, …) soll uns noch nicht // interessieren (falls ja siehe den Beispielcode “msp430g2xx3_uscia0_spi_09.c“)

Bewertung

Bitte bewerten Sie den Beitrag, Ihre Bewertung hilft mir sehr die Beiträge zu verbessern!

1 Star2 Stars3 Stars4 Stars5 Stars (8 votes, average: 4,63 out of 5)
Loading...

Kontakt-Formular

Sie haben Fragen zu dem Tutorial oder hat Ihnen etwas nicht gefallen?

Dann schreiben Sie mir einfach eine Nachricht über folgendes Formular oder senden Sie mir eine E-Mail.