Transcript Grace

MSP430 | Ultra-Low Power is in our DNA
Getting Started with the MSP430 LaunchPad
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
MSP430 Released Devices
MSP430 MCUs
An Introduction
Ultra-Low Power
Integration
World’s Lowest Power MCU
Intelligent Analog & Digital Peripherals
• Ultra-Low Power Active Mode
• Peripherals operate in low power modes
• 7 Low Power Modes
• Minimize physical footprint and Bill of Materials
• Instant Wakeup
• Featuring FRAM, USB, RF, Capacitive Touch I/O,
Metrology Engines, LCD, ADC, DAC & MORE
• All MSP430 devices are Ultra-Low Power
Extensive Portfolio, Low Cost Options
Easy to Get Started
Find the right MCU for you
Low cost and simple point of entry
• 400+ devices
• Complete kits starting @ $4.30
• Up 256kB Flash, 18kB RAM, 25+ package options
• GUI-based coding & debugging tools available
• Devices starting at $0.25 with Value Line
• MSP430Ware Software and Resource Package
• Various levels of performance & integration
-Incl. code examples, datasheets, user guides & more!
MSP430 | Ultra-Low Power is in our DNA
MSP430-Enabled Applications
Thousands of applications are
enabled by MSP430 MCUs
Differentiation is possible with MSP430 MCU’s
Ultra-Low Power performance, high analog &
digital peripheral integration, and easy-to-use
tool chain.
MSP430 | Ultra-Low Power is in our DNA
Value Line: 16-bit performance, 8-bit price
UART
16KB
ADC
MSP430G25X3
SC
ADC UART
MSP430G24X3
SC
ADC UART
MSP430G23X3
SC
ADC UART
MSP430G22X3
SC
ADC UART
MSP430G21X3
SC
ADC UART
8KB
MSP430G24X2
SC
ADC
4KB
Flash Size
SC
2KB
MSP430G23X2
SC
ADC
MSP430G22X2
SC
ADC
MSP430G22X1*
ADC
MSP430G21X2
1KB
MSP430G21X1*
.5 KB
SC
SC
SC
ADC
ADC
MSP430G2001*
14-pin
TSSOP/PDIP
10 GPIO
* 8-pin SOIC in development
16-pin
QFN
10 GPIO
20-pin
TSSOP/PDIP
16 GPIO
28-pin
TSSOP
24 GPIO
32-pin
QFN
24 GPIO
Value Line Peripherals
Value Line Peripherals

General Purpose I/O






16-bit Timer_A3



3 capture/compare registers
Extensive interrupt capabilities
WDT+ Watchdog Timer


Independently programmable
Any combination of input, output, and interrupt (edge
selectable) is possible
Read/write access to port-control registers is supported by
all instructions
Each I/O has an individually programmable pull-up/pull-down
resistor
Some parts/pins are touch-sense enabled (PinOsc)
Also available as an interval timer
Brownout Reset


Provides correct reset signal during power up and down
Power consumption included in baseline current draw
Value Line Peripherals

Serial Communication



Comparator_A+





USI with I2C and SPI support
USCI with I2C, SPI and UART support
Inverting and non-inverting inputs
Selectable RC output filter
Output to Timer_A2 capture input
Interrupt capability
8 Channel/10-bit 200 ksps SAR ADC






8 external channels (device dependent)
Voltage and Internal temperature sensors
Programmable reference
Direct transfer controller send results to conversion memory
without CPU intervention
Interrupt capable
Some parts have a slope converter
LaunchPad Development Board
USB Emulator
Connection
Embedded Emulation
6-pin eZ430 Connector
Crystal Pads
Chip Pinouts
Part and Socket
P1.3 Button
Power Connector
LEDs and Jumpers
P1.0 & P1.6
Reset Button
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
What is Code Composer Studio?

Integrated development environment for TI embedded processors




Includes debugger, compiler, editor, simulator, OS…
The IDE is built on the Eclipse open source software framework
Extended by TI to support device capabilities
CCSv5 is based on “off the shelf” Eclipse (version 3.7 in CCS 5.1)

Future CCS versions will use unmodified versions of Eclipse






Drop in Eclipse plug-ins from other vendors or take TI tools and drop them
into an existing Eclipse environment
Users can take advantage of all the latest improvements in Eclipse
Integrate additional tools


TI contributes changes directly to the open source community
OS application development tools (Linux, Android…)
Code analysis, source control…
Linux support soon
Low cost! $445 or $495
Common Tasks

Creating New Projects


Build options



Very simple to create a new project for a device using a template
Many users have difficulty using the build options dialog and find it
overwhelming
Updates to options are delivered via compiler releases and not
dependent on CCS updates
Sharing projects


Easy for users to share projects, including working with version
control (portable projects)
Setting up linked resources has been simplified
Workspaces and Projects
Workspace
Project 1
Link
Project 2
Project 3
Settings and preferences
Project
Project
Project
Source
files
Link
Source files
Source
Header
filesfiles
Link
Header Files
Header
Library
filesFiles
Library files
Library
filessettings
Build
and tool
Build and tool settings Link
Build and tool settings
Source files
Code and Data
Header files
Declarations/Defines
Library files
Code and Data
A workspace contains
your settings and
preferences, as well as
links to your projects.
Deleting projects from
the workspace deletes
the links, not the files
A project contains
your build and tool
settings, as well as
links to your input
files.
Deleting files from the
workspace deletes the
links, not the files
Project Wizard

Single page wizard for majority of
users


Debugger setup included


Next button will show up if a template
requires additional settings
If a specific device is selected, then
user can also choose their connection,
ccxml file will be created
Simple by default

Compiler version, endianness… are
under advanced settings
MSP430 | Ultra-Low Power is in our DNA
Various IDE options
Free Integrated Development Environments (IDE) available
Code Composer Studio
•
Eclipse-based IDE (Compiler, debugger, linker, etc) for all TI embedded processors
•
Unrestricted version available for $495
•
Free versions are available!
• Free 16kB code-limited version available for download
• Free, full-featured, 120-day trial version available
IAR Embedded Workbench
•
Strong third-party IDE offering with project management tools and editor. Includes
config files for all MSP430 devices.
•
Free versions are available!
• Free 4/8/16kB code-limited Kickstart version available for download
• Free, full-featured, 30-day trial version available
MSPGCC
•
Free, Open source, GCC tool chain for MSP430
•
includes the GNU C compiler (GCC), the assembler and linker (binutils), the debugger (GDB)
•
Tools can be used on Windows, Linux, BSD and most other flavors of Unix.
•
Learn more @ http://mspgcc.sourceforge.net/
Other MSP430 IDE options are available! Learn more @ www.ti.com/msp430tools
Lab1: Code Composer Studio
• Lab1:
• Create a new workspace
• Create Lab1 Project
• Add in temperature sense demo
• Compile it and run
Step 1: Create CCS workspace
• Put the Lab files onto your desktop
• Launch CCS v5 Core Edition
• Select a “Workspace” location
18
Step 2: Create a CCS Project
•
•
•
•
•
•
File > New > CCS Project
Project Name: Lab1
Device>Family: MSP430
Variant: MSP430G2452
Project templates and examples
: Empty Project
19
Step 3: Add a File to the CCS Project
•
•
•
Project > Add Files
Navigate to Lab source folder
And select :
Temperature_Sense_Demo.c
20
CCS Window – C/C++ Perspective Overview
1-click project Debug
Independent Debug and
C/C++ Project Perspectives
Project Outline
• Shortcut to project parts
Project View
• List of all
Projects
Problems View
• Information,
Warnings, Errors
Console
• Build Information
Code Window
• Real-time breakpoints, Syntax highlighting
21
CCS Window – Debug Perspective Overview
1-click project Debug
Independent Debug
and C/C++ Project
Perspectives
Highly configurable
window layout
• User preferences
• Plugin support
Target control
• Start
• Stop
• Halt
• Stepping
• Stack Trace
Real-time, in-system
MSP430 information
• Register access
• Flash, RAM, Info
segment access
• Disassembly view
Program Size Info
Code Window
• Real-time breakpoints, Syntax highlighting
22
Step 4: Build & Debug a CCS Project
Click the “BUG” to build the
code & launch the debugger
23
Step 5: Run, Terminate a CCS Project
“RUN”
“TERMINATE”
Perspectives
24
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
MSP430G2xx Structure
Ultra-low Power





0.1uA power down
0.8uA standby mode
220uA / 1MIPS
<1us clock start-up
<50nA port leakage
Zero-power brown-out reset
(BOR)
Clock
FLASH
RISC
CPU
16-bit
MAB 16
MDB 16
Ultra-Flexible





6
0.5k-16kB In-System
Programmable (ISP) Flash
16-bit Timer
SPI, I2C
10bit ADC
Embedded emulation
RAM
...
JTAG/Debug

...
ACLK
SMCLK
Digital
Peripheral
Analog
Peripheral
16-bit RISC CPU





7
Deep single-cycle register
file
 4 special purpose
 12 general purpose
 No accumulator
bottleneck
RISC architecture
 27 core instructions
 24 emulated instructions
 7 address modes
Atomic memory-to-memory
addressing
Bit, byte and word
processing
Constant generator
15
R0/PC
R1/SP
R2/SR
R3/CG
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
R14
R15
0
16
16
16-bit ALU
Memory Map
G2452 shown




Flash programmable via JTAG or
In-System (ISP)
ISP down to 2.2V. Single-byte or
Word
Main memory: 512 byte segments
(0-n). Erasable individually or all
Information memory: 64 byte
segments (A-D)


Section A contains device-specific
calibration data and is lockable
Programmable Flash Memory
Timing Generator
0FFFFh
0FFE0h
FFDFh
0E00h
Interrupt Vector Table
010FFh
01000h
Information
Memory
02FFh
0200h
01FFh
0100h
0FFh
010h
0Fh
0h
Flash/ROM
RAM
16-bit
Peripherals
8-bit
Peripherals
8-bit Special
Function
Registers
Clock System


Very Low Power/Low Frequency
Oscillator (VLO)
 4 – 20kHz (typical 12kHz)
 500nA standby
 0.5%/°C and 4%/Volt drift
Crystal oscillator (LFXT1)
 Programmable capacitors
 Failsafe OSC_Fault
Minimum pulse filter
Digitally Controlled Oscillator
(DCO)
 0-to-16MHz
 + 3% tolerance
 Factory calibration in Flash
VLO
Min. Puls
Filter
ACLK
Peripherals
OSC_Fault
MCLK
CPU


