Pages Menu
Categories Menu

Posted by on Oct 3, 2013 in Getting Started, Microcontrollers, MSP430 | 25 comments

MSP at a Glance

MSP at a Glance

This post has been written by a new author, Chahat Ahuja. Give him heads up if you like this post.

Hey folks, I know you have a habit of seeing AVR microcontrollers related tutorials on maxEmbedded, but trust me, maxEmbedded is going to be full of surprises. This is my first post and it is going to be about MSP430, a 16 bit microcontroller family by Texas Instruments.

Pre-requisites: Basic knowledge of micro-controllers and embedded systems, Familiarity with terminologies related to computer architecture.


MSP430 Introduction

MSP430 – An Introduction

“MSP430” interesting name, isn’t it? Want to know what it stands for? Well, MSP stands for Mixed Signal Processing. There are three types of signal processing techniques we generally deal with, namely, Analog signal processing, Digital signal processing and Mixed signal processing. Thus, the MSP430 family supports Mixed Signal Processing, making your tasks easier. To have a fuller idea about the nomenclature of the MSP family check out this wikipedia page.

What MSP430 has in package?

Recently, Apple Inc. launched its new Apple iPhone 5S, which runs on a 64-bit Micro-Processor Unit, the first of its kind mobile phone to run on a 64-bit architecture. The earlier ones used a 32-bit architecture. To know more about what 8 bit or 16 bit micro-controllers actually mean, read Mayank’s post on basics of microcontrollers. an MSP Micro-Controller is a 16 bit Micro-Controller, which means that it has 16 bit wide address and data buses. So, in a layman’s language, we can say that MSP is twice as fast as the AVR, in terms of processing (not always the case though). You can roughly relate this to your computer, which is probably a 32-bit or 64-bit machine. It may look confusing to a person who has a habit of using 8 bit controllers, but the fact is that it is much more convenient to use a 16 bit controller.  Let us look at some highlights of the MSP430 family:

  • Von Neumann Architecture: It is modern processor architecture which has shared memory for both data and instructions. This is in contrast to Harvard architecture, which has separate memories for instructions and data. In some systems having Harvard Architecture, instructions memory can be Read only memory. The following diagram shows the difference between Harvard architecture and Von Neumann architecture.

    Types of Architecture

    Types of Architecture (Click to Enlarge)

  • RISC architecture: RISC expands to Reduced Instruction Set Computer. In simple language, software simplicity has been compromised to provide hardware simplicity.
  • Bus width: 16 bit address and data buses.
  • Memory access range: 16-bit Micro Controller Unit, hence it can address 216 = 64 kB of memory.
  • Several low power modes: typical being 1µA, 3.3 volts consumption in idle mode.
  • It has an internal Digitally Controlled Oscillator (DCO) oscillating at 1 MHz. An External Crystal Oscillator can also be used. MSP Controllers should be made to work at 32.768 kHz, when we need to provide a very accurate timer. This is because when we use 32.768 kHz, by the time the timer overflows, it is exactly and accurately 1 second. Can anybody figure out why?
  • Timers available with PWM (Pulse Width Modulation)
  • Selection of Analog to Digital Converter with a resolution of 10/12/14/16 bit.

Central Processing Unit

The general purpose of any CPU is to execute the instructions and store data in the memory. For that, it takes help of the ALU – Arithmetic Logic Unit, which performs all the calculation and computation for the CPU.

Let’s consider a CPU-industry analogy. Whole process of CPU works like an industry; just consider you have an industry for manufacturing goods. For that you need raw materials which are provided by a store called memory. Now the raw material is brought to the industry by a transport facility called data bus. Now the question arises, how will one know about which raw material you need or where it is placed and when do you need it? These are managed with two transport facilities namely control bus and address bus. Now, with the help of tools and machines called ALU, you have made the goods and you have to transport it back to store which is again done by data bus.

To control any operation, we need some special memory units, which holds which work to be done next and how it should be done etc. These memory units are present in CPU and are called registers. Registers are small size memory units which can be well described as the set of cells where each cell can hold one bit data i.e. either 0 or 1. For more generalized idea about registers, go ahead and read the first half of Mayank’s post, and then get back here. The width of registers in MSP430 is 16 bit which means each of the register can hold 16 bits of data. If you have worked with AVR, CPU register holds 8 bits of data. But in MSP430, CPU registers are 16 bits wide.

Some of the registers which is used by CPU very frequently are as follows–

  • Program Counter, PC/R0
  • Stack Pointer, SP/R1
  • Status Register, SR/R2
  • Constant Generator, CG2/R3
  • General Purpose Registers, R4 to R15


