40
1 5/22/2008 1 Precise Timing with MSP430 Peter Forstner 2 Agenda Oscillators, the source of precise timing Internal Oscillators DCO, VLO, REFO Crystal oscillators LFXT1 and XT2 FLL (Frequency locked loop) and calibration Precise Timing with Peripherals Temperature measurement with Comparator_A Software UART with Timer_A USART and USCI Sampling with ADC Sample rate of DAC

Realizing Precision Timing With the MSP430

Embed Size (px)

Citation preview

Page 1: Realizing Precision Timing With the MSP430

1

5/22/2008 1

Precise Timing with MSP430Peter Forstner

2

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

Page 2: Realizing Precision Timing With the MSP430

2

3

MSP430F2xx Basic Clock Module+

MCLK

CPUOFF

LFXT1CLK

DCOCLK

XIN

XOUTLFXT1 Oscillator

SMCLK

SCG1

ACLK

VCC

DCOoff

OSCOFF XTS

LF XT

MODx

n

n+1

0V

Auxiliary Clock

DIVAx

Divider/1/2/4/8

LFOff XT1Off0V

Divider/1/2/4/8

DIVMx

01

Divider/1/2/4/8

DIVSx

01

01

XT2OUT

XT2IN

XT

XT2Off

SCG0Modulator

01

01

RSELx

DCGenerator

XT2 Oscillator

Main System Clock

Sub System Clock

DCOR

P2.5/Rosc

DCOx

XCAPx

LFXT1Sx

10else

InternalLP/LF

Oscillator

XT2S

SELS

00011011

Min. PulsFilter

Min. PulsFilter

Min. PulsFilter

Connected only whenXT2 not present on-chip

DCODigitally Controlled Oscillator

~100kHz … >16MHz

XT2Crystal Oscillator400kHz … 16MHz

On high end MSP430

LFXT1Crystal Oscillator

32768Hz400kHz … 16MHz

VLOInternal very low power,low frequency oscillator

~12kHz

CPU

Peripherals

Peripherals

4

MSP430F4xx FLL+ Clock Module

DCODigitally Controlled Oscillator

~100kHz … >8MHz

XT2Crystal Oscillator400kHz … 8MHz

On high end MSP430

FLLFrequency Locked Loop

LFXT1Crystal Oscillator

32768Hz400kHz … 8MHz

CPU

Peripherals

Peripherals

Page 3: Realizing Precision Timing With the MSP430

3

5

MSP430F5xx Unified Clock System (UCS)

Divider/1/2/4/8/16

10-bitFrequency Integrator

FLL

DCO

FLLREFCLK

DCOCLK

DCOCLKDIV

VLO

REFO

LFXT1

XT2

ACLK

MCLK

SMCLK

MODOSCMODCLK

Provided to Flash controller, ADC12

DCODigitally Controlled Oscillator

~100kHz … >25MHz

XT2Crystal Oscillator

400kHz … >25MHz

FLLFrequency Locked Loop

LFXT1Crystal oscillator

32768Hz400kHz … >25MHz

VLOInternal very low power,low frequency oscillator

~12kHz

MODOSCModule Oscillator

e.g. for ADC, Flash Controller etc.

REFOInternal 32768Hz Oscillator

6

Low Frequency Clock Sources

Range of choices to fit application needs

$ 0low<500nAVLO

$ 0medium3uAREFO

External Componentshigh1uAXTAL

COSTPRECISIONPOWER

Page 4: Realizing Precision Timing With the MSP430

4

7

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

8

DCO (Digitally Controlled Oscillator)

• Available on all MSP430• Internal high speed oscillator• Very fast wakeup time

– MSP430F1xx: 6usMSP430F2xx: 1usMSP430F4xx: 6us MSP430F5xx: 5us

– In most applications CPU runs from DCO• Different DCO frequency range on different MSP430 families

MSP430F1xx: ~100kHz … 5MHz or ~8Mhz with ROSC = 100kΩMSP430F2xx: ~100kHz … 16MHzMSP430F4xx: ~100kHz … 8MHzMSP430F5xx: ~100kHz … 25MHz

• Different DCO frequency accuracy on different MSP430 familiesSee details see on next slides

Page 5: Realizing Precision Timing With the MSP430

5

9

DCO frequency adjustment

1.04 … 1.10

1.07 … 1.17

1.05 … 1.12

1.07 … 1.16

DCO BitsSDCO = fDCO+1 / fDCO

1.5 … 2.1

1.49 … 2(FN_x+1 / FN_x)

< 1.55

1.35 … 2

RSEL BitsSR = fRsel+1 / fRsel

MSP430F5xx

MSP430F449

MSP430F249

MSP430F149

DCO

ModulatorSCG0 RSELx DCOx

off

DCOR

MODx

DCOCLK0

1

0

1

n

n+1

VCC

P2.5/ROSC

MSP430F5xx values are preliminary!

10

