Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Mikrokontrolery STM32 (z rdzeniem ARM) (na podstawie dokumentacji STMicroelectronics) Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie 12 bitowy przetwornik ADC Metoda SAR (ang. successive approximation) Konfigurowalna rozdzielczość: 12b, 10b, 8b,6b Do 19 kanałów analogowych – pomiary z 16 źródeł zewnętrznych, dwóch wewnętrznych oraz kanał VBAT Wyrównanie wyniku do lewej lub prawej 16b rej. Analogowy watchdog – wykrywa przekroczenie zdefiniowanych przez użytkownika limitów napięcia wejściowego. Zakres napięć wejściowych: VREF- <= VIN <= VREF+ Wymagane napięcia zasilania ADC: 2,4V do 3,6V dla pełnej prędkości i większe od 1,8 przy małej prędkości. Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Przełączanie do trybu praca/obniżony pobór energii (kilka µA) – bit ADON Dwa zegary systemowe: ADCCLK – praca przetwornika, sterowany z preskalera (APB2/2, /4, /6, lub /8) Zegar interfejsu cyfrowego równy APB2 16 multipleksowanych kanałów, które mogą być organizowane w dwie grupy: : praca podstawowa (do 16 konwersji) i wstrzykiwanie (do 4 konwersji) Kanał sensora temperatury, kanały napięć VREFINT i VBAT Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Przebiegi czasowe Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Analogowy watchdog Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Opóźnienie konwersji wtrącanej Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Minimalny czas konwersji w trybie szybkim Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Schemat blokowy multi ADC Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Schemat blokowy multi ADC Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Wprowadzenie Sensor temperatury (-40 do +125 °C, dokładność ±1,5 °C) Zalecany czas próbkowania -17,1 µs Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Skan wielokanałowy – tryb pojedynczej konwersji Sekwencer ADC – pozwala skonfigurować dowolny ciąg pomiarów do 16 kanałów z różnymi czasami próbkowania, w dowolnej kolejności Oszczędność oprogramowania Pomiar parametrów ze sobą powiązanych Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Pojedynczy kanał – tryb ciągłej konwersji Tryb ciągłych pomiarów z jednego kanału na czas nieokreślony – praca w tle, bez ingerencji procesora Dodatkowo może być wykorzystany kanał DMA (w trybie „kołowym”), co zmniejsza obciążenie CPU Metoda obsługi: DMA i przerwania Metoda stosowana, np. w procesach regulacji ciągłej Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Wielokanałowy skan – tryb ciągłej konwersji Sekwencer umożliwia skonfigurowanie dowolnego ciągu maksymalnie 16 kanałów, z różnymi czasami próbkowania Tryb analogiczny do trybu pojedynczego cyklu z tym, że sekwencja jest powtarzana aż do zatrzymania Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Tryb konwersji wstrzykiwanej (ang. Injected conversion mode) Tryb jest stosowany w przypadku uruchamiania konwersji przez zdarzenie zewnętrzne lub program Wstrzykiwana grupa ma pierwszeństwo przed podstawowym cyklem przetwarzania Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Podstawowy tryb pracy jednoczesnej dwóch ADC (ang. Dual regular simultaneous mode) Tryb jednoczesnej pracy dwóch przetworników: ADC1 master i ADC2 slave, które są synchronizowane wewnętrznie Przykład: ADC1 konwertuje sekwencję 16 kanałów od 15 do 0, a ADC2 sekwencję kanałów od 0 do 15 (oddzielne sekwecery) Zast. potrzeba jednoczesności pomiarów (np. moc = u(t) x i(t)) Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Podstawowy tryb pracy jednoczesnej dwóch ADC (ang. Dual regular simultaneous mode) Tryb jednoczesnej pracy dwóch przetworników: ADC1 master i ADC2 slave, które są synchronizowane wewnętrznie Przykład: ADC1 konwertuje sekwencję 16 kanałów od 15 do 0, a ADC2 sekwencję kanałów od 0 do 15 (oddzielne sekwecery) Zast. potrzeba jednoczesności pomiarów (np. p(t) = u(t) x i(t)) Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Podstawowy tryb pracy jednoczesnej dwóch ADC (ang. Dual regular simultaneous mode) Przykład pomiaru mocy Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Tryb pracy jednoczesnej dwóch ADC z szybkim przeplotem (ang. Dual fast interleaved mode) Tryb umożliwia zwiększenie prędkości przetwarzania z jednego kanału – zalecane użycie DMA, zamiast przerwań 14 MHz – maksymalna częstotliwość zegara ADC (1 M próbek) Wyniki przechowywane są w rejestrze danych ADC1 (format 32 bity) Przykład: 14 MHz/7 = 2 MHz częstotliwość próbkowania Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Tryb pracy jednoczesnej dwóch ADC z wolnym przeplotem (ang. Dual slow interleaved mode) Przetwarzanie w cyklu 14 okresów zegara ADC – zalecane użycie DMA, zamiast przerwań Przykład: 14 MHz/7 = 2 MHz częstotliwość próbkowania Wyniki przechowywane są w rejestrze danych ADC1 (format 32 bity) Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Podwójny naprzemienny tryb wyzwalania ADC (ang. Dual alternate trigger mode) Tryb ten można wykorzystywać jedynie do wstrzykiwania grup kanałów przełączanych przez to samo zewnętrzne źródło. Maksymalna liczba kanałów w grupie wynosi 4 dla każdego ADC. Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Podwójny, połączony tryb podstawowy/jednoczesny wstrzykiwany tryb ADC (ang. Dual combined regular/ simultaneous ADC mode) Wstrzyknięte kanały przetwarzane są symultanicznie Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Tryb podwójny, kombinowany: jednoczesne wstrzykiwanie + przeplot (ang. Dual combined: injected simultaneous + interleaved mode) Zygmunt Kubiak
Mikrokontrolery STM32 Przetworniki ADC Tryby pracy Tryb podwójny, kombinowany: jednoczesne wstrzykiwanie + przeplot (ang. Dual combined: injected simultaneous + interleaved mode) Przykład: Metoda mieszana może być stosowana w zasilaczach awaryjnych UPS (ang. uninterrruptible power suply) – napięcie monitorowane jest w trybie z przeplotem natomiast energia (pomiar napięcia i prądu) pobierana przez obciążenie w trybie jednoczesnego podwójnego wstrzykiwania. Zygmunt Kubiak
Mikrokontrolery STM32 Porty WE/WY (GPIO) Porty WE/WY (GPIO ang. general-purpose I/O) Każdy port posiada: Cztery 32-bitowe rejestry konfiguracyjne (GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR) 32-bitowy rejestr set/reset (GPIOx_BSRR) Dwa 32-bitowe rejestry alternatywnego wyboru funkcji (GPIOx_AFRH, GPIOx_AFRL) Do 16 we/wy pod kontrolą Organizacja wyjść: push-pull lub open drain + pull-up/down Wyjście danych z rejestru danych (GPIOx_ODR) lub układów peryferyjnych Selekcja prędkości dla każdego we/wy Zygmunt Kubiak
Mikrokontrolery STM32 Porty WE/WY (GPIO) Organizacja wejść: „pływające” (bez podciągania), pull-up/down, analog Dane we zapisywane do rejestru wejściowego danych (GPIOx_IDR) lub do układów peryferyjnych Typowy prąd obciążenia (wpływający/wypływający) wyjścia - 8mA; możliwy jest tryb, w którym max prąd wpływający może wynosić 20mA. Uwaga – suma prądów wszystkich wyprowadzeń, prądu CPU oraz pozostałych układów wewnętrznych mikrokontrolera nie może przekroczyć max wartości dopuszczalnej około 150mA. Zygmunt Kubiak
Mikrokontrolery STM32 Porty WE/WY (GPIO) Podstawowa struktura linii portu we/wy Zygmunt Kubiak
Mikrokontrolery STM32 Porty WE/WY (GPIO) Obwody wejściowe Zygmunt Kubiak
Mikrokontrolery STM32 Porty WE/WY (GPIO) Konfiguracja wejścia analogowego o wysokiej impedancji Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA DMA (ang. Direct memory access) – układ bezpośredniego dostępu do pamięci. Szybki transfer danych między peryferiami i pamięcią lub między pamięcią a pamięcią bez pośrednictwa CPU. Dwa kontrolery DMA mają w sumie 16 strumieni (po 8 każdy), każdy dedykowany jest do zarządzania żądaniami dostępu do pamięci od jednego lub więcej układów peryferyjnych. Każdy strumień może zawierać do 8 kanałów (żądań) i każdy ma arbitra do obsługi priorytetów żądań kierowanych do DMA. Możliwość programowania liczby danych, transferowanych od 1 do 65535 Transfer układów peryferyjnych – liczba danych nie jest znana, transfer jest kontrolowany źródłowe lub docelowe urządzenie peryferyjne, które generuje sygnał końca. Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Schemat blokowy DMA Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Możliwe transakcje Układ peryferyjny do pamięci Pamięć do układu peryferyjnego Pamięć do pamięci Kontroler DMA zawiera dwa porty ABH: port ABH pamięci, podłączony do pamięci i port AHB peryferyjny, łączony z peryferiami Port ABH slave jest wykorzystany do programowania kontrolera DMA (obsługuje tylko 32 bitowy dostęp). W przykładzie na następnym slajdzie, port ABH układów peryferyjnych kontrolera DMA1 nie jest włączony i dlatego strumienie DMA2 są w stanie wykonać transfery pamięć-pamięć. Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Tryb peryferia do pamięci Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Tryb pamięć do układów peryferyjnych Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Tryb pamięć do pamięci Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Tryb pracy Po włączeniu danego trybu (ustawienie bitu EN w rej. DMA_SxCR) niezwłocznie rozpoczyna się wypełnianie przez źródło stosu FIFO Przy każdym żądaniu od ud urządzenia docelowego następuje pobieranie danych z FIFO W trybie bezpośrednim (gdy wartość DMDIS w rej DMA_SxFCR ma wartość ‘0’) zapełnienie FIFO nie jest uwzględniane Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Tryb pracy Po włączeniu danego trybu (ustawienie bitu EN w rej. DMA_SxCR) niezwłocznie rozpoczyna się wypełnianie przez źródło stosu FIFO Przy każdym żądaniu od ud urządzenia docelowego następuje pobieranie danych z FIFO W trybie bezpośrednim (gdy wartość DMDIS w rej DMA_SxFCR ma wartość ‘0’) zapełnienie FIFO nie jest uwzględniane Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Tryby pracy Tryb przesyłania porcjowego(ang. burst mode) Kontroler DMA, jęśli ma do przesłania dane, zajmuje magistralę, nie dopuszczając do niej CPU Zaleta: większa szybkość transferu danych Wada: blokowanie CPU na czas transferu, w niektórych przypadkach nie do zaakceptowania Tryb zajmowania cykli magistrali (ang. bus stealing) „Podkradanie „ cykli magistrali przez kontroler DMA. Spowolnienie pracy CPU ale nie blokowanie Gdy DMA zgłosi potrzebę przesłania danych, to CPU przed rozpoczęciem cyklu magistrali zostaje wstrzymany. DMA transferuje jedno słowo poczym oddaje kontrolę magistrali do CPU Tryb częściej wykorzystywany w mikrokontrolerach Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Tryby pracy Zygmunt Kubiak
Mikrokontrolery STM32 Kontroler DMA Priorytety DMA Najwyższy (ang. very high priority) Wysoki (ang. high priority) Średni (ang. medium priority) Niski (ang. low priority) Zygmunt Kubiak