We get 64kB of memory space in MSP430 i.e. address range is 0x0000 to 0xFFFF which has been divided into several types of memories. So, we will have a brief look on the types of memory, we get in MSP430–

  • Special Function Registers: It is mostly used to enable the registers which are associated with particular functions. For example, there is a register TACCR which is related to Timer A of MSP430. Setting some bits of this register can enable or disable timers and its modes.
  • Peripheral Registers: These are actually used for communication between CPU and peripherals but are not used much a general user.
  • RAM – Random Access Memory: All of us pretty aware of this type of memory. It is the memory space where variables are stored for operations.
  • Bootstrap Loader: Now this is something which connects your controller with your personal computer. It contains the program to communicate using a serial protocol.
  • Information Memory: It is flash memory which is used for storage of non-volatile data. It may have some kind of serial code to identify the equipment.
  • Code Memory: As the name says, from where your controller reads the executable code or some constant values.
  • Interrupt and Reset Vectors: This memory is utilized for handling interrupts or exceptions when normal operation of processor is interrupted. Reset is example of interrupt which has the highest position in Interrupt vector table. Vector table will be explained in future posts. :D

All the members of MSP430 family almost have similar memory map which is shown in the following figure.

MSP Memory Map

MSP Memory Map (Click to Enlarge)


When you buy a laptop or a personal computer, the sales person says it has i3-2310m, 2.1 GHz, RAM 4 GB etc. But what is this 2.1 GHz? It is clock of the computer which wakes the computer 2.1 giga (billion) times a second. Faster the clock, faster will be your computer. The foremost purpose of clock in any embedded device is to synchronize the processes. There are three types of clock in MSP430 family:

  1. Master clock, MCLK: As name says, it is used by CPU and a few peripherals.
  2. Subsystem Master Clock, SMCLK: It is distributed to peripherals.
  3. Auxiliary clock, ACLK: It is also devoted to peripherals.

ACLK comes from low frequency crystal oscillator, typically at 32 KHz attached externally. Both MCLK and SMCLK are supplied by an internal digitally controlled oscillator (DCO) which usually generates pulse of 1 MHz.

General Pin Configuration of MSP430

The following diagram show the pin configuration of 14 and 20 pin DIP of MSPG2xx. Most of the members of MSP430 family share similar pin configurations. 14 pin and 20 pin Dual Inline Package (DIP) ICs have been shown in the following picture.

MSP430 General Pin Configuration

MSP430 General Pin Configuration

SMD (Surface Mounted Device) ICs for these microcontrollers are also available and are very useful if you want to make your circuit really small. If you are not familiar with SMD components, you can estimate the size of SMD component by following picture of two MSP ICs.

MSP430G2102 SMD ICs

MSP430G2102 SMD ICs

Yeah, these are MSP430G2102 ICs on my finger tip! :D

Software Support and Development Environment

Consider the CPU-industry analogy once again. CPU is the hardware, just like industry is the place where you can find machines and tools, but to run that machinery you need engineers and workers there. Similarly, for a CPU to work, it needs software. In case of a PC, it is Operating System (OS) which tells CPU about the work to be done, priorities to be set, interrupts to respond, etc. For a microcontroller to work, no such operating system exists (well actually, there are some, like FreeRTOS, where RTOS stands for Real Time Operating System, which is designed to operate on bare hardware like microcontrollers). We write the instructions in form of assembly language or some high level language like C/C++ to tell the CPU of microcontroller how to operate. So, it is basically like you are making your own small sized computer, which can serve you for a particular task. Does it sound interesting?

Now the question is, where you are going to write the code and how you are going to transfer this code to your hardware? Also, it is not like just writing the code. If you have worked with microcontrollers before, you must be familiar with terminologies like code building, compilation, debugging, simulation, etc. You can have a look at the microcontroller based development process at the end of this post by Mayank. Though it mostly deals with AVR microcontrollers, the concepts hold good for any microcontroller, even MSP! Well, these are the necessary steps before you burn your controller with your code. Usually, these all steps are combined into an Integrated Development Environment (IDE). It keeps all paths of your linkers, libraries, source files etc. Sometimes, Flash Programmer which downloads or burns the code into the IC comes with IDE itself. Those who have worked with AVR must have worked with software like AVRDude or eXtreme Burner, to burn their code into controllers. To build and burn the codes in MSP430, there are two major IDEs are available.

  • IAR Embedded WorkbenchIAR Embedded Workbench Kickstart: I personally like this one, so, I will be writing my future posts on this only. It can be bought from IAR Workbench’s website but its limited versions are also available in two ways. One is limited version which stays for 30 days; another is a version with more limitations but with no time limit. I will suggest readers to subscribe the limited version with no time limit. The main limitation of this version is code limit which is limited to 4 KB of C code which is enough for learning purposes. To know more and download the software, visit IAR systems web page.

  • CCSCode Composer Essential Evaluation: Those who have worked with Code Composer Studio for its DSP chips, then you can estimate its working. Anyways, free version of CCS is made available by Texas Instruments, but code size is limited to 16KB of C code. Its installation file size is around 2 GB in comparison with IAR which has size of around 300 MB. To know more about CCS and download the software, visit TI’s webpage.

Please note that, you may get problems while trying to install either of the above software with Windows 8, but both of them work perfectly fine in Windows 7 and Linux.

