Hoofdstuk 2: GPIO
1. Basic Concepts
GPIO = General-Purpose Input/Output = Digitale waarde (0 of 1)
o Voor een Switch(input) of een LED( output) Zie voorbeeld hieronder
o Andere functies:
Om functies te selecteren (MUX)
Voordeel: flexibiliteit stijgt, Plaats
besparen
Kan analoge paden hebben voor ADC/DAC
Pull-Down Resistor :
o PIN = HIGH SW1 wel is ingedrukt
o PIN = LOW SW1 niet is ingedrukt
Pull- Up Resistor:
o PIN = HIGH SW1 niet is ingedrukt
o PIN = LOW SW1 wel is ingedrukt
DOEL: Ervoor zorgen dat de output een bepaalde gekende
waarde heeft als de pin nergens aangesloten is
Structuur van Code:
o Gebruik van de HAL bibliotheek
o Werken met adressen
o Registers gaat de hardware rechtstreek controleren
o Hardware gaat de IO pin fysiek aansturen
HAL functies (Zie labo’s voor uitleg)
o Trager maar hoger level toegang tot de poorten
o HAL_GPIO_TogglePin(GPIOx, GPIO_PIN_Y)
o HAL_Delay(Value)
o HAL_GPIO_WritePin(GPIOx, GPIO_PIN_Y, GPIO_PIN_(RE)SET) of 0/1
o HAL_GPIO_ReadPin(GPIOx, GPIO_PIN_Y) // = 0 als ingedrukt
,2. Poorten
Structuur van GPIO poorten (Voor 1 bit):
o Middelste driehoek : buffer
Gaat open of dicht In beide richtingen opereren
Poort manipulatie:
o GPIOA->ODR |= 2;
= Gaat de 2e poort hoog zetten, rechtstreek op de hardware
ODR -> Outputs <---------> IDR -> Inputs
Heel compact en snellere verwerking
Minder leesbaar, kennis bitoperaties, meer kans op errors, …
o Voorbeeld van High level <-> Low level
1 poort
Meerdere poorten
, o BSSR register
o GPIOX->BSRR = GPIO_BSRR_BS(S/R)_Y
S = Set
R = Reset
X en Y bepalen de poort
o Samenvatting:
o Links = Trager
o Rechts = Sneller want meteen op het register (10x sneller vaak)
o HAL
Makkelijker programmeerbaar
Leesbaarder
Minder afhankelijk van hardware
Trager
o Direct port acces
Meerder poorten tegelijk aanpassen in 1 lijn
Meerdere bits in 1 lijn lezen
10x sneller
Meer kans op fouten
3. Interfacing
Wat is een 0 en wat is een 1?
o 0 is niet gelijk aan 0 volt
Er kan dus nog spanning op de output
komen -> mee opletten!
o Afhankelijk van de voedingspanning
o Meer dan VDD => chip kapot
o Regio waarin het geen van beide is
o Meestal
1 = VDD- 0.5V tot VDD
0 = 0V tot 0.5V
, Enkele voorbeelden
o Driving LEDs
o Driving a Speaker
C1 laat enkel AC signalen door
Square wave wordt gemaakt in de functie door Toggle
o Active High and Low LED
Wifi LED zal branden wanneer
controller pin high is
Blue LED zal branden wanneer
controller pin laag is (Voeding aan
cathode)
Het labo bord
o LEDs
LED2 meteen aan de poort pin