10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10:...

22
10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion

Transcript of 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10:...

Page 1: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-1Bard, Gerstlauer, Valvano, Yerraballi

EE 319KIntroduction to Embedded Systems

Lecture 10: Sampling, Analog-to-Digital Conversion

Page 2: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-2Bard, Gerstlauer, Valvano, Yerraballi

Agenda

RecapLocal VariablesStack framesRecursionFixed-point numbersLCD device driver (Lab 7)

OutlineSampling, Nyquist theoremAnalog to Digital Conversion

Page 3: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-3

Analog to Digital Converter (ADC)

Time (s)

0

4

8

12

16

20

24

28

32

0 1 2 3 4 5 6 7 8 9 10

Continuous analog signal

Discrete digital signal

Bard, Gerstlauer, Valvano, Yerraballi

Page 4: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-4

Nyquist Theorem

A bandlimited analog signal that has been sampled can be perfectly reconstructed from an infinite sequence of samples if the sampling rate fs exceeds 2fmax samples per second, where fmax is the highest frequency in the original signal. If the analog signal does contain frequency components

larger than (1/2)fs, then there will be an aliasing error. Aliasing is when the digital signal appears to have a

different frequency than the original analog signal.

Valvano Postulate: If fmax is the largest frequency component of the analog signal, then you must sample more than ten times fmax in order for the reconstructed digital samples to look like the original signal when plotted on a voltage versus time graph.

Bard, Gerstlauer, Valvano, Yerraballi

http://www.ece.utexas.edu/~valvano/UTx319K/nyquist2.html

Page 5: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-5

Sampling (option 1)

200Hz signal sampled at 2000Hz

Bard, Gerstlauer, Valvano, Yerraballi

Points are digital data, solid curve is the truth. What is the frequency?

0

1000

2000

3000

4000

0.000 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008

Time (sec)

Signal

http://www.ece.utexas.edu/~valvano/Volume1/Nyquist.xls

Page 6: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-6

Sampling (option 1)

1000Hz signal sampled at 2000Hz

Bard, Gerstlauer, Valvano, Yerraballi

Points are digital data, solid curve is the truth. What is the frequency?

0

1000

2000

3000

4000

0.000 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008

Time (sec)

Signal

http://www.ece.utexas.edu/~valvano/Volume1/Nyquist.xls

Page 7: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-7

Points are digital data, solid curve is the truth. What is the frequency?

0

1000

2000

3000

4000

0.000 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008

Time (sec)

Signal

Sampling (option 1)

2200Hz signal sampled at 2000Hz

Bard, Gerstlauer, Valvano, Yerraballi

This is aliasing

http://www.ece.utexas.edu/~valvano/Volume1/Nyquist.xls

Page 8: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-8

Sampling (option 2)

100Hz signal sampled at 1600Hz

Sampled Data

-3

-2

-1

0

1

2

3

0 2 4 6 8 10

Time (ms)

Vol

tage

(V)

Sampled Data

True Data

FFT Magnitude

0.0

0.5

1.0

1.5

2.0

2.5

0.0 0.2 0.4 0.6 0.8 1.0

Frequency (kHz)V

olta

ge (V

)

Bard, Gerstlauer, Valvano, Yerraballi

http://www.ece.utexas.edu/~valvano/EE345L/Labs/Fall2011/FFT16.xls

Page 9: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-9

Sampling (option 2)

A signal with DC, 100Hz and 400Hz sampled at 1600Hz

Sampled Data

-3

-2

-1

0

1

2

3

0 2 4 6 8 10

Time (ms)

Vol

tage

(V)

Sampled Data

True Data

FFT Magnitude

0.0

0.5

1.0

1.5

2.0

2.5

0.0 0.2 0.4 0.6 0.8 1.0

Frequency (kHz)V

olta

ge (V

)

Bard, Gerstlauer, Valvano, Yerraballi

http://www.ece.utexas.edu/~valvano/EE345L/Labs/Fall2011/FFT16.xls

Page 10: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-10

Sampling (option 2)

1500Hz signal sampled at 1600Hz

Sampled Data

-3

-2

-1

0

1

2

3

0 2 4 6 8 10

Time (ms)

Vol

tage

(V)

Sampled Data

True Data

FFT Magnitude

0.0

0.5

1.0

1.5

2.0

2.5

0.0 0.2 0.4 0.6 0.8 1.0

Frequency (kHz)V

olta

ge (V

)

Bard, Gerstlauer, Valvano, Yerraballi

This is aliasing