MSP430 Evaluation Modules and Development Boards

Now that you have gotten a little idea about MSP430, it’s time to get your hands on some of the development boards and platforms. Texas Instruments sells the MSP430 development board with the name ‘LaunchPad’. Two types of LaunchPad are commonly available for beginners by TI. One is ‘MSP430G2 Value Line LaunchPad’ and another is ‘MSP430F5529 USB LaunchPad’. MSP430F5 series is more advanced as compared to MSP430G2 series in terms of more flash memory, more space for RAM, Timers and 12-bit ADC resolution as compared to 10-bit resolution of MSP430G2 series etc. The full comparison between these two LaunchPad is given in detail here by Texas Instruments.

MSP430 Launchpad

The MSP430 Launchpad we will be working with

MSP430G2 Value Line LaunchPad is the cheapest development board available by Texas Instrument. And it comes with 14 and 20 pin DIP target socket in which you can drop any 14 or 20 pin DIP MSP430 device and start developing your application. After you program the device, you can use it as a standalone system and put it in custom printed circuit board or breadboard. You can go for MSP430F5529 USB Launch pad if you need more number of General Purpose Input/Output (GPIO) pins, better ADC resolution, more RAM etc. It clearly depends upon the application where you are going to use the controller. You can buy any of these LaunchPad by Texas Instruments here.

So, readers, that was all about the basics of MSP430. Hope you liked my first post. Don’t forget to tell me about your views. I am waiting for your comments and queries. And subscribe to maxEmbedded to stay updated! :)

Written by–
Chahat Ahuja
VIT University, Vellore

QC and Edited by–
Mayank Prasad (aka Max)
Arizona State University


  1. Hey Awesome article..!

    • Thanks Akshat .. :D

  2. we can also program msp430 launchpads using energia(a open source platform) ;)

    • Hello Muthu, surely we can go for energia IDE also.
      Thanks for commenting about another IDE available for MSP430 :D

  3. Nice post. Thanks for this.

    One question :

    “This is because when we use 32.768 kHz, by the time the timer overflows, it is exactly and accurately 1 second. Can anybody figure out why?”

    I understand that the timer register is 16 bits wide (i.e., overflow will occur after counting FFFFh, So Timer overflow will indicate 2 seconds. Isn’t it?

    • Hi arulsubramaniam,

      Yes, you’re correct. If you load the timer with 0x7FFF (=0d32767), then it will overflow in exactly 1 second. Once the timer overflows, you can set it to auto reload the previously set value.

      The point here is the significance of the value 32768 Hz and not the reload value. Since this a multiple of 2 (2^15 = 32768) and a crystal with this frequency is very common to find in the market, it can be used to generate real world clock signals very accurately and precisely with almost zero error.

  4. “The point here is the significance of the value 32768 Hz and not the reload value. Since this a multiple of 2 (2^15 = 32768) and a crystal with this frequency is very common to find in the market, it can be used to generate real world clock signals very accurately and precisely with almost zero error.”

    The accuracy is a subjective term here. It all depends on how accurate you want the clock to be. If it has to be very precise, then the ppm (parts per million) clock drift rate is to be considered as well.

    It is much better than the RTC/DCO inside the chip for sure though
    . :)

  5. thanx for this post :-)

    Can i get some article about msp430f5529 programming

    • Hello Sushant
      Programming is almost same for all MSP430 controller family. I will add a post on input-output operations very soon. That will surely help you out with the basics of programming. :D

      • Hello Chahat,

        Seems you are guru in embedded controllers. What about the COP8782CN controller from former National Semiconductor.

        Do you know how the ISP works. Could use a step by step explanation ( flowchart ) of program algorithm.

        If you or someone else can help, pls

        thank you

        • Hello Camillus,
          Sorry, but neither of us are familiar with the microcontroller you are talking about. However, the implementation concept remains the same all throughout. And I apologize for the delayed response.

          Best, Max



    • Hello Imran,
      Do you have any specific wireless module (or at least frequency) in mind?

  7. Thank you for this post. I just want to note that RISC actually is the other way around, meaning to simplify the hardware at the cost of doing more complicated things in software.

    • Thank you Masoud. Really appreciate your help. The error is now rectified. Good luck! :)

  8. superb sir please upload more on msp

    • Work in progress :p

      Keep reading, keep sharing ;)

  9. its really awesome article………i like it i want more information on msp430 family using ccs..

  10. hello sir u r just awesome and i’m speechless seriously before controller was just hell to me now i’m getting interest in that but don;t know how to start what should i do sir i suggestions please guide me if possible ?



  1. I/O Port Operations in MSP430 | maxEmbedded - […] my previous post, I discussed about the architecture of MSP430 microcontroller. It is a small computer-on-chip just […]
  2. Using IAR Embedded Workbench with MSP430 - maxEmbedded - […] on getting started with IAR Embedded Workbench for TI MSP430 about which I mentioned in the introductory tutorial on MSP430. We…

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: