Day 3
Day 3
Peripherals
GPIO, ADC and Timers
01
GPIO
3.3v
1
3.3v
0v
0
0v
0
PORT
0 0 0 0 0 0
Register
Bit Musking:
• Logical Operators:
01100
1. AND Operator
&
11001
Bit Musking:
• Logical Operators:
01100
1. AND Operator
&
11001
01000
01100
Bit Musking: &
• Logical Operators: 11001
1. AND Operator
01000
X X X
0
0 1 No
Change
Bit Musking:
• Logical Operators:
01100
2. OR Operator
|
11001
Bit Musking:
• Logical Operators:
01100
2. OR Operator
|
11001
11101
01100
Bit Musking: |
• Logical Operators: 11001
2. OR Operator
11101
X X X
1
1 0 No
Change
Bit Musking:
• Logical Operators:
01100
3. XOR Operator
^
11001
Bit Musking:
• Logical Operators:
01100
3. XOR Operator
^
11001
10101
01100
Bit Musking: ^
• Logical Operators: 11001
3. XOR Operator
10101
X X X
X̄
1 0 No
Change
Bit Musking:
• Logical Operators:
~01100
4. NOT Operator
Bit Musking:
• Logical Operators:
~01100
4. NOT Operator
10011
X X̄
Bit Musking:
• Logical Operators:
5. Shift Left and Right
0010 <<2
Bit Musking:
• Logical Operators:
5. Shift Left and Right
0010 <<2
Bit Musking:
• Logical Operators:
5. Shift Left and Right
10
Bit Musking:
• Logical Operators:
5. Shift Left and Right
1000 01
Bit Musking:
• Logical Operators:
5. Shift Left and Right
1000 0001
5 4 3 2 1 0
Bit Musking: RegX 0 1 0 1 1 0
• Clear Bit:
&
0 0 0 0 0 1<<4 1 0 1 11 1
010000~ 101111 5 4 3 2 1 0
RegX=RegX &(~(1<<n))
RegX 0 0 0 1 1 0
5 4 3 2 1 0
Bit Musking: RegX 0 0 0 1 1 0
• Set Bit:
|
0 0 0 0 0 1<<4 0 1 0 000
010000 5 4 3 2 1 0
RegX 0 1 0 1 1 0
Bit Musking:
• Get Bit:
&
0 1 0 000
x=RegX & (1<<n) 0 1 0 0 0 0 >>4
0 0 0 001
GPIO HAL Functions:
1. Define Pin
MODE
GPIO HAL Functions:
2. Configure
GPIO PIN
GPIO HAL Functions:
HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState);
GPIOA GPIO_PIN_1
GPIOB GPIO_PIN_2
…… ……
GPIO HAL Functions:
HAL_GPIO_ReadPin(GPIOx, GPIO_Pin);
GPIOA GPIO_PIN_1
GPIOB GPIO_PIN_2
…… ……
LED Toggle Example:
LED Toggle Example:
02
ADC
Introduction
1) Sampling
Convert continuous analog signal to a discrete digital
signal
3.1v
2v 1.6v
Digitalization Process
2) Quantization 5 4 3 2 1 0
• Resolution 0 0 0 1 1 0
6-bit resolution
3
• Maximum 5 4 2 1 0
(reference) 1 1 1 1 1 1
Voltage
?? v
Digitalization Process
2) Quantization
Assume: 2-bit resolution , 0 0 0 : 0v
Ref. volt. 4v
• Step Size
0 1
?? v
𝑹𝒆𝒇 𝑽𝒐𝒍𝒕
𝑺𝒕𝒆𝒑 = 1 0
𝟐𝒓𝒆𝒔
𝟒 4 : 4v
= 𝟐 = 𝟏𝑽 1 1
𝟐
Digitalization Process
2) Quantization
0v : 0.99v 0 0
1v : 1.99v 0 1
Input signal
2v : 2.99v 1 0
3v : 3.99v 1 1
Digitalization Process
2) Quantization
Analog Val =
2 2.8V Digital Val * Step
Quantization Error
Step Sensitivity Accuracy
Size
𝑹𝒆𝒇 𝑽𝒐𝒍𝒕
𝑺𝒕𝒆𝒑 =
𝟐𝒓𝒆𝒔
Digitalization Process
2) Quantization
Assume: 2-bit 0v : 0.499v 0 0
resolution ,
Ref. volt. 2v 0.5v :0.99v 0 1
𝟐
𝑺𝒕𝒆𝒑 = 𝟐 = 𝟎. 𝟓𝑽
𝟐 1v : 1.499v 1 0
Input signal 1.5v : 1.99v 1 1
Digitalization Process
2) Quantization
3 1.8V
2. ADC
Configuration
ADC HAL Functions:
Steps to use ADC
//Start ADC &hadc1
HAL_ADC_Start(address_hadc);
//Check For Convergence complete
HAL_ADC_PollForCovers(address_hadc,Timout);
//Read Data
X = HAL_ADC_GetValue(address_hadc);
03
Timers
Introduction
16 MHz
÷
64 250 kHz
0 0 0 0 .
1. F_CPU = 16 MHz 2. Presc= 64
3. TMR_Freq= F_CPU/Presc = 16M/64 = 250kHz
0 1 1 0
Output Compare
Register
Counter
Register
0 0 0 1
Comparator
0 1 1 0
Output Compare
Register
Counter
Register
0 0 1 0
. .
Comparator
0 1 1 0
Output Compare
Register
Counter
Register
. . . .
. .
Comparator
0 1 1 0
Output Compare
Register
Counter
Register
0 1 1 0
. . .
Comparator
Compare matched 0 1 1 0
Output Compare
Register
Timer Interrupts
OCR Value