http://www.ece.utexas.edu/~valvano/EE345L/Labs/Fall2011/FFT16.xls

Page 11: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-11

Analog to Digital Converter (ADC)

Successive approximation ADC VIN is approximated as a

static value in a sample and hold (S/H) circuit

the successive approximation register (SAR) is a counter that increments each clock as long as it is enabled by the comparator

the output of the SAR is fed to a DAC that generates a voltage for comparison with VIN

when the output of the DAC = VIN the value of SAR is the digital representation of VIN

end of conversion

Bard, Gerstlauer, Valvano, Yerraballi

Page 12: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-12

Sample-And-Hold Circuit

Analog Input (AI) is sampled when the switch is closed and its value is held on the capacitor where it becomes the Analog Output (AO)

S/H

Bard, Gerstlauer, Valvano, Yerraballi

Page 13: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-13

ADC on TM4C123

Sampling Range/Resolution3.3V internal reference voltage0x000 at 0 V input0xFFF at 3.3 Vresolution = range/precision

= 3.3V/4096 alternatives < 1mV

Bard, Gerstlauer, Valvano, Yerraballi

Page 14: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-14

Twelve analog input channels Single-ended and differential-input configurations On-chip internal temperature sensor Sample rate up to one million samples/second 40 Hz Flexible, configurable analog-to-digital conversion Four programmable sample conversion sequences from one to

eight entries long, with corresponding conversion result FIFOs Flexible trigger control

Controller (software) We will use software initiated trigger Timers Analog Comparators PWM GPIO

Hardware averaging of up to 64 samples for improved accuracy Converter uses an internal 3V reference

Bard, Gerstlauer, Valvano, Yerraballi

ADC on TM4C123PE2=Ain1 used for Lab 8, 9, 10

Page 15: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-15

ADC on TM4C123

Bard, Gerstlauer, Valvano, Yerraballi

Ain1PE2

Software initiated

Bit 3 is done flag

Use sequencer 3

PE2=Ain1 used for Lab 8, 9, 10

Page 16: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-16Bard, Gerstlauer, Valvano, Yerraballi

ADC on TM4C123

IO Ain 0 1 2 3 4 5 6 7 8 9 14 PB4 Ain10 Port SSI2Clk M0PWM2 T1CCP0 CAN0Rx PB5 Ain11 Port SSI2Fss M0PWM3 T1CCP1 CAN0Tx PD0 Ain7 Port SSI3Clk SSI1Clk I2C3SCL M0PWM6 M1PWM0 WT2CCP0 PD1 Ain6 Port SSI3Fss SSI1Fss I2C3SDA M0PWM7 M1PWM1 WT2CCP1 PD2 Ain5 Port SSI3Rx SSI1Rx M0Fault0 WT3CCP0 USB0epen PD3 Ain4 Port SSI3Tx SSI1Tx IDX0 WT3CCP1 USB0pflt PE0 Ain3 Port U7Rx PE1 Ain2 Port U7Tx PE2 Ain1 Port PE3 Ain0 Port PE4 Ain9 Port U5Rx I2C2SCL M0PWM4 M1PWM2 CAN0Rx PE5 Ain8 Port U5Tx I2C2SDA M0PWM5 M1PWM3 CAN0Tx

Twelve different pins can be used to sample analog inputs.

PD4=Ain4 used for DLL testing

PE2=Ain1 used for Lab 8, 9, 10

PE4=Ain9 used in book and ADCSWTrigger_4F120.zip

Page 17: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-17

ADC on TM4C123

TM4C ADC registers

Bard, Gerstlauer, Valvano, Yerraballi

Address 31-2 1 0 Name $400F.E638 ADC1 ADC0 SYSCTL_RCGCADC_R 31-14 13-12 11-10 9-8 7-6 5-4 3-2 1-0 $4003.8020 SS3 SS2 SS1 SS0 ADC0_SSPRI_R 31-16 15-12 11-8 7-4 3-0 $4003.8014 EM3 EM2 EM1 EM0 ADC0_EMUX_R 31-4 3 2 1 0 $4003.8000 ASEN3 ASEN2 ASEN1 ASEN0 ADC0_ACTSS_R $4003.80A0 MUX0 ADC0_SSMUX3_R $4003.80A4 TS0 IE0 END0 D0 ADC0_SSCTL3_R $4003.8028 SS3 SS2 SS1 SS0 ADC0_PSSI_R $4003.8004 INR3 INR2 INR1 INR0 ADC0_RIS_R $4003.8008 MASK3 MASK2 MASK1 MASK0 ADC0_IM_R $4003.8FC4 Speed ADC0_PC_R 31-12 11-0 $4003.80A8 DATA ADC0_SSFIFO3_R