16MHz
DCO
SMCLK
Peripherals
On PUC, MCLK and SMCLK are
sourced from DCOCLK at ~1.1 MHz.
ACLK is sourced from LFXT1CLK in
LF mode with an internal load
capacitance of 6pF.
G2xxx - No Crystal Required DCO
// Setting the DCO to 1MHz
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
while(1);
// Erased calibration data? Trap!
BCSCTL1 = CALBC1_1MHZ;
// Set range
DCOCTL
// Set DCO step + modulation
= CALDCO_1MHZ;
G2xx1 devices have 1MHz DCO constants only. Higher frequencies must be
manually calibrated

G2xx2 & G2xx3 have all 4 constants + calibration values for the ADC & temperature
sensor

Run Time Calibration of the VLO
Calibrated 1 MHz DCO
TAR
fVLO = 8MHz/Counts
CCRx
ACLK/8 from VLO





Calibrate the VLO during runtime
Clock Timer_A runs on calibrated 1MHz DCO
Capture with rising edge of ACLK/8 from VLO
fVLO = 8MHz/Counts
Code library on the web (SLAA340)
System MCLK & Vcc
 Match needed clock speed with required Vcc to achieve the lowest power
 External LDO regulator required
 Unreliable execution results if Vcc < the minimum required for the selected frequency
 All G2xxx device operate up to 16MHz
Lab2: Basic Clock Configure
• Lab2
• Import Lab2 project to Workspace
• Setup DCO = 1MHz
• Use DCO/8 as MCLK, LED Blink
• Use VLO/8 as MCLK, LED Blink
Lab 2:
// Configure Basic Clock
BCSCTL1 = __________; // Set range
DCOCTL = ___________;// Set DCO step + modulation
BCSCTL3 |= LFXT1S_2;// Set LFXT1
// Configure MCLK
BCSCTL2 |= ________ + DIVM_3; // Set MCLK
• Reference User’s Guide, Datasheet & Schematic
Lab 2: BCSCTL2 in 2xx User Guide
Lab 2: BCSCTL2 in MSP430G2453 head file
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
Interrupts and the Stack
Entering Interrupts
 Any currently executing instruction is completed
 The PC, which points to the next instruction, is pushed onto the stack
 The SR is pushed onto the stack
 The interrupt with the highest priority is selected
 The interrupt request flag resets automatically on single-source flags;
Multiple source flags remain set for servicing by software
 The SR is cleared; This terminates any low-power mode; Because the
GIE bit is cleared, further interrupts are disabled
 The content of the interrupt vector is loaded into the PC; the program
continues with the interrupt service routine at that address
Vector Table
Interrupt Source Interrupt
Flag
System
Interrupt
Word Address
Priority
Power-up
External Reset
Watchdog Timer+
Flash key violation
PC out-of-range
PORIFG
RSTIFG
WDTIFG
KEYV
Reset
0FFFEh
31
(highest)
NMI
Oscillator Fault
Flash memory access
violation
NMIIFG
OFIFG
ACCVIFG
Non-maskable
Non-maskable
Non-maskable
0FFFCh
30
0FFFAh
29
0FFF8h
28
Comparator_A+
CAIFG
maskable
0FFF6h
27
Watchdog Timer+
WDTIFG
maskable
0FFF4h
26
Timer_A3
TACCR0
CCIFG
maskable
0FFF2h
25
Timer_A3
TACCR1
CCIFG TAIFG
maskable
0FFF0h
24
0FFEEh
23
0FFECh
22
ADC10
ADC10IFG
maskable
0FFEAh
21
USI
USIIFG
USISTTIFG
maskable
0FFE8h
20
I/O Port P2 (2)
P2IFG.6
P2IFG.7
maskable
0FFE6h
19
I/O Port P1 (8)
P1IFG.0 to
P1IFG.7
maskable
0FFE4h
18
0FFE2h
17
0FFE0h
16
0FFDEh to 0FFCDh
15 - 0
Unused
ISR Coding
#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR(void)
{
IE1 &= ~WDTIE;
// disable interrupt
IFG1 &= ~WDTIFG;
// clear interrupt flag
WDTCTL = WDTPW + WDTHOLD;
// put WDT back in hold state
BUTTON_IE |= BUTTON;
// Debouncing complete
}
#pragma vector - the following function is an ISR for the listed vector
_interrupt void - identifies ISR name
No special return required
Controlling GPIO Ports
GPIO Register
GPIO Code Example
Input Register PxIN
P1DIR |= BIT4;
P1SEL |= BIT4;
Output Register PxOUT
Direction Register PxDIR
Function Select PxREN
Function Select PxSEL
Function Select PxSEL2
Interrupt Edge PxIES
Interrupt Enable PxIE
Interrupt Flags PxIFG
26
For GPIO Int
P1DIR |= BIT0;
P1OUT |= BIT0;
Pin Muxing
 Each
pin has multiple functions
 Register bits select pin function
 See device specific datasheet
Lab3: GPIO
Lab3
• Setup P1.3 to Button
• Setup P1.0 to LED control
• LED toggle with Button
Lab 3:
P1DIR
P1IES
_____
_____
|=
|=
&=
|=
BIT0; // Set P1.0 to output direction
BIT3; // P1.3 Hi/lo edge
~BIT3; // P1.3 IFG cleared
BIT3; // P1.3 interrupt
// Port1 interrupt service routine
#pragma vector = __________
__interrupt void Port_1(void)
// Port1 interrupt service routine
P1OUT ^= BIT0;
// P1.0 = toggle
______ &= ~BIT3; // P1.3 IFG cleared
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
Timer_A