DCO Modulation

Average DCO

Page 6: Realizing Precision Timing With the MSP430

6

11

Question: Does the DCO have jitter?

DCO Modulation allows fine tuning of the DCO frequency.

The modulator mixes two DCO frequencies, fDCOx and fDCOx+1 to produce an intermediate frequency between fDCOx and fDCOx+1 and spread the clock

energy, reducing electromagnetic interference (EMI)

12

Jitter Definitions

• Cycle-to-cycle jitter: (JEDEC Standard JESD65B)The variation in cycle time of a signal between adjacent cycles, over a random sample of adjacent cycle pairs.

MSP430 modulation can generate 5% ... 17% cycle-to-cycle jitter.

• Period jitter: (JEDEC Standard JESD65B)Period jitter measures the maximum change in a clock’s output transition from its ideal over a large number of cycles (e.g. 1000 cycles)

MSP430 modulation adds 0% long term jitter for n×32 clock cycles.

tcycle n tcycle n+1

Page 7: Realizing Precision Timing With the MSP430

7

13

DCO accuracy

0 … 10 %/V

0 … 15 %/V

0 … -2.5%/V(from graph in DS)

0 … 10 %/V

DVDrift with VCC

variation

-25% … +25%-0.3% … +0.3 %/°C0 … 18%MSP430F5xx

-17 … -34%–0.2 … –0.4%/°C0 … 27 %MSP430F449

-2.5% … +2.5%(Cal 1MHz … 12MHz)

-0.03% … +0.03 %/°C-3% … +3%(Cal 1MHz … 12MHz)

MSP430F249

-28 … -37%−0.33 … −0.43 %/°C0 … 18%MSP430F149

Dt0°C … 85°C

VCC = 3Vmaximum over

entire range

DtTemperature drift

VCC = 3V

DV1.8V … 3.6Vmaximum over

entire range

All values from data sheetsAll MSP430F5xx values are preliminary!

MSP430F5xx: ~ ± 3.5% over all with REFO & FLL

MSP430F4xx: LFXT1 & FLL stabilize DCO frequency

14

Influence of ROSC MSP430F1xx

MSP430F1xx:• DCO frequency stability over

temperature clearly improved with external resistor ROSC

• Without ROSCmaximum f(DCO) ~ 5Mhz

With ROSC = 100kΩmaximum f(DCO) ~ 8MHz

DCO

ModulatorSCG0 RSELx DCOx

off

DCOR

MODx

DCOCLK0

1

0

1

n

n+1

VCC

P2.5/ROSC

VCC

ROSC

Page 8: Realizing Precision Timing With the MSP430

8

15

Influence of ROSC MSP430F2xx

MSP430F2xx:• Slight improvement on

temperature stability with external ROSC

• DCO without ROSC already has a great frequency stability over temperature (±2.5%)and VCC (±3%)

• Maximum f(DCO) > 16MHzROSC not necessary to

increase frequency range.

DC

O F

requ

ency

-M

Hz

TA – Temperature - °C

DC

O F

requ

ency

-M

Hz

VCC – Supply Voltage - V

16

Calibrated DCO Frequencies

MSP430F2xx:• Calibrated DCO with values stored in Information

Memory segment A for 1MHz, 8MHz , 12MHz and 16MHz:

• Code example:

MSP430F5xx:• REFO (±3.5%) & FLL DCO (~ ±3.5%)