Page 18: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-18

ADC on TM4C123TM4C123 ADC

Operationselect rateselect sequencerselect triggerselect channelselect sample mode

o 0 not temperatureo 1 set completion flago 1 end sequenceo 0 not differential

Speed bits in ADC0_PC_R

EM3, EM2, EM1, and EM0 bits in ADC_EMUX_R

Bard, Gerstlauer, Valvano, Yerraballi

ADC0_SSCTL3_R = 0x06;

Value Description 0x7 1M samples/second 0x5 500K samples/second 0x3 250K samples/second 0x1 125K samples/second

Page 19: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-19

ADC on TM4C123 Initialization

Enable ADC clock: set bit 0 in SYSCTL_RCGCADC_R Set 125kHz ADC conversion speed: write 0x01 to

ADC0_PC_R Set sequencer priority: 0,1,2,3 in ADC0_SSPRI_R Disable selected sequence 3: zero bit 3 of ADC0_ACTSS_R Set software start trigger event: zero bits 15-12 of

ADC0_EMUX_R Set input source (0-11): write channel number in bits 3-0

of ADC0_SSMUX3_R (channel 9 is PE4, channel 1 is PE2) Set sample control bits: write 0110 in bits 3-0

ADC0_SSCTL3_R to disable temp measurement, notify on sample complete, indicate single sample in sequence, and denote single-ended signal mode

Disable interrupts: zero bit 3 of ADC0_IM_R Enable selected sequencer 3: set bit 3 of ADC0_ACTSS_R

Bard, Gerstlauer, Valvano, Yerraballi

Page 20: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-20

ADC on TM4C123

Channel 9 is PE4void ADC0_InitSWTriggerSeq3_Ch9(void){ SYSCTL_RCGCGPIO_R |= 0x10; // 1) activate clock for Port E while((SYSCTL_PRGPIO_R&0x10) == 0){}; GPIO_PORTE_DIR_R &= ~0x10; // 2) make PE4 input GPIO_PORTE_AFSEL_R |= 0x10; // 3) enable alternate fun on PE4 GPIO_PORTE_DEN_R &= ~0x10; // 4) disable digital I/O on PE4 GPIO_PORTE_AMSEL_R |= 0x10; // 5) enable analog fun on PE4 SYSCTL_RCGCADC_R |= 0x01; // 6) activate ADC0 ADC0_PC_R = 0x01; // 7) configure for 125K ADC0_SSPRI_R = 0x0123; // 8) Seq 3 is highest priority ADC0_ACTSS_R &= ~0x0008; // 9) disable sample sequencer 3 ADC0_EMUX_R &= ~0xF000; // 10) seq3 is software trigger ADC0_SSMUX3_R = (ADC0_SSMUX3_R&0xFFFFFFF0)+9; // 11) Ain9 (PE4) ADC0_SSCTL3_R = 0x0006; // 12) no TS0 D0, yes IE0 END0 ADC0_IM_R &= ~0x0008; // 13) disable SS3 interrupts ADC0_ACTSS_R |= 0x0008; // 14) enable sample sequencer 3}

Bard, Gerstlauer, Valvano, Yerraballi

Book shows Ain9=PE4 Lab 8, 9, 10 use Ain1=PE2

Page 21: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-21

ADC on TM4C123Analog to digital conversion

Set software triggero Write to PSSI bit 3

Busy-Wait o Raw Interrupt Status = RIS bit 3o Poll until sample complete

Read sampleo Read from SSFIFO3

Clear sample complete flago Write to ISC bit 3

Bard, Gerstlauer, Valvano, Yerraballi

ADC_In

Clear flag

StartADC

Status

Done

Busy

Read data

return(data)

Page 22: 10-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 10: Sampling, Analog-to-Digital Conversion.

10-22

ADC_In

Clear flag

StartADC

Status

Done

Busy

Read data

return(data)

//------------ADC_InSeq3------------

// Busy-wait analog to digital conversion

// Input: none

// Output: 12-bit result of ADC conversion

uint32_t ADC0_InSeq3(void){

uint32_t data;

ADC0_PSSI_R = 0x0008;

while((ADC0_RIS_R&0x08)==0){};

data = ADC0_SSFIFO3_R&0xFFF;

ADC0_ISC_R = 0x0008;

return data;

}

ADC on TM4C123

Bard, Gerstlauer, Valvano, Yerraballi