1 / 35

MS1BMP

MS1BMP. 32-bitni mikrokontroleri i primena Part 2. - periferije. Autor : Nenad Jovičić. Inicijalizacija periferija. 1) Pre konfigurisanja bilo koje periferije potrebno je dovesti joj takt korišćenjem odgovarajuće funkcije iz CMSIS biblioteke :

lucky
Download Presentation

MS1BMP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MS1BMP 32-bitni mikrokontroleri i primena Part 2. - periferije Autor: NenadJovičić

  2. Inicijalizacija periferija 1)Pre konfigurisanja bilo koje periferije potrebno je dovesti joj takt korišćenjem odgovarajuće funkcije iz CMSIS biblioteke: • RCC_AHBPeriphClockCmd(RCC_AHBPeriph_PPPx , ENABLE); • RCC_APB2PeriphClockCmd(RCC_APB2Periph_PPPx , ENABLE); • RCC_APB1PeriphClockCmd(RCC_APB1Periph_PPPx , ENABLE); 2) PPP_DeInit(..)Funkcije se mogu koristiti da se resursi bilo koje periferije postave u inicijalna stanja: • PPP_DeInit(PPPx); 3) Inicijalizacija periferija se uvek izvodi korišćenjem struktura karakterističnih za te periferije: • PPP_InitStucture.memberX = valX; • PPP_InitStructure.memberY = valY; • PPP_Init(PPPx, &PPP_InitStructure); 4) Nakon osnovne inicijalizacije neke periferije se dalje konfigurišu zadavajući odgovarajuće komande kroz funkcije koje su u sledećem formatu:PPP_Cmd(..) function: PPP_Cmd(PPPx, ENABLE); Ovo se na primer koristi za komunikacione periferije kao što su UART, SPI, I2C ...

  3. Pirmer Inicijalizacije Primer konfiguracije UART1-a: /* Enable USART1 Clock */ RCC_APB2PeriphClockCmd( USART1, ENABLE ); /* set all UART1’s peripheral registers to their reset values */ USART_DeInit( USART1 ) ; /* USART1 configuration ------------------------------------------------------*/ /* USART1 configured as follow: - BaudRate = 19200 baud - Word Length = 8 Bits - One Stop Bit - Even parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_Even; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Configure USART1 */ USART_Init( USART1, &USART_InitStructure); /* Enable USART1 */ USART_Cmd( USART1, ENABLE );

  4. CMSIS-struktura Osnovni konfiguracioni heder fajl za odabranu familiju mikrokontrolera Korisnička aplikacija Cortex-M3 exceptions Peripheral header file Ovaj fajl prilagodjava korisnik Include NVIC and SysTick drivers • Low-level & API funkcije koje čine biblioteku periferijskih drajvera.

  5. Fajlovikojemenjakorisnik • stm32f10x_conf.h /* Includes ------------------------------------------------------------------*/ /* Uncomment the line below to enable peripheral header file inclusion */ /* #include "stm32f10x_adc.h" */ /* #include "stm32f10x_bkp.h" */ #include "stm32f10x_gpio.h" … … • main.c #include "stm32f10x.h“ int main(void) { ... GPIO_WriteBit(GPIOD, GPIO_Pin_1, Bit_SET); … } • stm32f10x_It.c #include "stm32f10x_it.h" … void EXTI1_IRQHandler(void) { GPIO_WriteBit(GPIOD, GPIO_Pin_1, Bit_SET); } • stm32f10x_It.h /* Exported functions ----------------------------------------------- */ void NMI_Handler(void); void HardFault_Handler(void); …

  6. 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.

  7. 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

  8. 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

  9. Ulaznakonfiguracija

  10. 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

  11. 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

  12. 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”

  13. GPIO registri Dva 32-bitna konfiguracionaregistra (GPIOx_CRL, GPIOx_CRH) Dva 32-bitna dataregistra (GPIOx_IDR, GPIOx_ODR) Jedan 32-bitna set/resetregistar (GPIOx_BSRR) Jedan 16-bitni resetregistar (GPIOx_BRR) Jedan 32-bitni lockingregistar (GPIOx_LCKR)

  14. Port configuration register low (GPIOx_CRL) (x=A..G)

  15. Port configuration register high (GPIOx_CRH) (x=A..G)

  16. Port input data register (GPIOx_IDR) (x=A..G) Port output data register (GPIOx_ODR) (x=A..G)

  17. Port bit set/reset register (GPIOx_BSRR) (x=A..G)

  18. Port bit reset register (GPIOx_BRR) (x=A..G)

  19. Port configuration lockregister (GPIOx_LCKR) (x=A..G)

  20. Alternativnefunkcije Neophodno je konfigurisati pin shodnoalterativnojfunkcijikoja se koristi. Primer za tajmer module:

  21. Remapiranje alternativnih funkcija

  22. AF remap and debug I/O configuration register (AFIO_MAPR)

  23. AF remap and debug I/O configuration register (AFIO_MAPR2)

  24. 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.

  25. 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.

  26. Interrupt Mask Register Pending Request Register Software Interrupt Event Register Rising Trigger Selection Register Falling Trigger Selection Register Edge Detect Circuit EXTI[15:0] To NVIC Pulse Generator Event Mask Register 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 • 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.

  27. EXTI Karakteristike

  28. External interrupt configuration register 1 (AFIO_EXTICR1)

  29. Interrupt mask register (EXTI_IMR)

  30. Event mask register (EXTI_EMR)

  31. Rising trigger selection register (EXTI_RTSR)

  32. Falling trigger selection register (EXTI_FTSR)

  33. Software interrupt event register (EXTI_SWIER)

  34. Pending register (EXTI_PR)

  35. Memorijska mapa EXTI registara

More Related