if ((CALDCO_16MHZ != 0xFF) && (CALBC1_16MHZ != 0xFF)){DCOCTL = CALDCO_16MHZ; // DCO = 16MHz calibratedBCSCTL1 = CALBC1_16MHZ; // DCO = 16MHz calibrated}

if ((CALDCO_16MHZ != 0xFF) && (CALBC1_16MHZ != 0xFF)){DCOCTL = CALDCO_16MHZ; // DCO = 16MHz calibratedBCSCTL1 = CALBC1_16MHZ; // DCO = 16MHz calibrated}

Page 9: Realizing Precision Timing With the MSP430

9

17

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

18

VLO (Very Low Speed and Very Low Power Oscillator)

• Fixed frequency ~12KHz• Enables LPM3 operation like a 32kHz crystal, but without

external componentsLower costLess board-spaceLess sensitive to EMI and crosstalk

• Lower LPM3 supply current consumption compared to 32kHz crystal

• Considerable higher frequency tolerance than LFXT1 with 32kHz crystal

Page 10: Realizing Precision Timing With the MSP430

10

19

VLO specification in data sheetinternal very low power, low frequency oscillator (VLO)

%/V41.8 V to 3.6 VSee Note 7dfVLO/dVCC VLO frequency supply voltage drift

%/°C0.52.2 V/3 VSee Note 6dfVLO/dT VLO frequency temperature drift

kHz4 12 202.2 V/3 VfVLO VLO frequency

UNITMIN TYP MAXVCCTEST CONDITIONSPARAMETER

NOTES: 6. Calculated using the box method:I version: (MAX(-40 to 85°C) - MIN(-40 to 85°C))/MIN(-40 to 85°C)/(85°C -- (-40°C))T version: (MAX(-40 to 105°C) - MIN(-40 to 105°C))/MIN(-40 to 105°C)/(105°C -- (-40°C))

7. Calculated using the box method: (MAX(1.8 to 3.6 V) - MIN(1.8 to 3.6 V))/MIN(1.8 to 3.6 V)/(3.6 V - 1.8 V)

VLO is ultra low power oscillator for LPM3, for cost sensitive applications where frequency accuracy is not important.

Example: Supply current MSP430F249:ICC (VLO, LPM3, VCC=3V, 25°C): typ. 0.4uA, max. 1uAICC (LFXT1, LPM3, VCC=3V, 25°C): typ. 1uA, max. 1.4uA

20

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

Page 11: Realizing Precision Timing With the MSP430

11

21

REFO (Trimmed Reference Oscillator)

• Available on MSP430F5xx• Fixed frequency 32768Hz• Moderate frequency tolerance over voltage/temp

– Similar to calibrated DCO, much better than VLO– Less accurate than 32kHz crystal

• Power draw is higher than crystal or VLO• Is the default FLL reference clock

22

REFO specification in data sheetinternal reference, low frequency oscillator (REFO)

Hz327681.8 V to 3.6 VMeasurement at ACLK

fREFO REFO frequency calibrated

%±3.51.8 V to 3.6 VREFO absolute tolerance

calibrated ±TBD3VTA = 25°C

ms0.41.8 V to 3.6 V40%/60% duty cycletSTART REFO startup time

%40 50 601.8 V to 3.6 VMeasurement at ACLK

Duty Cycle

uA31.8 V to 3.6 VTA = 25°CIREFO REFO oscillator current consumption

UNITMIN TYP MAXVCCTEST CONDITIONSPARAMETER

• REFO is a low power oscillator for LPM3,without external components,if moderate frequency accuracy is sufficient.

Example: Supply current MSP430F5xx:ICC (REFO, LPM3, 25°C): typ. ~5uAICC (LFXT1): typ. ~2.6uA

Page 12: Realizing Precision Timing With the MSP430

12

23

What Can You Do With REFO?

• Improve DCO frequency stability with REFO & FLL

• Periodic wakeup for apps in which these are true…– Don’t need crystal accuracy– Need better accuracy than VLO– No external crystal required

More cost-sensitive than power-sensitive

• Can you do RTC?– Not really: ± 2% error means ~ ± 1/2 hour error every day– But not bad as a ‘walking wounded’ RTC mode in event of

crystal failure!

24

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

Page 13: Realizing Precision Timing With the MSP430

13

25

Standard Pierce Oscillator• The characteristics of the „Inverter“

defines the oscillators‘ performance and crystal constraints.

• The serial resistor RD helps to suppress the crystal‘s overtone mode and can help to reduce the drive level.

• The chosen crystal and it’s specification should match the oscillator design and constraints.

• The load-capacitors CL1 and CL2(regarded as in series) form the oscillator‘s effective load-capacitance.

• Loop gain: At steady state, the closed-loop gain = 1• Phase shift: At the frequency of oscillation, the closed loop phase shift = 2nπ

~180°

~180°

Inverter

32768HzXTAL

RD

CL2CL1

26

How to check a crystal oscillator?

• Effective Load-Capacitance(frequency accuracy)

• OA Oscillation allowance(negative-resistance model, Crystal constraints)

• Board Layout(minimize crosstalk and negative EMI effects)

32768HzTuning Fork Crystal

Assembly Ceramic Package CC

32768Hz Crystalmetal-can packaged

Page 14: Realizing Precision Timing With the MSP430

14

27

ΔFL dependent on CL : good match

source: MicroCrystal

Frequency FLCL dependent

Required EffectiveLoad Capacitance

FrequencyTarget

FrequencyShift [ppm] Δ

F F

Actual EffectiveLoad Capacitance

7pF

Correctfrequency32768 Hz

28

ΔFL dependent on CL : bad match

source: MicroCrystal

Frequency FLCL dependent

FrequencyTarget

FrequencyShift [ppm] Δ

F F

Required EffectiveLoad Capacitance

Actual EffectiveLoad Capacitance

12pF

Wrongfrequency~32770 Hz

Page 15: Realizing Precision Timing With the MSP430

15

29

32kHz oscillator CL configurations

free choice2pF, 5.5pF,8.5pF, 12pFMSP430F5xx

free choice~0pF, 6pF,8pF, 10pFMSP430F4xx

free choice~0pF, 6pF,10pF, 12pFMSP430F2xx

In addition to internal CL

fixed 6pFMSP430F1xx

External CLInternal CL

(effective load capacitance)

30

Determine correct CL

• Measure crystal oscillator frequency with frequency counter

• Don’t measure with probes directly at the crystal pins

Typical 32kHz load capacitance is 6pF … 15pFUltra-low-power oscillator input impedance > 5MΩProbe capacitance and impedance heavily influences oscillator

• Measure at digital ACLK output pin

• Result on the frequency countermust be 32768 Hz

• This measurement includes parasitic capacitance of board and pins

32768 Hz

P2.0/ACLK/CA2

P2DIR = BIT0; // MSP430F24x pin ‘P2.0/ACLK/CA2’P2SEL = BIT0; // ‘P2.0/ACLK/CA2’ => ACLK output

P2DIR = BIT0; // MSP430F24x pin ‘P2.0/ACLK/CA2’P2SEL = BIT0; // ‘P2.0/ACLK/CA2’ => ACLK output

Page 16: Realizing Precision Timing With the MSP430

16

31

ESR (Equivalent Series Resistance)

32768Hz XTALEquivalent electrical model of a crystal

C0

CM LMRM

C0: Parasitic capacitance of package and pinsCM: Motional capacitanceLM: Motional inductanceRM: Mechanical losses during oscillation

The ESR (Equivalent Series Resistance) is given in a crystal’s data sheet and can be calculated with the following formula from the equivalent circuit:

;CC1RESR

2

L

0M ⎟⎟

⎞⎜⎜⎝

⎛+=

32

Oscillator AllowanceThe Oscillation Allowance test is a method to measure the Oscillator-performance

– Resistor Rx is placed in series to the crystal.– Increase Rx until oscillation stops / starts.

Inverter

RD

CL2CL132768Hz

XTAL

Rx

Rx STOP

Rx START

Oscillation Starts

Oscillation Stops

OA = RXSTART + ESRXTAL

Example: OA = 200kΩ + 50kΩ

Page 17: Realizing Precision Timing With the MSP430

17

33

Board Layout examples

Layout without and with external load capacitors(XIN and XOUT neighboring pins are standard function pins)

Layout with external capacitors and ground guard ring(XIN and XOUT neighboring pins are NC pins)

Examples for MSP430F41x and MSP430F1232IRHB

34

Temperature characteristics

-180.0

-160.0

-140.0

-120.0

-100.0

-80.0

-60.0

-40.0

-20.0

0.0

20.0

Temperature [°C]

Del

ta F

/F [p

pm]

AT-Cut

Tuning Fork

-40 -30 -20 -10 0 10 20 30 40 50 60 70 80

source: MicroCrystal

curve for 0ppm crystal

32768Hz crystals

ΔF F

Page 18: Realizing Precision Timing With the MSP430

18

35

ppm = parts per million

• 1ppm 1 second off, after 11 days 13:46:40 hours~31.5 seconds off per year

• 150ppm 1 second off, after 1:51:07 hours~12 seconds off per day

• 32768 Hz crystal:1ppm Δ = 0.0328Hz150ppm Δ = 4.9152Hz

36

Temperature compensation in software

• Measure temperature with Comparator_A or ADC• Method 1:

Timer_A always divides by 32768Depending on the temperature profile over time, add or subtracta second if the time is expected to be >0.5 second off.

• Method 2:Divide Timer_A by 32768 or 32769, depending on temperature

Divide by 32768 0 ppm correctionDivide by 32769 +30 ppm correction

1ppm correction with modulation of Timer_A in software:Within 30 cycles:

‘n’ cycles divide by 32769’30-n’ cycles divide by 32768

This procedure needs frequent CPU interaction Higher power consumption!DMA can do modulation with much less power consumption.

Page 19: Realizing Precision Timing With the MSP430

19

37

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

38

HF oscillator CL configurations

free choicenoMSP430F5xx

free choicenoMSP430F4xx

free choicenoMSP430F2xx

free choicenoMSP430F1xx

External CLInternal CL

Page 20: Realizing Precision Timing With the MSP430

20

39

Temperature characteristics

-180.0

-160.0

-140.0

-120.0

-100.0

-80.0

-60.0

-40.0

-20.0

0.0

20.0

Temperature [°C]

Del

ta F

/F [p

pm]

AT-Cut

Tuning Fork

-40 -30 -20 -10 0 10 20 30 40 50 60 70 80

source: MicroCrystal

curve for 0ppm crystal

AT-cut MHz crystals

A HF crystal oscillator

is not ultra low power!

ΔF F

40

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

Page 21: Realizing Precision Timing With the MSP430

21

41

MSP430F4xx and MSP430F5xx FLL

• FLL compares frequencies at ‘+’ and ‘-’ input

• If (f(‘+’) > f(‘-’)) thenincrement DCO+MOD bits

elsedecrement DCO+MOD bits

Divider

32768HzLFXT1

~ 32768HzDCO / (FLLDx * (N+1))

42

FLL Frequency adjustment

Increasing DCO+MOD by ‘1’ means within 32 clock cyclesone more clock cycle at the frequency DCOx+1one clock cycles less at the frequency DCOx

DC

Ox

1 2 3 4 5 6 7 8 9 10 12 13 30 31 32

clock cycles

DC

Ox

DC

Ox+1

DC

Ox

DC

Ox

DC

Ox

DC

Ox+1

DC

Ox

DC

Ox

DC

Ox

DC

Ox+1

DC

Ox

DC

Ox

DC

Ox

DC

Ox+1

no impact on

Cycle-to-cycle and

Period jitter

Page 22: Realizing Precision Timing With the MSP430

22

43

FLL at power-on

• FLL loop control is turned on by defaultStatus Register Bit SCG0 = 0 (default value)

• Directly after power-on the 32768Hz crystal oscillator starts oscillating and frequency < 32768Hz

FLL reduces the DCO frequency

• After start-up of the 32786Hz crystal oscillatorFLL increases the DCO frequency until it reaches the programmed value

• If the application requires to avoid DCO frequency reduction at start-up

Set SCG0=1 at the beginning of your softwareReset SCG0 to 0 when the oscillator fault detection indicates a stable 32768Hz crystal oscillator

44

Periodic loop can adjust DCO‘Software FLL’ in case Hardware FLL is not present

MSP430F1xx/F2xx DCO Calibration with SW

DCOCLK

DCOR

P2.5/Rosc

VCC

DCOxRSELxn

n+11MHz

4096Hz ACLK

// Partial SW FLL Codeif (244 < Compare ) // DCO too fastDCOCTL--;

else DCOCTL++; // DCO too slow

// Partial SW FLL Codeif (244 < Compare ) // DCO too fastDCOCTL--;

else DCOCTL++; // DCO too slow

Page 23: Realizing Precision Timing With the MSP430

23

45

MSP430x1xx/F2xx Software FLL ExampleGoal: Set f(DCO) = 1,000,000Hz with f(ACLK) = 4096Hz

Steps to take: f(DCO) = 1,000,000Hz DCO id clock source for Timer_Af(ACLK) = 4096Hz Triggers 244us capture of f(DCO) on CCI2BAdjust f(DCO) until capture value is 244 (= 1,000,000 ÷ 4096)

>CLK Timer_A

CCR2capture

DCOCLK

CCI2B_ISR CCI2B_ISR

;244 DCO clock cycles captured?CCI2B_ISR push.w &CCR2 ; TOS = temp save &CCR2

sub.w R15,&CCR2 ; &CCR2 = capture difference

cmp.w #244,&CCR2 ; Delta = SMCLK/(32768/8)pop.w R15 ; R15 = captured SMCLKjlo IncDCO ;

DecDCO dec.b &DCOCTL ;reti ;

IncDCO inc.b &DCOCTL ;reti ;

;244 DCO clock cycles captured?CCI2B_ISR push.w &CCR2 ; TOS = temp save &CCR2

sub.w R15,&CCR2 ; &CCR2 = capture difference

cmp.w #244,&CCR2 ; Delta = SMCLK/(32768/8)pop.w R15 ; R15 = captured SMCLKjlo IncDCO ;

DecDCO dec.b &DCOCTL ;reti ;

IncDCO inc.b &DCOCTL ;reti ;

46

Code Library ‘Using the DCO’

This library encapsulates routines used for setting the DCO to a specific speed based on a multiplication of a known clock, such as a 32-kHz crystal. These functions are written in assembly to be optimized for the MSP430 but can be called from any C program that includes their header files.

Download from http://www.ti.com/msp430 ‘Code Examples’ (slaa336)

Page 24: Realizing Precision Timing With the MSP430

24

47

• The VLO frequency is fixed and can not be changed• Temperature and VCC influence the VLO frequency• Based on a calibrated DCO the actual frequency of the

VLO can be measured with a Timer• Once the VLO frequency is known, software can adjust

timing

VLO Calibration

48

Code Library ‘Using the VLO’The VLO library contains only the function TI_measureVLO(), when called, performs the following actions:

1. Save the current clock settings in registers and on the stack.2. Set the DCO to the 1MHz calibrated value stored in flash.3. Set ACLK to the VLO/8.4. Measure the number of 1-MHz clock pulses in 1 ACLK (VLO/8) pulse.5. Store the measured result in the variable

TI_8MHz_Counts_Per_VLO_Clock.6. Reload the previous clock settings.7. Return variable TI_8MHz_Counts_Per_VLO_Clock from the function.

Download from http://www.ti.com/msp430 ‘Code Examples’ (slaa340)

Page 25: Realizing Precision Timing With the MSP430

25

49

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

50

Precise Timing• Precise timing Triggering in hardware

– MSP430 peripherals offer trigger signals between peripheralse.g. Comparator_A Timer_A

Timer_A ADC10 or ADC12Timer_A DAC12

– MSP430 peripherals have additional hardware for precise timinge.g. Timer_A SCCI latch

Group load logic in Timer_B and DAC12

• Triggering in software This is not precise– Interrupts add delay to program execution

Turn off Interrupts if timing is based on program execution– Depending on the addressing mode used, MSP430 instruction

execution needs between 1 and 6 MCLK clock cyclesInterrupt latency uncertainty of 5 MCLK clock cycles

Page 26: Realizing Precision Timing With the MSP430

26

51

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

52

Comparator_A+ Timer_A

CCI

SetTAIFG

ACLKSMCLK

TACLK

INCLK

GNDVCC

CCI1ACCI1B

SetCCIFG2

SCCI

CCR2

CCR1

CCR0

OutputUnit2

A EN Y

Comparator 1

TACCR 1CaptureMode

16-bit TimerTAR

CountMode

Timer_A can record a time-stamp of a Comparator_A input slope in TACCR

Page 27: Realizing Precision Timing With the MSP430

27

53

Slope Conversion (simple method)

• Slope conversion is an excellent method to measure resistors

e.g. measure temperature• Result of simple slope

measurement depends onR, C, CAREF and VCC

CAREF

VCCt = - (R * C) * ln( )

Counts = t * f Timer

CA1

CAOUT

CAREFt

54

t_NTCt_10k

=

R_NTC = 10k xt_NTCt_10k

t_10k = lnVccCAREF

- 10k * C *V

t_NTC = lnVccCAREF

- R * C *V

NTC

V

VccCAREF- R * C * lnNTC

V

VccCAREF- 10k * C * ln

Ratiometric Slope Conversion

CAREF = 0.25 × VCC

Independent from C, CAREF and VCC

Page 28: Realizing Precision Timing With the MSP430

28

55

Ratiometric Slope Conversion• Relatively slow, but very low cost measurement method for

resistorsPerfect for temperature measurement

• Measuring discharge time from VCC to 0.25 × VCCremoves influence of VCC and comparator threshold CAREF

• Comparison measurement of discharge time with a known resistor removes influence of capacitor C

• If made perfect, accuracy of more than 12 bits is realistic

For details please see:• Implementing An Ultralow-Power Thermostat With Slope

A/D Conversion (slaa129b)• Family User‘s Guides, chapter Comparator_A and/or

ComparatorA+ for details

56

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

Page 29: Realizing Precision Timing With the MSP430

29

57

Timer_A3

• Async 16-Bit timer/counter with four modes

• Int/ext clock source• Three capture/

compare registers• Outputs with PWM

capability• SCCI asynchronous

input signal latching• Interrupt vector register

for fast decoding • DMA enabled

CountMode

16-bit TimerTAR

SetTAIFG

15 0

RC16ACLK

SMCLK

TACLK

INCLK

/1/2/4/8

CCR2

TA Clock

CCR1

Comparator 1CCI

15 0

EQU1

TA ClockTACCR1GND

VCC

CCI1ACCI1B

SetCCIFG1

OutputUnit1EQU0

COVlogic

SCCI Y AEN

Sync

CaptureMode

CCR0

58

Low-Overhead UART Implementation

• 100% hardware bit latching and output• Full speed from LPM3 and LPM4• Low CPU Overhead• App Note SLAA078

Page 30: Realizing Precision Timing With the MSP430

30

59

Timer_A UART TX SW

TA0_ISR add.w #Bitime,&CCR0 ; Time to Next BitUART_TX dec.w BitCnt ; Dec bit counter

jne TX_Next ; Next bit?bic.w #CCIE,&CCTL0 ; Done, disable intreti ;

TX_Next bic.w #OUTMOD2,&CCTL0 ; TX Mark rra.w RXTXData ; LSB->Carryjc TX_Test ; Jump if bit = 1

TX_Space bis.w #OUTMOD2,&CCTL0 ; TX Space TX_Test reti ;

TA0_ISR add.w #Bitime,&CCR0 ; Time to Next BitUART_TX dec.w BitCnt ; Dec bit counter

jne TX_Next ; Next bit?bic.w #CCIE,&CCTL0 ; Done, disable intreti ;

TX_Next bic.w #OUTMOD2,&CCTL0 ; TX Mark rra.w RXTXData ; LSB->Carryjc TX_Test ; Jump if bit = 1

TX_Space bis.w #OUTMOD2,&CCTL0 ; TX Space TX_Test reti ;

60

Timer_A UART RX SW

CCI

SetTAIFG

ACLKSMCLK

TACLK

INCLK

GNDVCC

CCI1ACCI1B

SetCCIFG2

SCCI

CCR2

CCR1

CCR0

OutputUnit2

A EN Y

Comparator 1

TACCR 1CaptureMode

16-bit TimerTAR

CountMode1. Capture mode:

Wait for falling edge of start bit and store a time stamp tS of its occurrence in TACCR

2. Compare mode:1. Program TACCR to t1 = tS + 150% of a bit time

This loads 1st bit of RX signal into SCCI latch2. Program TACCR to t2 = t1 + 100% of a bit time

This loads 2nd bit of RX signal into SCCI latch3. Program TACCR to t3 = t2 + 100% of a bit time

This loads 3rd bit of RX signal into SCCI latch….. (continue until all bits are captured)

ST “1” “1” “0” “1” “1” “0” “0” “1” SP

Interrupts

t1 t2 t3 t4 t5 t6 t7 t8tS

SCCI can latch any input

signal at a predefined time

Page 31: Realizing Precision Timing With the MSP430

31

61

Timer_A UART RX SW

TA0_ISR add.w #Bitime,&CCR0 ; Time to Next Bitbit.w #CAP,&CCTL0 ; Capture mode?jz RX_Bit ; Is start bit edge

RX_Edge bic.w #CAP,&CCTL0 ; Enable comp. modeadd.w #Bitime_5,&CCR0 ; Add 0.5 T_bitreti ;

RX_Bit bit.w #SCCI,&CCTL0 ; Read RX latchrrc.b RXTXData ; Store received bit

RX_Test dec.w BitCnt ; All bits RXed?jnz RX_Next ; No, next bit

RX_Comp bic.w #CCIE,&CCTL0 ; All bits RXed! RX_Next reti ;

TA0_ISR add.w #Bitime,&CCR0 ; Time to Next Bitbit.w #CAP,&CCTL0 ; Capture mode?jz RX_Bit ; Is start bit edge

RX_Edge bic.w #CAP,&CCTL0 ; Enable comp. modeadd.w #Bitime_5,&CCR0 ; Add 0.5 T_bitreti ;

RX_Bit bit.w #SCCI,&CCTL0 ; Read RX latchrrc.b RXTXData ; Store received bit

RX_Test dec.w BitCnt ; All bits RXed?jnz RX_Next ; No, next bit

RX_Comp bic.w #CCIE,&CCTL0 ; All bits RXed! RX_Next reti ;

62

• 2X Baud = 2X CPU Load• 2X MCLK = ½ CPU Load• Optimized Assembly ISRs

CPU Load Using Timer_A UART

Page 32: Realizing Precision Timing With the MSP430

32

63

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

64

USART

The USART supports 2 or 3 operating modes:

Asynchronous RS232 Mode

Synchronous SPI Mode(3-Wire & 4 Wire)

I2C interface – MSP430F15x/16x/16xx(Master & Slave)

Page 33: Realizing Precision Timing With the MSP430

33

65

Baud-Rate Register UBR

Receiver Shift Register

Transmit Shift Register

Receiver Buffer URXBUF

Transmit Buffer UTXBUF

Listen MM

UCLK

SIMO

SOMI

Clock Phase and Polarity

Baud-Rate Generator

Baud-Rate Generator

URXD

STE

UTXD

SYNC

SYNCUCLKS

UCLKIUCLKS

CKPH SYNC CKPL

UCLKIACLK

SMCLKSMCLK

SNYC RXE

Software selectable UART or SPI Auto-start from any LPMxDouble buffered RX and TX shift registersBaud-rategenerator 7 or 8-bit data9-bit addressingmode availableParity generationand detectionError detectionand suppression

USART Asynchronous Mode

66

Example1:SMCLK = 1MHz

Baud rate = 19200

1,000,000/19,200 = 52.08 ≅ 0x34

UBR1 | UBR0 = 0x00 0x34; +0.16% error

15-Bit Prescaler/Divider

UBR0

Modulator BITCLK

UCLKIACLK

SMCLKSMCLK

BRCLK

UBR1

87

UMCTL

8

15

N

Prescaler FactorUxBRx ≥ 3

USART Baud Rate Generator

Example2:ACLK = 32,768Hz

Baud rate = 9600

32,768/9,600 = 3.413

UBR1 | UBR0 = 0x00 0x03; +13.8% errorUBR1 | UBR0 = 0x00 0x04; -14.7% error

Page 34: Realizing Precision Timing With the MSP430

34

67

Example:ACLK = 32,768

Baud = 9,600 = 32,768/9,600 = 13.68

UBR1 | UBR0 | UMCTL = 0x00 0x03 0x4A

Modulator mixes adjacent clock dividers to enable high baud rates even with low frequency XTAL.

USART Baud Rate Modulation

15-Bit Prescaler/Divider

UBR0

Modulator BITCLK

UCLKIACLK

SMCLKSMCLK

BRCLK

UBR1

87

UMCTL

8

15

N

Prescaler FactorUxBRx ≥ 3

start bit bit 7

÷3 ÷4

bit 6

÷3

bit 5 bit 4

÷4 ÷3

bit 3

÷3

bit 2

÷4

bit 1

÷3

bit 0

÷3

stop bit

÷4 LSB first

LSB first

division factor

TX/RX data

AUMCTL

Table with ‘Commonly Used Baud Rates,

Baud Rate Data, and Errors’ in User’s

Guide, chapter ‘USART’ in ‘UART Mode’4 A

68

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

Page 35: Realizing Precision Timing With the MSP430

35

69

USCI Baud Rate Generator

Oversampling mode disabled• Same behavior like USART

Baud Rate Generator• Modulation according to the tables

‘BITCLK Modulation Pattern’ and ‘Commonly Used Baud Rates, Settings, and Errors, UCOS16 = 0’

UCAxMCTL, bit UCOS16 = 0

70

USCI Baud Rate Modulation

2.0-5.91.2-2.80227384001,048,576

2.5-1.51.0-1.10554192001,048,576

0.8-1.00.7-.20210996001,048,576

21.3-44.315.2-21.1033960032,768

19.0-13.45.7-12.1076480032,768

8.3-9.76.0-4.80613240032,768

2.0-5.91.4-2.80227120032,768

Max. RX Error [%]Max. TX Error [%]UCBRFxUCBRSxUCBRx

BaudRate

[Baud]

BRCLKfrequency

[Hz]

Commonly Used Baud Rates, Settings, and Errors, UCOS16 = 0

111111107

101011106

101011105

101010104

001010103

001000102

000000101

000000000

Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0

(Start Bit)UCBRSx

BITCLK Modulation Pattern

Both Tables are in

the User’s Guide

Number of “1” inModulation Pattern

Page 36: Realizing Precision Timing With the MSP430

36

71

USCI Baud Rate Generator

Oversampling mode enabled• Two modulators• RX sampled using BITCLK16• Majority vote always at the same

location within one RX bit• BITCLK16 supports IrDA TX pulse

generation • Quasi-standard for UART, IrDA & LIN

15-Bit Prescaler/Divider

BR0

BITCLK16

BR1

87

BRFx16

BRCLK

/16

2nd Modulator BITCLK

BRSx8

1st Modulator

LSB

UCAxMCTL, bit UCOS16 = 1

72

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

Page 37: Realizing Precision Timing With the MSP430

37

73

• Software ADC triggerTime uncertainty Voltage error

• Hardware ADC trigger with Timer eliminates phase errorPrecise timing Precise voltage

Timer Triggers For ADC / DAC

74

• 12 Bit SAR• 200ksps+• Autoscan• Single, sequence,

repeat-single, repeat-sequence

• Int/ext VRef

• Temp sensor• Batt measure• TA/TB trigger • 16-word

conversion buffer• DMA enabled

ADC12

12-bit SARVR- VR+

ADC12SCTA1

TB1TB0

ACLKMCLKSMCLK

AVCC

Batt Temp

SampandHold

/1 .. /8

ADC12OSC

/4 .. /1024Sync

1.5V or 2.5V

AVSS

16 x 12MemoryBuffer

16 x 8MemoryControl

Page 38: Realizing Precision Timing With the MSP430

38

75

Agenda

• Oscillators, the source of precise timing– Internal Oscillators DCO, VLO, REFO– Crystal oscillators LFXT1 and XT2– FLL (Frequency locked loop) and calibration

• Precise Timing with Peripherals– Temperature measurement with Comparator_A– Software UART with Timer_A– USART and USCI– Sampling with ADC– Sample rate of DAC

76

Analog wave output with DAC

• Timer_A generates sampling rate and triggers DMA• DMA loads new digital value from Flash to DAC

Flash DMA DAC

MSP430

Amp

Timer_A

Wrong trigger sequence because of timing uncertaintyfor DMA data and address bus access!

Page 39: Realizing Precision Timing With the MSP430

39

77

MSP430 DAC12• 12-bit monotonic output• 8- or 12-bit voltage output

resolution• Programmable settling

time vs power consumption• Internal or external

reference selection• Straight binary or 2’s

compliment data format• Self-calibration option

for offset correction• Synchronized update

capability for multiple DAC12s

78

Analog wave output with DAC

• Timer_A generates sampling rate and triggers DAC• DAC loads output register ‘ADC12_xLatch’ with value of shadow

register ‘ADC12_xDat’• DAC with empty shadow register ‘ADC12_xDat’ triggers DMA to

get next audio sample from Flash• DMA copies digital audio data from Flash to DAC

Flash DMA DAC

Timer_AMSP430

Amp

Page 40: Realizing Precision Timing With the MSP430

40

79

Summary

• The complete clock chain is important for precise timing:– Oscillators are the source of precise timing

• Internal Oscillators DCO, VLO, REFO• Crystal oscillators LFXT1 and XT2• FLL (Frequency locked loop) and calibration

• Peripherals offer features for precise timing– Comparator_A can trigger Timer– SCCI latch in Timer_A to sample at a predefined time– USART and USCI offer special features to fine tune timing– Precise ADC sampling with hardware triggering– Sample rate of DAC

80

Thank you