280 likes | 464 Views
32-bitni mikrokontroleri i primena - MS1BMP 5 . deo. 2013 Nenad Jovičić. 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 ,…)
E N D
32-bitni mikrokontroleri i primena - MS1BMP5. deo 2013 Nenad Jovičić
GPIO - Portovi • 5V tolerantniulazi • 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
Configuration Mode CNF1 CNF0 MOD1 MOD0 Analog Input 0 0 VDD ON/OFF Input Floating (Reset State) 0 1 Pull - UP Pull - Down Output Push-Pull 0 0 01: 10 MHz 10: 2 MHz 11: 50 MHz ON/OFF Output Open-Drain 0 1 VSS VDD AF Push-Pull 1 0 AF Open-Drain 1 1 VSS GPIO Konfiguracije Analog Input To On-chip Peripherals 00 Alternate Function Input OFF ON Input Pull-Up(2) 1 0 Read 0 Input Data Register VDD or VDD_FT(1) Input Pull-Down(2) TTL Schmitt Trigger Input Driver I/O pin Output Driver Write OUTPUT CONTROL Bit Set/Reset Registers VSS Output Data Register 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
Izlaznakonfiguracija • U Open-Drainmodu: “0” u Output Data registruaktivira N-MOS transistor, dok “1” u Output Data registruostavlja pin u stanjuvisokeimpedanse(P-MOS transistor se nikada ne aktivira). • U Push-pullmodu: : “0” u Output Data registruaktivira N-MOS transistor, dok “1” u Output Data registruaktivira P-MOS tranzistor. • Schmitt Trigger kolo je uključeno • Interni pull-up i pull-down otpornicisuisključeni • Stanjekoje je napinu se semplujeiupisuje u Input Dataregistarnasvaki APB2 klok • ČitanjemInput Dataregistraočitava se stanjepinakada je konfigurisan u Open-Drain modu • ČitanjemInput Dataregistraočitava se stanjepinakada je konfigurisan u Push-pullmodu
Konfiguracijaalternativnefunkcije • 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
Konfiguracijaanalognogulaza • 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”
GPIO registri • Dva 32-bitna konfiguracionaregistra (GPIOx_CRL, GPIOx_CRH) • Dva 32-bitna dataregistra (GPIOx_IDR, GPIOx_ODR) • Jedan 32-bitniset/resetregistar (GPIOx_BSRR) • Jedan 16-bitni resetregistar (GPIOx_BRR) • Jedan 32-bitni lockingregistar (GPIOx_LCKR)
Port input data register (GPIOx_IDR) (x=A..G) Port output data register (GPIOx_ODR) (x=A..G)
Projekat GPIO • Naizmenična promena stanja dioda sa promenljivim intervalima čekanja • Gde se nalazidefinicijafunkcije STM32vldiscovery_LEDOn()? • Kojimregistrima se pristupa? • Delay() funkcija imlementira čekanje kao dummy petlju!
Kako se uključuje LED3 • Podatak će biti 0x0200 • Na dresu 0x40011000 dodaje offset za BSRR koji iznosi 0xF i dobija se adresa 0x4001100F
Kako se uključuje LED3 • Da li je ovo bit-banding pristup? • Na adresu 0x40011000 dodaje offset za BSRR koji iznosi 0x10 i dobija se adresa 0x4001100F
Zadatak – uključiti diodu LED3 korišćenjem bit-banding-a • Testirati direktan pristup ODR registru, ipristup preko bit-banding-a. • Uraditi slično i sa LED4
Alternativnefunkcije • Neophodno je konfigurisati pin shodnoalterativnojfunkcijikoja se koristi. • Primer za tajmerske module:
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.
Remapiranje alternativnih funkcija – debug interfejs • Normalne pozicije debug pinova: • Optimizacija se vrši setovanjemdogovarajućihSWJ_CFG[1:0] bita u AFIO_MAPR registru.
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.
ProjekatSystick • Naizmenična promena stanja dioda sa promenljivim intervalima čekanja • Delay() funkcija ne imlementira čekanje kao dummy petlju!
Realizacija preko prekida • U glavnom programu je definisana funckija koja imlementira odbrojavanje vremena • Prekidna rutina Systic_Handler() realizuje odbrojavanje vremena
Inicijalizacija Systick tajmera • Inicijalizacija Systick periferije je u glavnom programu: /* Setup SysTick Timer for 1 msec interrupts */ if (SysTick_Config(SystemCoreClock / 1000)) { /* Capture error */ while (1); } • Gde se nalazi difinicija SysTick_Config() funkcije? • Gde je deklarisana konstanta SystemCoreClock? • Šta se dešava ako se ime funkcije SysTick_Handler u fajlu stm32f10x_it.c promeni? • Šta se dešava ako se slučajno dozvoli prekid periferije koji nije napisan?
Zadatak • Izmeniti program/projekat Systick tako da diode trepere različitom učestanošću.