CH2 - STM32 Periperal - GPIO - AF
CH2 - STM32 Periperal - GPIO - AF
⚫ Alternate function
⚫ STM32 Programming
2
2
STM32F4xx Block Diagram
▪ ARM 32-bit Cortex-M 4 CPU +FPU+MPU
up to 168 MHz
CORTEX-M4 AHB2 (max 168MHz)
▪ Nested Vectored Interrupt Controller (NVIC) w/ 43 D-bus Encryption**
CPU + FPU +
maskable IT + 16 prog. priority levels MPU I-bus
Flash I/F
▪ Embedded Memories : 168 MHz 512kB- 1MB Camera Interface
Flash I/F
168 MHz 512kB- 1MB Camera Interface
– 2 × CAN interfaces (2.0B Active) JTAG/SW Debug External Memory Power Supply
– SDIO interface ETM Interface Reg 1.2V
STM32F407VG :
• 1Mbyte de Flash
• 192 kB de SRAM
• 100 pins LQFP
(Quad Flat Package)
OUTLINE
⚫ The STM32F40x Features and peripherals
⚫ STM32 peripheral I/O blocs:
⚫ Alternate function
⚫ EXTINT
⚫ STM32 Software Programming
6
6
STM32F4xx Block Diagram 7
Flash I/F
168 MHz 512kB- 1MB Camera Interface
8
GPIO : Définition et fonction
⚫ jusqu’à 9 GPIO (ports ): GPIOA …GPIOI
⚫ Un GPIO gère un ensemble de 16 broches ou pin ( PA0, PA1, ….PA15 sont les 16
broches du GPIOA)
⚫ La configuration ainsi que l’état logique de ces broches est obtenue par des
opérations d’écriture (write) ou de lecture (read) dans différents registres
associés à chaque port.
⚫ On trouve généralement :
⚫ Des registres de configuration: pour configurer les pin d’un GPIO en entrée ou en
sortie avec plusieurs options
⚫ Des registres de donnée recopiant les états logiques de chaque broche de port
9
STM32 GPIOs Registers 10
⚫ Data register :
⚫ GPIOx_IDR: Port input data register : captures the data present on the I/O pin at every
AHB clock cycle.
⚫ GPIOx_ODR: Port output data register
⚫ Locking register:
⚫ GPIOx_LCKR Port configuration locked :Locking mechanism to avoid spurious write in
the IO registers: When the LOCK sequence has been applied on a port bit, it is no
longer possible to modify the configuration of the port bit until the next reset
MODER register: GPIOD🡪MODER
11
STM32 GPIO Configuration Modes 12
Analog
Input Data
01
Register
Read 0 VDD VDD or VDD_FT(1)
0 0 Output Open Drain
1 0 1 Output Open Drain with Pull-up
On/Off
1 0 Output Open Drain with Pull-down
Schmitt
Pull - Up
Trigger Input Driver
0 0 Alternate Function Push Pull
0 0 1 Alternate Function PP Pull-up
I/O pin
1 0 Alternate Function PP Pull-down
10 VDD
Pull - Down
0 0 Alternate Function Open Drain
1 0 1 Alternate Function OD Pull-up
Bit Set/Reset
Output Data
1 0 Alternate Function OD Pull-down On/Off
OUTPU
Register
Register
Write T
VSS VSS
0 0 Input floating CONTR
00 x 0 1 Input with Pull-up OL
1 0 Input with Pull-down
Read /
Write VSS Push-Pull
11 x x Analog mode From On-chip Peripherals Output Open Drain
Alternate Function Output Driver
Analog
* In output mode, the I/O speed is configurable through OSPEEDR register: 2MHz,
25MHz, 50MHz or 100 MHz (1) VDD_FT is a potential specific to five-volt tolerant I/Os and different from VDD.
GPIO Configuration: Output type (1/2)
•les 2 transistors PMOS et NMOS sont • Seul le transistor NMOS est commandé,
activés l'autre est maintenu ouvert , la broche ne
• La broche portée au potentiel 0V ou Vdd. peut être portée par le GPIO qu’a Vss.
• Le GPIO impose le potentiel de la broche • si K1 est ouvert 🡪 c’est au circuit extérieur
de fixer le potentiel de la broche 13
GPIO Configuration :Output type (2/2)
⚫ Type Push-Pull :
1. Le processeur fait un write dans le registre ‘Output Data Register’
pour spécifier la valeur à envoyer ‘0’ ou ‘1’.
2. Le GPIO utilisera les 2 transistors pour relier la broche soit:
⚫ à VDD, si le processeur veut envoyer ‘1’: fermer le transistor PMOS et ouvrir le
transistor NMOS)
⚫ à Vss ou la masse, si le processeur veut envoyer ‘0’: ouvrir le transistor PMOS et
fermer le transistor NMOS)
⚫ Type Open Drain :
⚫ Drain laissé ouvert, Drain est le nom du bras du transistor NMOS reliée
à la broche puisque le transistor PMOS est toujours ouvert.
⚫ le GPIO ne peut imposer que le niveau logique ‘0’ par la fermeture du
transistor NMOS.
⚫ Le niveau '1' est donc fixé par le circuit extérieur
⚫ Le GPIO n'est donc pas le seul maitre du potentiel sur la broche. Le
circuit extérieur l'est aussi
⚫ Utilité : connecter plusieurs composants extérieurs sur le même bus (
exemple Bus I2C)
14
Examples : mode: Output /type: Push Pull
Pour allumer la LED, le GPIO a
fermé le transistor PMOS donc
il a lié la LED à VDD et non à la
masse parceque le GPIO a
ouvert aussi le transistor
NMOS
15
Example: Mode: Output /type: OpenDrain
Wired and
16
GPIO configuration : input mode
Schmitt-Trigger
Schmitt-trigger type of input is designed to accept slow-change signals and
produce an oscillation-free output
5V
0V
VT- VT+ A
▪ (a) If input transition times are too long, a standard logic device-output might oscillate or change
erratically;
▪ (b) a logic device with a Schmitt-trigger type of input will produce clean, fast output transitions.
17
GPIO : floating/ Pull up/ pull down
VDD
19
STM32 GPIO features 20
⚫ Most of the peripherals shares the same pin (like USARTx_Tx, TIMx_CH2,
I2Cx_SCL, SPIx_MISO …)
⚫ Alternate functions multiplexers prevent to have several peripheral’s function
pin to be connected to a specific I/O at a time.
⚫ Some Alternate function pins are remapped to give the possibility to optimize
the number of peripherals used in parallel.
⚫ To optimize the number of peripherals available for the 64-pin or the 100-pin
,144 pin or the 176-pin package, it is possible to remap some alternate functions
to some other pins.
⚫ This is achieved by software, In this case, the alternate functions are no longer
mapped to their original assignations.
AF0 (system)
AF1 (TIM1/2)
AF2 (TIM3..5)
Pin x (0…15)
AF15 (USARTx_Tx)
Alternate Functions features 22
AlternateFunction
⚫ Consulter le fichier
STM32F407VGT6, Table 7 :
alternate function mapping
⚫ Avant configuration de la broche
vérifier si le pin n’est pas déjà
utilisé dans la carte discovery ou
autres. Consulter le fichier le
fichier UM1472.pdf table 5.
23
Alternate Functions features 24
25