Asynchronous
16-Bit timer/counter
Continuous,
up-down,
up count modes
Multiple
capture/compare
registers
PWM outputs
Interrupt vector
register for fast
decoding
Can trigger DMA
transfer
On all MSP430s
16-bit Timer
TAR
TACLK
ACLK
SMCLK
INCLK
Set
TAIFG
CCR0
CCR1
CCR2
Capture
Mode
CCI2A
CCI2B
GND
VCC
TACCR2
Compararator 2
CCI
SCCI
Y
A
EN
Set
CCIFG2
Output
Unit2
70
Count
Mode
Timer_A Counting Modes
Stop/Halt
Continuous
Timer is halted
Timer continuously counts up
0FFFFh
0h
0FFFFh
Up
Up/Down
Timer counts between 0 and CCR0
Timer counts between 0 and CCR0 and 0
0FFFFh
CCR0
CCR0
0h
0h
CCR – Count Compare Register
71
UP/DOWN Mode
Timer_A Interrupts
The Timer_A Capture/Comparison Register 0 Interrupt Flag
(TACCR0) generates a single interrupt vector:
TACCR0 CCIFG
TIMERA0_VECTOR
No handler required
TACCR1, 2 and TA interrupt flags are prioritized and combined
using the Timer_A Interrupt Vector Register (TAIV) into another
interrupt vector
TACCR1 CCIFG
TACCR2 CCIFG
TAIV
TIMERA1_VECTOR
TAIFG
Your code must contain a handler to determine which Timer_A1
interrupt triggered
72
TAIV Handler Example
TAIV
0 0 0 0 0 0 0 0 0 0 0 x x x x 0
15
0
#pragma vector = TIMERA1_VECTOR
__interrupt void TIMERA1_ISR(void)
{
switch(__even_in_range(TAIV,10))
{
case 2 :
// TACCR1 CCIFG
P1OUT ^= 0x04; break;
case 4 :
// TACCR2 CCIFG
P1OUT ^= 0x02; break;
case 10 :
// TAIFG
P1OUT ^= 0x01; break;
}
}
IAR C code
73
Source
TAIV Contents
No interrupt pending
0
TACCR1 CCIFG
02h
TACCR2 CCIFG
04h
Reserved
06h
Reserved
08h
TAIFG
0Ah
Reserved
0Ch
Reserved
0Eh
0xF814
0xF818
0xF81A
0xF81C
0xF81E
0xF820
0xF822
0xF824
0xF828
0xF82A
0xF82E
0xF830
0xF834
add.w
reti
jmp
jmp
reti
reti
jmp
xor.b
reti
xor.b
reti
xor.b
reti
&TAIV,PC
0xF824
0xF82A
0xF830
#0x4,&P1OUT
#0x2,&P1OUT
#0x1,&P1OUT
Assembly code
Timer_A PWM Example
CCR2
CCR2
CCR2
MSP430F11x1
TEST
Vcc
P2.5
Vss
XOUT
XIN
RST
P2.0
P2.1
P2.2



74
TA2/P1.7
P1.6
P1.5
P1.4
P1.3
TA1/P1.2
P1.1
P1.0
P2.4
P2.3
CCR1
CCR1
CCR0
CCR1
CCR0
CCR0
Completely automatic
Independent frequencies with different duty cycles can be
generated for each CCR
Code examples on the MSP430 website
Direct Hardware Control With Timer_A
Example: ADC12
65536
TAR
TACCR1 = 557
0
2s
TAIFG:
Reference & ADC on
TACCR1:
Ref delay / ADC trigger
ADC12IFG:
Process ADC result
Ref/ADC Off
17ms
CPU Active Mode
UART ...
75
WDT+ Module: Overview
WDTCTL
• Found on all MSP430 devices
• Two modes
 Watchdog
 Interval timer
16-Bit
Counter
• Access password protected
• Separate interrupt vectors for POR
and interval timer
Password
Compare
EQU
EQU
R/W
• Sourced by ACLK or SMCLK
• Controls RST/NMI pin mode
• WDT+ adds failsafe/protected clock
MDB
Control
Register
Watchdog Timer Failsafe Operation


If ACLK / SMCLK fail, clock
source = MCLK
(WDT+ fail safe feature)
If MCLK is sourced from a
crystal, and the crystal
fails, MCLK = DCO
(XTAL fail safe feature)
16-bit
Counter
CLK
MCLK
Fail-Safe
Logic
SMCLK
1
ACLK
1
WDTSSEL
A
EN
WDTHOLD
WDT clock source …
WDT: Common Design Issues
• Program keeps resetting itself!
• Program acting wacky – how did execution get to
that place?
 Try setting interrupt near beginning of main() to see if code is re-starting
• CPU seems to freeze before even getting to first
instruction
 Is this a C program with a lot of initialized memory?
 Generally can occur only with very large-memory versions of the device
 Solution: Use __low_level_init() function, stop watchdog there
void main(void)
{
WDTCTL = WDTPW+WDTHOLD;
.
.
}
// Stop the dog
WDT: Interval Timer Function
• No PUC issued when interval
is reached
• If WDTIE and GIE set when
interval is reached, a WDT
interval interrupt generated
instead of reset interrupt
• Selectable intervals
Lab4: Timer and Interrupts
Lab4
• Use TimerA to implement Lab2
• Configure Timer_A3 Count Cycle:
5100
•Occurs a interrupt when TAR =100
Lab 4:
// Configure TimerA
TACTL = __________________; // Source: ACLK, UP mode
CCR0 = 5100;
//Timer count 5100
CCR1 = 100;
//Timer count 100
CCTL0 = CCIE;
//CCR0 interrupt enabled
CCTL1 = CCIE;
//CCR1 interrupt enabled
// Timer A0 interrupt service routine
#pragma vector = __________
__interrupt void Timer_A0(void)
// Timer A1 interrupt service routine
#pragma vector = __________
__interrupt void Timer_A1(void)
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
Ultra Low Power Feature
Ultra-Low Power Is In Our DNA
 MSP430
