Download presentation
Presentation is loading. Please wait.
Published byDjaja Kusuma Modified over 6 years ago
1
32-bitni mikrokontroleri i primena - MS1BMP 2. deo
2016 Nenad Jovičić
2
Dokumentacija Reference manual – zajednicko za celu familiju
Microcontroller datasheet – specifičnosti posebnog mikrokontrolera
3
STM Cortex-M3 - GPIO - Portovi
5V tolerantni ulazi Kapacitet po pinu 25mA 18 MHz učestanost toglovanja Konfigurabilna izlazna brzina do 50 MHz Do 16 analognih ulaza Alternativne funkcije (USARTx, TIMx, I2Cx, SPIx,…) Svaki pin može da generiše spoljašnji prekid Jedan pin može da se koristi za buđenje iz STANDBY moda (PA.00) Jedan pin može da bude Tamper Pin (za watcdog) (PC.13) Pinovi grupisani u 5 16-bitnih portova (GPIOA..GPIOE) Mehanizam zaključavanja konfiguracije
4
GPIO Konfiguracije I/O pin To On-chip Peripherals Input Data Register
Analog Input Configuration Mode CNF1 CNF0 MOD1 MOD0 To On-chip Peripherals ON/OFF Pull - UP Pull - Down VDD VSS Analog Input 00 Alternate Function Input Input Floating (Reset State) 1 ON OFF Input Pull-Up(2) 1 Read Input Data Register VDD or VDD_FT(1) Input Pull-Down(2) TTL Schmitt Trigger Output Push-Pull 01: 10 MHz 10: 2 MHz 11: 50 MHz Input Driver I/O pin Output Open-Drain 1 VDD VSS Output Driver AF Push-Pull 1 Write Bit Set/Reset Registers OUTPUT CONTROL Output Data Register VSS AF Open-Drain 1 Push-Pull or Open Drain Read / Write or disabled From On-chip Peripherals (2) Input Pull-Up and Input Pull-Down are differentiated by the PxODR.y bit field. Alternate Function Output
5
Izlazna konfiguracija
U Open-Drain modu: “0” u Output Data registru aktivira N-MOS transistor, dok “1” u Output Data registru ostavlja pin u stanju visoke impedanse(P-MOS transistor se nikada ne aktivira). U Push-pull modu: : “0” u Output Data registru aktivira N-MOS transistor, dok “1” u Output Data registru aktivira P-MOS tranzistor. Schmitt Trigger kolo je uključeno Interni pull-up i pull-down otpornici su isključeni Stanje koje je na pinu se sempluje i upisuje u Input Data registar na svaki APB2 klok Čitanjem Input Data registra očitava se stanje pina kada je konfigurisan u Open-Drain modu Čitanjem Input Data registra očitava se stanje pina kada je konfigurisan u Push-pull modu
6
Konfiguracija alternativne funkcije
Izlazni dajver je u Open Drain ili Push-Pull konfiguraciji Schmitt Trigger ulaz je aktiviran Pull-up i pull-down otpornici su deaktivirani Podatak na pinu se sempluje u ulazni registar na svaku ivicu APB2 takta Ako je izlaz u open drain modu očitavanje ulaznog registra daje stanje na pinu Čitanje izlaznog registra u Push-Pull modu daje poslednje upisano stanje u registar
7
Konfiguracija analognog ulaza
Izlazni bafer je isključen (otkačen) Schmitt Trigger kolo je isključeno zbog smanjenja potrošnje. Pull-up i pull-down otpornici su isključeni Očitavanje ulaznog registra uvek daje “0”
8
GPIO registri Dva 32-bitna konfiguraciona registra (GPIOx_CRL, GPIOx_CRH) Dva 32-bitna data registra (GPIOx_IDR, GPIOx_ODR) Jedan 32-bitni set/reset registar (GPIOx_BSRR) Jedan 16-bitni reset registar (GPIOx_BRR) Jedan 32-bitni locking registar (GPIOx_LCKR)
9
Port configuration register low (GPIOx_CRL) (x=A..G)
10
Port configuration register high (GPIOx_CRH) (x=A..G)
11
Port input data register (GPIOx_IDR) (x=A..G)
Port output data register (GPIOx_ODR) (x=A..G)
12
Port bit set/reset register (GPIOx_BSRR) (x=A..G)
13
Port bit reset register (GPIOx_BRR) (x=A..G)
14
Port configuration lock register (GPIOx_LCKR) (x=A..G)
15
Projekat GPIO Gde se nalazi definicija funkcije HAL_GPIO_TogglePin ()?
Kojim registrima se pristupa? Ovde treba ubaciti objasnjenje projekta I traziti izmenu preko bit-banding regiona HAL_Delay() funkcija imlementira čekanje. Na koji način?
16
Kako se togluje LED3 Podatak će biti 0x0200
Na dresu 0x dodaje offset za ODR koji iznosi 0xC i dobija se adresa 0x C
17
Atomičnost Da li je Togle funkcija u prethodnom primeru atomična?
Modifikovati main program na sledeći način:
18
Setovanje i resetovanje Pin-a
Neće da se kompajlira. Gde je greška?
19
Kom registru pristupa ova funkcija?
20
Bit-banding Rešavanje problema tipičnog za Load/Store arhitekturu
Kako obezbediti atomski (neprekidan) pristup nekoj memorijskoj lokaciji i izmenu jednog bita? Uobičajena sekvenca: disable_int→load→modify→store→enable_int. Bit-banding pristup je posredan pristup jednobitnoj lokaciji mapiranoj preko 32-bitne lokacije u alias regionu.
21
Bit-banding b31-b0 mapira se b[0] bit iz alias memorije!!!
22
Bit-banding Upisivanje sa i bez bit-banidng-a
Očitavanje sa i bez bit-banding-a Atomska operacija
23
Kako se bit-band realizuje?
24
Bit-band u C-u
25
Kako se uključuje LED3 Da li je ovo bit-banding pristup?
26
Da li možemo isto ovo da uradimo korišćenjem bit-bandinga?
“Naša funkcija” #define PORTC_ODR 0x C #define BITBAND(addr,bitnum) ((addr & 0xF )+0x ((addr &0xFFFFF)<<5)+(bitnum<<2)) #define MEM_ADDR(addr) *((volatile unsigned long *) (addr)) void MS1BMP_LED3ON(void){ // Setting bit 9 without using bitband feature //MEM_ADDR(PORTC_ODR) = MEM_ADDR(PORTC_ODR) | 0x200; // Setting bit 9 with using bitband feature MEM_ADDR(BITBAND(PORTC_ODR,9)) = 0x1; }; Testirati direktan pristup ODR registru, ipristup preko bit-banding-a.
27
Alternativne funkcije
Neophodno je konfigurisati pin shodno alterativnoj funkciji koja se koristi. Primer za tajmerske module:
28
Remapiranje alternativnih funkcija
29
AF remap and debug I/O configuration register (AFIO_MAPR)
Alternativna funkcija Alternativna funkcija Sve REMAP
30
AF remap and debug I/O configuration register (AFIO_MAPR2)
31
Remapiranje alternativnih funkcija - oscilatori
OSC_IN/OSC_OUT pinovi su mapirani na GPIO pinovima PD0/PD1. To se može isključiti odgovarajućim bitovima u AFIO_MAPR registru. OSC32_IN/OSC32_OUT pinovi su mapirani na GPIO pinovima PC14/PC15. To se može isključiti odgovarajućim bitovima u AFIO_MAPR registru.
32
Remapiranje alternativnih funkcija – debug interfejs
Normalne pozicije debug pinova: Optimizacija se vrši setovanjem dogovarajućih SWJ_CFG[1:0] bita u AFIO_MAPR registru.
33
Systick tajmer Fleksibilni sistemski tajmer
Sastavni deo procesorskog CORTEX-M3 jezgra. 24-bit auto-reload brojač za posebnim prekidom. 2 konfigurabilna izvora takta Pogodan za realizaciju real-time operativnih sistema. U STM32F10x seriji takt za ovu periferiju može bili ili CPU takt ili CPU/8 takt. Ovo se konfiguriše u RCC grupi registara. S obzirom da je deo procesorskog jezgra definicije funkcija koje konfigurišu rad časovnika se nalaze u okviru core_cm3.h fajla koji obezbeđuje ARM. Neke od high level funkcija može da obezbedi i proizvođač mikrokontrolera i one se nalaze u okviru peripheral drajver biblioteke i to u sastavu misc.h fajla.
34
Systick timer
35
Delay.... Naizmenična promena stanja dioda sa promenljivim intervalima čekanja Vezba – podesavanje Systick tajmera Delay() funkcija ne imlementira čekanje kao dummy petlju, ali je ipak čekanje u mestu.
36
Realizacija preko prekida
Prekidna rutina Systic_Handler() realizuje odbrojavanje vremena pozivom HAL funkcije Jedna od osnovnih HAL drajver funkcija
37
Inicijalizacija Systick tajmera
Inicijalizacija Systick periferije se vrši preko SysTick_Config() funkcije. Gde se nalazi ta funkcija i koji je lanac povezivanja? Staviti break point, i pogledati function call stack.
38
Zadatak Izmeniti program tako da se prekid sistemskog tajmera generiše sa učestanošću od 500Hz. Dakle, u pitanju je perioda od 500ms. Gde je najjednostavnije izvršiti izmenu?
39
EXTI Spoljašnji prekidi
Do 19 Interrupt/Events zahteva Do 80 pinova se može koristiti kao EXTI ulaz. EXTI linija 16 povezana na PVD izlaz EXTI linija 17 povezana na RTC Alarm događaj. EXTI linija 18 povezana na USB Wake-up from suspend događaj EXTI[15:0] Interrupt Mask Register Pending Request Software Interrupt Event Register Rising Trigger Selection Register To NVIC Edge Detect Circuit Pulse Generator Falling Trigger Event Mask Dva konfiguraciona moda: Interrupt mode: generisanje prekida Event mode: generisanje buđenja sistema koji je u SLEEP ili STOP modu. Nezavisni trigeri (rastuća, opadajuća ili obe ivice) Status bit svake linije EXTI periferija je povezana na APB2 da bi se skratilo vreme ragovanja (APB2 je u opštem slučaju brža od APB1 magistrale) Mogućnost softverskog forsiranja bilo kog prekida/događaja.
40
EXTI prekidi
41
External interrupt configuration register 1 (AFIO_EXTICR1)
Na EXTIx ide uvek pinx
42
Interrupt mask register (EXTI_IMR)
43
Event mask register (EXTI_EMR)
44
Rising trigger selection register (EXTI_RTSR)
45
Falling trigger selection register (EXTI_FTSR)
46
Software interrupt event register (EXTI_SWIER)
47
Pending register (EXTI_PR)
48
Memorijska mapa EXTI registara
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.