Download presentation
Presentation is loading. Please wait.
1
32-bitni mikrokontroleri i primena - MS1BMP
2017/2018 Nenad Jovičić Marija Janković
2
ADC 12-bitna rezolucija Nekoliko različitih izvora prekida: ADC ready, End of Conversion (regular or injected), End of Sequence Conversion (regular or injected), Analog Watchdog 1, 2, 3, overrun events Jednostruki i kontinualni mod konverzije Automatska konverzija sekvence kanala Auto-kalibracija! Kompenzacija raznih parazitnih kapacitivnosti Vreme konverzije programabilno za svaki kanal ponaosob Eksterni trigeri Diskontinulani mod konverzije DMA prenos podržan za regularne kanale Veza sa integrisanim analognim temperaturnim senzorom
3
ADC –Interna struktura
4
STM32L476 A/D konvertor Osnovne karakteristike
Trostruki 12-bitni A/D konvertor sa sukcesivnim aproksimacijama AD konvertori mogu da rade sinhronizovano i ispreplitano 12, 10, 8 ili 6-bitna rezolucija Svaki AD konvertor ima do 19 analognih ulaza Merni opseg 0-Vdd Učestanost uzorkovanja 5 Msample/s (Tconvmin =187.5ns) Veza sa integrisanim analognim temperaturnim senzorom.
5
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. Prema broju kanala koji se konvertuju modovi su: Single channel – konvertuje se samo jedan kanal i to u jednostrukom ili kontinualnom modu Scan mode – konvertuje se sekvenca kanala, i to u jednostrukom modu (single conversion), kontinualnom modu ili diskontinulanom modu. U ovom modu moguće je definisati do 16 proizvoljnih regularnih kanala ili do 4 injektovana kanala.
6
Startovanje konverzije
Konverzija se može startovati: Softverski: pozivom funkcije za start konverzije i za regularne i za injektovane kanale Hardverski: eksternim ili internim hardverskim trigerima čiji se polaritet (uzlazna, silazna ili obe ivice) mogu definisati. Takođe podržano i za regularne i za injektovane kanale. interni triger je na primer Tajmer koji periodično pokreće konverziju (TRGO), a eksterni je triger signal koji se dovodi sa određenog GPIO pina.
7
Kanali ADC-a – brzi, spori, rezervisani
8
Multichannel (scan) mode
Sukcesivna konverzija više kanala, pri čemu se za svaku konverziju može da se definiše različito vreme semplovanja. Do 16 kanala za regularnu grupu i do 4 za injektovanu grupu.
9
Dozvoljena vremena semplovanja
10
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. Injektovana grupa kanala ima prioritet u odnosu na regularnu grupu kanala. Početak očitavanja injektovane grupe prekida konverziju trenutnog regularnog kanala. Više o ovome u AN3116 (
11
ADC DMA DMA transfer limited: DMA transfer unlimited:
ADC conversions are transferred by DMA, in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. DMA transfer unlimited: ADC conversions are transferred by DMA, in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. DMA transfer none
12
DMA1 kanali Reference manual
Arbiter The arbiter manages the channel requests based on their priority and launches the peripheral/memory access sequences. The priorities are managed in two stages: • Software: each channel priority can be configured in the DMA_CCRx register. There are four levels: – Very high priority – High priority – Medium priority – Low priority • Hardware: if 2 requests have the same software priority level, the channel with the lowest number will get priority versus the channel with the highest number. For example, channel 2 gets priority over channel 4.
13
Analog Watchdog
14
ADC – teorijsko uputstvo
Uputstvo za razumevanje grešaka ADC-a i preporuke kako popraviti preciznost konverzije: Pojednostavljen opis stm32 ADC-a, njegove unutrašnje strukture i parametara od značaja Opis različitih vrsti grešaka i potencijalnih izvora grešaka očitavanja analogne vrednosti analiziranjem ADC parametara i eksternog hardvera sa kojeg se očitava napon Preporuke za minimizaciju grešaka očitavanja i konverzije različitim hardverskim i softverskim metodama
15
STM32 ADC - SAR Successive Approximation
16
Sample state
17
Hold state
18
Add Vref/2
19
If MSB=0 compare with Vref/4
20
If MSB=1 compare with 3/4Vref
21
Iskorišćenje ADC opsega
Želimo da postignemo što bolju rezoluciju i iskoristimo ceo opseg ADC-a Na Vref vežemo naš maksimalni napon Koristimo sabirač Pojačamo naš signla da bude u punom opsegu ADC-a
22
Izlazna otpornost analognog izvora
23
STM Cube ADC – nema primera!
24
STM CUBE Pored standardnih HAL drajvera postoji podrška i za implementaciju sa nižim nivoom apstrakcije, preko takozvanih Low Level drajvera.
25
LL drajveri LL drajveri su namenjeni ekspertima, i postoje za komponente kod kojih optimizacija ima smisla. Nema ih za komponente koje zahtevaju kompleksne softverske drajvere (USB). LL drajveri uglavnom ne zahtevaju dodatne strukture podataka i implementiraju se preko inline funkcija. Direktno pristupaju hardverskim registrima i obezbeđuju atomske operacije. Iz tog razloga često ne postoji drajverski C fajl već samo H fajl u kome su inline funkcije.
26
HAL vs LL „Without knowing the project, coexisting HAL and LL in a project should be possible as long as both are not used together on the same peripheral...“ The Low Layer (LL) drivers are designed to offer a fast light-weight expert-oriented layer which is closer to the hardware than the HAL. Contrary to the HAL, LL APIs are not provided for peripherals where optimized access is not a key feature, or those requiring heavy software configuration and/or complex upper-level stack (such USB). The HAL and LL drivers are complementary and cover a wide range of applications requirements: The HAL offers high-level and feature-oriented APIs, with a high-portability level. They hide the MCU and peripheral complexity to end-user. The LL offers low-level APIs at registers level, with better optimization but less portability. They require deep knowledge of the MCU and peripherals specifications The LL drivers feature: A set of functions to initialize peripheral main features according to the parameters specified in data structures A set of functions used to fill initialization data structures with the reset values of each field Functions to perform peripheral de-initialization (peripheral registers restored to their default values) A set of inline functions for direct and atomic register access Full independence from HAL since LL drivers can be used either in standalone mode (without HAL drivers) or in mixed mode (with HAL drivers) · Full coverage of the supported peripheral features. The Low Layer drivers provide hardware services based on the available features of the STM32 peripherals. These services reflect exactly the hardware capabilities and provide one-shot operations that must be called following the programming model described in the microcontroller line reference manual. As a result, the LL services do not implement any processing and do not require any additional memory resources to save their states, counter or data pointers: all the operations are performed by changing the associated peripheral registers content. So, as a response to your question, the LL drivers can be added by user when he want to in order to perform particular direct register access that can’t be done by HAL library.
27
Istovremeno korišćenje HAL and LL drajvera - dokumentacija
28
LL drajverski fajlovi
29
Projekti za ADC Testiramo projekat ADC_ContinuousConversion_TriggerSW
Akvizija se vrši kontinulano sa kanala 9, tj. pina PA4 (na ploči arduino pin A2)
30
Projekat ADC_ContinuousConversion_TriggerSW
U main-u nema HAL_init funkcije Ovo su korisničke funkcije za inicijalizaciju i startovanje ADC-a Ne postoji fajl ...hal_msp.c!
31
Softversko startovanje konverzije bez prekida, sa poliranjem – KORISNIČKA FUNKCIJA
Prva konverzija i njen rezutat.
32
Prva konverzija i njen rezutat.
Korisnička funkcija Funkcije LL drajvera uvek počinju sa LL.
33
LL drajverske funkcije
Ovo je primer INLINE funkcije i stoga se njena definicija nalazi u .h fajlu
34
ADC Configure and ADC activate
35
ADC overrun Overrun behavior on conversion data DATA PRESERVED
DATA OVERWRITTEN
36
Sequencer This function retrieves:
Sequence length: Number of ranks in the scan sequence. Sequence direction: Unless specified in parameters, sequencer scan direction is forward (from rank 1 to rank n). Sequencer ranks are selected using function "LL_ADC_REG_SetSequencerRanks()".
37
Glavni program Konverzija se vrši kontinulano maksimalnom brzinom određenom sample/hold vremenom i taktom ADC-a, a rezultat se očitava po potrebi.
38
Cortex-M Trace
39
Cortex-M Trace
40
Dodajemo promenljivu u logički analizator.
41
Podešavamo opseg u kojem se promenljiva nalazi da bi prikaz bio jasan.
42
Ne iscrtava ništa i pri dnu ekrana piše Sw buffer overflow. Zašto?
43
Delay.... Bez ovog delay-a pri svakom novom ažuriranju vrednosti sa ADC-a generiše se prenos što ST-link V2 lite ne može dovoljno brzo da obradi.
44
Performanse TRACE-a zavise od debugger-a ali i do softvera i drajvera na PC-ju...
45
Kombinovanje HAL i LL U projekat ADC_ContinuousConversion_TriggerSW dodati USART2 koji šalje trenutnu vrednost konverzije na usb i očitati vrednost u terminalu.
46
Kako uneti HAL? stm32l4xx.h će pozvati HAL fajlove samo ako važi define USE_HAL_DRIVER (podešava se u Project->Options->C/C++ Ako probate da build-ujete GREŠKE! Fali nam hal_conf.h fajl Gde je on? To je .h fajl koji user menja i ne može da se nalazi u drivers/inc folderu, već mora da bude uz sam projekat!
47
USART_TwoBoards_IT
48
ADC_SingleConversion_TriggerTimer_DMA
TIM2 generiše TRGO izlaz periodično DMA se kofiguriše tako da joj je zahtev 0 na kanalu 1 aktivan (ADC1 zahtev), u cirkularnom modu, prenosi iz periferije podatke u bafer. ADC se konfiguriše da vrši konverziju na triger TIM2_TRGO, da koristi DMA u unlimited modu (adc1 je je vezan samo na DMA1 ch1), očitava jedan samo jednom kada dođe triger signal.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.