designed for ULP
from ground up
 Peripherals
optimized to
reduce power and
minimize CPU usage
 Intelligent,
low power
peripherals can operate
independently of CPU and
let the system stay in a
lower power mode longer
www.ti.com/ulp
 Multiple operating modes
 100
nA power down (RAM retained)
 0.3 µA standby
 110 µA / MIPS from RAM
 220 µA / MIPS from Flash
 Instant-on stable high-speed clock
 1.8 - 3.6V single-supply operation
 Zero-power, always-on BOR
 <50nA pin leakage
 CPU that minimizes cycles per task
 Low-power intelligent peripherals
ADC that automatically transfers data
Timers that consume negligible
power
100 nA analog comparators
 Performance over required operating
conditions
Ultra-Low Power Activity Profile
Active
Average
Low
Power
Mode
 Minimize
active time
 Maximize time in Low Power Modes
 Interrupt driven performance on-demand with <1μs wakeup time
 Always-On, Zero-Power Brownout Reset (BOR)
MSP430 Low Power Modes
CPU Off
DCO on
ACLK on
Active
DCO on
ACLK on
45µA
220µA
LPM0
<1µs
Off
All
Clocks Off
100nA
<1µs
LPM4
• RAM/SFR retained
Stand-by
DCO off
ACLK on
0.3µA
Specific values vary by device
LPM3
• RTC function
• LCD driver
• RAM/SFR retained
Low Power Mode Configuration
Reserved
V
SCG1 SCG0 OSC
OFF
CPU
OFF
GIE
N
Z
C
R2/SR
Active Mode
0
0
0
~ 250uA
LPM0
0
0
0
1
~
LPM3
1
1
0
1
~ 0.8uA
LPM4
bis.w
0
#CPUOFF,SR
1
1
1
1
35uA
~ 0.1uA
; LPM0
LPM in Assembly
34
Low Power Modes In Stack
Item1
Item2
Item1
Item2
PC
SR=0018
SP
Mainloop
bis.w
xor.b
jmp
#CPUOFF+GIE,SR
#01h,&P1OUT
Mainloop
WDT_ISR
bic.w
reti
#CPUOFF,0(SP)
ORG
DW
ORG
DW
0FFFEh
RESET
0FFF4h
WDT_ISR
SP
Item1
Item2
PC
SR=0008
Item1
Item2
PC
ORG
0F000h
RESET
mov.w
#300h,SP
mov.w
#WDT_MDLY_32,&WDTCTL
bis.b
#WDTIE,&IE1
bis.b
#01h,&P1DIR
SP
SR
LPM in C
35
ULP is Easy!
Using our Low Power Modes are easy
void main(void)
{
WDT_init(); // initialize Watchdog Timer
while(1)
{
__bis_SR_register(LPM3_bits + GIE);
activeMode();
}
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer (void)
{
__bic_SR_register_on_exit(LPM3_bits);
}
// Enter LPM3, enable interrupts
// in active mode. Do stuff!
// Clear LPM3 bits from 0(SR), Leave LPM3, enter active mode
10-yr Embedded Real-Time Clock
= LPM3 + RTC_Function
32768
100µs
1000000µs
0.80µA + 250µA *
0.80µA + 0.030µA = 0.83µA
1mA
100µA
MSP430F20x1
Interface
// Partial RTC_Function
incrementseconds();
incrementminutes();
incrementhours();
//
10µA
1µA
Time
Low-Power Operation

Power-efficient MSP430 apps:




Minimize instantaneous current draw
Maximize time spent in low power modes
The MSP430 is inherently low-power, but your
design has a big impact on power efficiency
Proper low-power design techniques make the
difference
“Instant on” clock
Move Software Functions to Peripherals
MCU
P1.2
// Endless Loop
for (;;)
{
P1OUT |= 0x04; // Set
delay1();
P1OUT &= ~0x04; // Reset
delay2();
}
100% CPU Load
47
// Setup output unit
CCTL1 = OUTMOD0_1;
_BIS_SR(CPUOFF);
Zero CPU Load
Power Manage Internal Peripherals
MSP430F20x1
Px.x
CAON
P1.0
Comparator_A
+
Ref
-
P1OUT |= 0x02;
CACTL1 = CARSEL + CAREF_2 + CAON;
if (CAOUT & CACTL2)
P1OUT |= 0x01;
else
P1OUT &= ~0x01;
P1OUT &= ~0x02;
CACTL1 = 0;
48
// Power divider
// Comp_A on
// Fault
// de-power divider
// Disable Comp_A
Power Manage External Devices
MCU
TLV2760
Sensor
SD
Px.x
"1uA OPA"
Sensor
ADC
ADC
0.01uA = Shutdown
20uA = Active
--------------------------0.06uA = Average
1uA = Quiescent
1uA = Active
----------------------1uA = Average
Op-amp with shutdown can be 20x lower total power
49
MCU
Unused Pin Termination

Digital input pins subject to shoot-through current


Input voltages between VIL and VIH cause shoot-through if
input is allowed to “float” (left unconnected)
Port I/Os should



Driven as outputs
Be driven to Vcc or ground by an external device
Have a pull-up/down resistor
Lab5: Low Power Mode
Lab5
• Optimize Lab4 to implement LPM
Lab 5:
Enter Low Power Modes with just 1 line of code!
_BIS_SR(_________);//Enter Low Power Mode;
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
Fast Flexible ADC10

10-bit 8 channel SAR ADC





200 ksps+
Selectable conversion clock
Autoscan









6 external channels
Vcc and internal temperature
Single
Sequence
Repeat-single
Repeat-sequence
Internal or External reference
Timer-A triggers
Interrupt capable
Data Transfer Controller (DTC)
Auto power-down
1.5V or 2.5V
Auto
AVSS
S/H
AVCC
VRVR+
10-bit SAR
ADC10SC
TA1
TA0
TA2
Batt Temp
Direct
Data
Transfer
Transfer
Controller
Controller
RAM, Flash,
Peripherals
Sample Timing
 Reference must settle for <30uS
 Selectable hold time
 13 clock conversion process
 Selectable clock source
- ADC10OSC (~5MHz)
- ACLK
- MCLK
- SMCLK
AUTO
Autoscan + DTC Performance Boost
ADC
DTC
// Software
Res[pRes++] = ADC10MEM;
ADC10CTL0 &= ~ENC;
if (pRes < NR_CONV)
{
CurrINCH++;
if (CurrINCH == 3)
CurrINCH = 0;
ADC10CTL1 &= ~INCH_3;
ADC10CTL1 |= CurrINCH;
ADC10CTL0 |= ENC+ADC10SC;
}
70 Cycles / Sample
Data2
Data1
Data0
Data2
// Autoscan + DTC
_BIS_SR(CPUOFF);
Fully Automatic
Comparator_A
0V
VCC
CAEX
CA0




References usable
internally and
externally
Low-pass filter
selectable by software
Input terminal
multiplexer
One interrupt vector
with enable
CA1
+
+
CCI1B
--
CAOUT
0V
set CAIFG
Flag
VCC
CAON
CAREF
0.5xVCC
0.25xVCC
G
D
S
Comparator-Based Slope ADC
10-bit+ accuracy
 Resistive sensors
 Very low cost
 App note SLAA038
Px.x

REF
Px.x
+
-
Timer_A
Capture
VSS
t_x = R_x x C x ln VCAREF
Vcc
...
t_NTC
R_NTC = 10k x
t_10k
0.25xVCC
~0.55V
Example: Thermistor
V1
VCC
RREF = 10K, RM = NTC
 VCAREF = VCC*e(-t/RC)
 Relationship simplifies to single
multiply & divide operations

CAREF
VSS
t_5tu
R_NTC
=
10k
t_NTC
V
C x ln CAREF
Vcc
t_10k
VCAREF
C x ln
Vcc
t_10k
t_5tu
t_NTC
t_NTC
R_NTC = 10k x
t_10k
t
Timer Triggers – Low-Power
Timer
Memory
ADC
// Interrupt
; MSP430 ISR to start conversion
BIS #ADC12SC,&ADC12CTL0 ; Start conversion
RETI
; Return
;
CPU cycles
6
5
5
16
Timer triggered interrupts – no software wait loops
64
Selecting an MSP430 ADC
channels
ADC10
ADC12
SD16
SD16_A
8
12
3 ind
4 mux'd
f SAM PLE (ksps)
SINAD
res
(typ)
min
max
34
34
200+
200+
~4
~0.03
 Voltage
~5
10
12
16
16
57
68
85
85
A IN
Vss to Vref
Vss to Vref
+/-600mV
+/-600mV
reference
Ref IN Ref OUT Ref I_OUT
1.4-3.6 1.5/2.5V
1.4-3.6 1.5/2.5V
1.0-1.5 1.2V
1.0-1.5 1.2V
+/-1mA
+/-1mA
+/-1mA
+/-1mA
triggering
gain
SW/Timer/Cont N/A
SW/Timer/Cont N/A
SW/Cont
to 32x
SW/Cont
to 32x
features
DTC
Conv Mem
Preload
Buffered input
range to be measured?
Bits
24
 Max frequency for AIN?
20
Sigma-Delta
 How much resolution?
16
SAR
 Differential inputs?
12
Slope
 Reference range?
8
10
100 1k 10k 100k 1M
Samples
per Second
 Multiple channels?
Lab6: ADC10
• Measure internal temperature
•Additional CCS features
Lab 6:
//Configure ADC10
// Choose ADC Channel as Temp Sensor
ADC10CTL1 = _______ + ADC10DIV_3;
//Choose ADC Ref sourceCCTL1
ADC10CTL0 = _______ + ADC10SHT_3 + REFON + ADC10ON +ADC10IE;
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
USI



MSP430G2xx1/2 devices
Variable length shift
register
Supports I2C





Supports SPI




83
START/STOP detection
SCL held after START
SCL held after counter
overflow
Arbitration lost
detection
8/16-bit Shift Register
MSB/LSB first
Flexible Clocking
Interrupt Driven
SDO
8/16-Bit Shift
Register
Bit Counter
USIIFG
USIIFG
USISTTIFG
SCLK
ACLK
SMCLK
SWCLK
TA0
TA1
TA2
SDA
SDI
START
STOP
Detect
SCL Hold
Divider
HOLD
USIIFG
USISTTIFG
USISTP
SCL
SCLK
USI for Data I/O
 Data
shift register: up to 16
bits supported
 Number of bits transmitted
and received is controlled
by a bit counter
 Transmit and Receive is
simultaneous
 Data I/O is user-defined:
MSB or LSB first
 Bit counter automatically
stops clocking after last bit
& sets flag
 No data buffering needed
84
Data Shift
Register
Data I/O
USICNTx
Bit Counter
USISSELx
SCLK
ACLK
SMCLK
SMCLK
USISWCLK
TA0
TA1
TA2
USIDIVx
Clock Divider
/1/2/4/8…/128
HOLD
USIIFG
Set USIIFG
USI Reduces CPU Load for SPI
Peripheral
MSP430
SCLK
SDO
SDIN
//Shift16_inout_Software
SR = DATA;
for (CNT=0x10;CNT>0;CNT--)
{
P2OUT &= ~SDO;
if (SR & 0x8000)
P2OUT |= SDO;
SR = SR << 1;
if (P2IN & SDIN)
SR |= 0x01;
P2OUT |= SCLK;
P2OUT &= ~SCLK;
}
425 Cycles
85
// Shift16_inout_USI
USISR |= DATA;
USICNT |= 0x10;
10 Cycles




I2C Slave has as little as 4us
from clock edge to data
Traditional software-only
solution allows time for little else
USI hardware enables practical
and compliant I2C
Code on MSP430 website
USCI


Designed for Ultra-Low Power:
 Auto-Start from any
Low-Power Mode
Two Individual Blocks:








SMCLK
ACLK
UCAxCLK
USCI_A:
UART or SPI
USCI_B:
SPI or I2C
Double Buffered TX/RX
Baudrate/Bit Clock Generator:

USCI_A
Auto-Baud Rate Detect
Flexible Clock Source
UART
SPI
IrDA
7
UCx
Serial Interface
USCI_B
SMCLK
ACLK
UCBxCLK
RX glitch suppression
DMA enabled
Error Detection
Recommended USCI initialization/re-configuration
process is shown in your workbook.
88
Baud Rate
Generator
SPI
I2C
Bit Clock
Generator
4
Serial Interface
UCx
USCI Enhanced Features





New standard MSP430 serial interface
Auto clock start from any LPMx
Two independent communication blocks
Asynchronous communication modes
 UART standard and multiprocessor protocols
 UART with automatic Baud rate detection
(LIN support)
 Two modulators support n/16 bit timing
 IrDA bit shaping encoder and decoder
Synchronous communication modes
 SPI (Master & Slave modes, 3 & 4 wire)
 I2C (Master & Slave modes)
UxRXBUF
Receiver Shift
Register
UCLKI
ACLK
SMCLK
SMCLK
URXD
SOMI
Baud-Rate
Generator
STE
SIMO
Transmit Shift
Register
UTXD
UxTXBUF
Clock Phase and Polarity
89
UCLK
USCI Baudrate Generator


Oversampling Baud Rate Generation
Two Modulators:


UCBRSx and UCBRFx select modulation pattern
RX sampled using BITCLK16
LSB UCAxBR0
UC0CLK
ACLK
SMCLK
SMCLK
UCAxBR1
8
8
Prescaler/Divider
1st Modulator
BITCLK16
3
UCBRSx
BITCLK16
/16
RXD
2nd Modulator
4
UCBRFx
90
BITCLK
1 Bit
Sampling for majority votes
Value Line Communication Modules
USI
USCI
Universal Serial
Communication Interface
G2xx1/2
U
A
R
T
S
P
I
I
2
C
82
Two modulators; supports
n/16 timings
- Auto baud rate detection
- IrDA encoder & decoder
- Simultaneous USCI_A
USCI_B (2 channels)
Two SPI (one each on
USCI_A and USCI_B)
- Master and slave modes
- 3 and 4 wire modes
- Simplified interrupt usage
- Master and slave modes
- Up to 400kbps
Universal Serial
Interface
G2xx3
--. and
- One SPI available
- Master and slave modes
- SW state machine needed
- Master and slave modes
Low-Overhead UART Implementation
MSP430
TA0/P1.1
P2.2/TA0
RXD
compare - logic level latched in SCCI
- add 1 bit length to CCR0
TXD
SCCI
A
Y EN
Stop
Capture/Compare
Start
Output
Unit0
- CCR0 = TAR
- add 1.5 bit length to CCR0
- switch to compare mode
OUTMODx




76
100% hardware bit latching and output
Full speed from LPM3 and LPM4
Low CPU Overhead
App Note SLAA078 on web
Software UART Implementation






A simple UART implementation, using the Capture &
Compare features of the Timer to emulate the UART
communication
Half-duplex and relatively low baud rate (9600 baud
recommended limit), but 2400 baud in our code (1 MHz DCO
and no crystal)
Bit-time (how many clock ticks one baud is) is calculated
based on the timer clock & the baud rate
One CCR register is set up to TX in Timer Compare mode,
toggling based on whether the corresponding bit is 0 or 1
The other CCR register is set up to RX in Timer Capture
mode, similar principle
The functions are set up to TX or RX a single byte (8-bit)
appended by the start bit & stop bit
Application note: http://focus.ti.com/lit/an/slaa078a/slaa078a.pdf
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
GraceTM
Grace
™
A free, graphical user interface that
generates source code and eliminates
manual peripheral configuration
Visually Enable & Configure MSP430 Peripherals
Developers can interface
with buttons, drop downs,
and text fields to
effortlessly navigate high
above low-level register
settings
Grace generates fully
commented C code for all
F2xx and G2xx Value Line
Microcontrollers from
MSP430
What is Grace?
Grace – Graphical Code Engine
Is:
• Generates MSP430 peripheral initialization code in CCSv4
• Enable a new user to have running program in 15 minutes
• Heavy emphasis on ease of use
• Currently in “Public Beta” stage
• Will extend to cover all MCU devices
Is not:
• Graphical application builder
01/26/2011
TI Confidential – NDA Restrictions
98
Project Structure and Build Flow
“xxxxx.cfg”
Application
C/C++
Source Files
This is the device peripheral configuration file and
is edited with the graphical Grace view.
“src” Folder
Automatically generated inside the “Debug” or
“Release” folder. Contains MSP430 C-code
that initializes all configured peripherals.
C/C++ Compiler
01/26/2011
Linker
TI Confidential – NDA Restrictions
Final Executable
MSP430 Output File
99
User Code Skeleton Example
/*
* ======== Standard MSP430 includes ========
*/
#include <msp430.h>
You know this one…
/*
* ======== Grace related includes ========
*/
#include <ti/mcu/msp430/csl/CSL.h>
/*
* ======== main ========
*/
int main(int argc, char *argv[])
{
// Activate Grace-generated configuration
CSL_init();
Master include file for all
Grace-related content
Performs all Graceconfigured peripheral setup
__enable_interrupt(); // Set GIE
// >>>>> Fill-in user code here <<<<<
User code from here…
return (0);
}
01/26/2011
TI Confidential – NDA Restrictions
100
Grace – Adding a Peripheral
• Right-click on the peripheral and select “Use”
• All blocks shaded blue can be configured
01/26/2011
TI Confidential – NDA Restrictions
101
How to tell a peripheral is added?
• Look at the bottom left corner of the peripheral on the CSL
view, it will show a checkmark if the peripheral is initialized.
01/26/2011
TI Confidential – NDA Restrictions
102
Grace – Navigation
• Left-click on a peripheral to navigate to its detail view
• Use home button to go back to the top-level device view
• Forward/backward buttons are available as well
01/26/2011
TI Confidential – NDA Restrictions
103
Grace – Configuring a Peripheral
• Each peripheral has 4 different representations:
“Overview,”
“Basic User”,
“Power User”,
“Registers”
• You can edit any
of the them, they
are all connected
• Validate the
current config by
clicking “Refresh”
01/26/2011
TI Confidential – NDA Restrictions
104
Grace – Removing a Peripheral
• Right-click on the peripheral and select “Stop Using”
01/26/2011
TI Confidential – NDA Restrictions
105
Lab8: Grace
• Use Grace to configure all the
required peripherals
• To do Lab3 again
• Enter LPM4
Lab 8: step by step
• Disable the Watchdog timer
• Configure the DCO to run off the internal pre-calibrated
8MHz constants
• Setup the LaunchPad’s S2 button for interrupt operation
• Enter LPM4 in the main() function
• Provide a button interrupt handler that clears the IFGs and
wakes up the MCU upon return
• Toggle between the red LED in main()
• Enter LPM4 in the main() again
01/26/2011
TI Confidential – NDA Restrictions
107
Agenda
• Introduction to Value Line
• Code Composer Studio
• CPUX and Basic Clock Module
• Interrupt and GPIO
• TimerA and WDT+
• Low-Power Optimization
• ADC10 and Comparator_A+
• Serial Communications
• Grace
• Capacitive Touch Solution
What is Capacitive Touch?
C4
C3
text
C1
C2
A change in Capacitance …

When a conductive element is present - Finger or stylus
• Add C3 and C4, resulting in an increase in capacitance C1 + C2 + C3||C4
• This becomes part of the free space coupling path to earth ground

When the dielectric (typically air) is displaced
• Thick gloves or liquid results in air displacement and change in dielectric
• Capacitance is directly proportional to dielectric, capacitance (C2) increases
(air ~1, everything else > 1)
MSP430 Capacitive Touch Options
Pin oscillator method
(PinOsc with internal RO)
< 3uA/Button
No external components required
Timer used
Currently MSP430G2xx2 and MSP430G2xx3
RO method
10uA/Button
Most robust against interference
Timer used, comparator used
MSP430 devices with comparator
RC method
Lowest power method
Supports up to 16 keys
GPIO plus timer used
Any MSP430 device
1uA/Button
Library Structure
Configuration
APPLICATION LAYER:
0/1
Z
X
Offset
Array of deltas
A
Schedule:
Sensor
Peripherals
Period definition
16bit
Capacitance
Compensation
Capacitance Sensor
Sensor Delta
Wheel
Slider
Proximity
Button
CAP TOUCH
LAYER
SCHEDULER
Sensor:
Electrodes
Reference
Sensor Type
Measurement Method
Peripherals
Peripheral settings
Measurement Parameters
Determination of threshold crossing
PHYSICAL LAYER:
PinOsc
Fast Scan RO
RO
RC
HAL
Filter Method Type:
Element:
Port I/O
definitions
Capacitive Touch BoosterPack
Part Number: 430BOOST-SENSE1
• Capacitive Touch plug-in
for LaunchPad
• Touch button, scroll wheel
& proximity sensor
• Includes MSP430G2xx2
with Cap Touch I/O module
• Example design for scroll
wheels & Proximity sensor
• Full support for Capacitive
Touch Library
• Only $10
• www.ti.com/capacitivetouch
Thank you!