1 / 33

32-bitni mikrokontroleri i primena - MS1BMP 6 . deo

32-bitni mikrokontroleri i primena - MS1BMP 6 . deo. 2013 Nenad Jovičić. ADC. 12-bitna rezolucija. Nekoliko različitih izvora prekida: End of Conversion, End of Injected Conversion, Analog Watchdog Event. Jednostruki i kontiualni mod konverzije. Automatska konverzija sekvence kanala.

manju
Download Presentation

32-bitni mikrokontroleri i primena - MS1BMP 6 . deo

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. 32-bitni mikrokontroleri i primena - MS1BMP6. deo 2013 Nenad Jovičić

  2. ADC • 12-bitna rezolucija. • Nekoliko različitih izvora prekida: End of Conversion, End of Injected Conversion, Analog Watchdog Event. • Jednostruki i kontiualni mod konverzije. • Automatska konverzija sekvence kanala. • Auto-kalibracija. • Vreme konverzije programabilno za svaki kanal ponaosob. • Eksterni trigeri. • Diskontinulani mod konverzije. • Vreme konverzije do 1.7uS na 24MHz taktu. • DMA prenos podržan. • Veza sa integrisanim analognim temperaturnim senzorom.

  3. ADC –Interna struktura

  4. Modovi konverzije • Prema načinu startovanja konverzije modovi su: • Jednostruki mod (single conversion) • Posle svake konverzije ADC se zaustavlja uz generisanje dozvoljenih prekida ili DMA zahteva. • Kontinulani mod (continuous conversion) • Nakon konverzije generišu se prekidi ili DMA zahtevi ali se automatski startuje nova konverzija. • Diskontinualni mod (discontinuous conversion) • Može se zadati konačan broj konverzija (n<=8) nakon čijeg izvršavanja se ADC zaustavlja.

  5. Modovi konverzije • Prema broju kanala koji se konvertuju modovi su: • Single channel – konvertuje se samo jedan kanal i to u single ili kontinualnom modu • Scan mode – konvertuje se sekvenca kanala, i to i jednostrukom modu (single conversion), kontinualnom modu ili diskontinulanom modu. U ovom modu moguće je definisati do 16 proizvoljnih rageluarnih kanala ili do 4 injektovana kanala.

  6. Multichannel (scan), single conversion mode • Sukcesivnakonverzija više kanala, pričemu se za svakukonverziju može da se definiše različito vreme semplovanja.

  7. Injektovana konverzija (Injected conversion) • Postoji mogućnost da se nakon ili u toku konverzije regularne grupe kanala ubaci tj. injektuje grupa injektovanih kanala. • Injekcija može da bude podešena tako da se aktivira samo na eksterni triger, ili može da se vrši nakon svake konverzije regularne grupe. Na ovaj način je moguće očitavati do 20 analognih naponskih ulaza.

  8. Analog Watchdog

  9. Projekat ADC • Periodično se korišćenjem osnovnog tajmera TIM7 generiše prekid u kome se startuje ADC i očitava rezultat konverzije. • Osnovni tajmer radi sa učestanošću160kHz • AD konvertor je podešen tako da radi u najbržem modu u kome semplovanje traje 1.5 ciklus. Vrsi se akvizicija kanala 14.

  10. Projekat ADC Glavni program - Inicijalizacija takt Pogledati datasheet!!! port ADC NVIC

  11. Inicijalizacija ADC-a ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1,ADC_SampleTime_1Cycles5); ADC_Cmd(ADC1, ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1));

  12. ADC_InitTypeDef (stm32f10x_adc.h)

  13. ADC Trigger source (stm32f10x_adc.h)

  14. Konfiguracija regularnog kanala ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_1Cycles5);

  15. SMPR1 registar

  16. Glavni program – inicijalizacija tamjera TIM7 Inicijalizacija svih tajmera se odvija preko istih funkcija!!!!

  17. TIM_TimeBaseInitTypeDef (stm32f10x_tim.h)

  18. Inicijalizacija tajmera • TIM_TimeBaseInit(TIM7, &TIM_TimeBaseInitStruct); U zavisnosti od izabranog tajmera neki delovi se ne inicijalizuju!!! A neki se inicijalizuju...

  19. Inicijalizacija prekida tajmera • TIM_ITConfig(TIM7, TIM_IT_Update, ENABLE);

  20. Pokretanje tajmera TIM_Cmd(TIM7,ENABLE);

  21. Prekid Tajmera

  22. DMA • 12 kanala (7 za DMA1 kontrleri 5 za DMA2 kontroler) • SMT32F100 imajedankontroler DMA1 • Mogući su prenosi u u svim kombinacijama između meorije i periferija. • Podržan prenos za tajmere, ADC, SPI, I2Cs, USART i DAC • Podržan prenos 8, 16 i 32-bitnih podataka. • Podržani cirkularni baferi!

  23. DMA - struktura

  24. DMA prenos • Prenos se sastoji iz 4 faze • Kanali su prioritirani sa 4 različita prioriteta.

  25. Preklapanje DMA i CPU • DMA se preklapa sa CPU-om tako da nikada ne dolazi do potpunog blokiranja jednog ili drugog.

  26. DMA prekidi • Svaki DMA kanal ima tri prekida: • Transfer završen • Transfer na pola • Greška u transferu • fe

  27. Projekat ADC_DMA • AD konvertor je podešen tako da radi u najbržem modu u kome semplovanje traje 1.5 ciklus. Vrši se akvizicija kanala 14. ADC nakon svake konverzije generiše DMA zahtev. • Tajmer TIM1 radi u PWM modu i trigeruje ADC. • DMA konvertor prenosi podatke iz ADC-a u kružni bafer u memoriji.

  28. Inicijalizacija DMA U main-u mora da se deklariše adresa, jer se simbol iz stm32f10x_adc.c ne vidi!!! Da je kojim slučajem definisan u stm32f10x_adc.h ne bi bilo potrebe

  29. DMA_InitTypeDef stm32f10x_tim.h)

  30. Inicijalizacija ADC-a

  31. ADC funkcije

  32. Dozvola PWM izlaza

  33. Zadatak • Podesiti DMA kontoler tako da se generiše prekid nakon prenosa celog jednog bafera. • Hint: • potražiti u fajlu stm32f10x_dma.h funkcije koje podešavaju prekid. • Napisati prekidnu rutinu • Brisati flag u prekidnoj rutini • ....

More Related