Programowanie mikrokontrolerów 2.0

Podobne dokumenty
MARM. Laboratorium 1 system zegarów, porty wejścia/wyjścia. M. Suchenek

Programowanie mikrokontrolerów 2.0

Programowanie mikrokontrolerów 2.0

Timery w mikrokontrolerach STM32F3

Porty GPIO w mikrokontrolerach STM32F3

Programowanie mikrokontrolerów 2.0

Programowanie mikrokontrolerów 2.0

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 2

Układy zegarowe w systemie mikroprocesorowym

Programowanie mikrokontrolerów 2.0

Podstawy Elektroniki dla Informatyki. Pętla fazowa

3. Sygnały zegarowe i ich konfiguracja, mechanizmy bezpieczeństwa... 47

Programowanie mikrokontrolerów 2.0

STM32 tryby obniżonego poboru mocy (2)

Implementacja algorytmów DSP w mikrokontrolerach STM32F3

Układy zegarowe w systemie mikroprocesorowym

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Układy czasowo-licznikowe w systemach mikroprocesorowych

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Programowanie mikrokontrolerów 2.0

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

Programowanie układów STM32F4 (1)

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

Mikrokontrolery z rdzeniami Cortex-M - STM32F401 w praktyce. Grzegorz Mazur Politechnika Warszawska Instytut Informatyki

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

MSP430 w przykładach (2)

ISP ADAPTER. Instrukcja obsługi rev.1.1. Copyright 2009 SIBIT

Programowanie mikrokontrolerów 2.0

1.2. Architektura rdzenia ARM Cortex-M3...16

Programowanie mikrokontrolerów 2.0

Wykład 6. Mikrokontrolery z rdzeniem ARM

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Konfiguracja i programowanie Gamepad'a PlayStation2 na mikrokontrolerze STM32

Zastosowania mikrokontrolerów w przemyśle

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

UKŁADY Z PĘTLĄ SPRZĘŻENIA FAZOWEGO (wkładki DA171A i DA171B) 1. OPIS TECHNICZNY UKŁADÓW BADANYCH

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Układy czasowo-licznikowe w systemach mikroprocesorowych

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

2. Architektura mikrokontrolerów PIC16F8x... 13

Wbudowane układy peryferyjne cz. 1 Wykład 7

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

SML3 październik

Pobór mocy przez układy mikroprocesorowe

Opóźnienia w STM32 (2)

Laboratorium mikrokontrolerów

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 5

Wstęp Architektura... 13

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

STM32 tryby obniżonego poboru mocy

Układy czasowo-licznikowe w systemach 80x86

Transceiver do szybkiej komunikacji szeregowej i pętla fazowa do ogólnych zastosowań

Opóźnienia w STM32 (1)

Technika Mikroprocesorowa

Szkolenia specjalistyczne

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09

STM-owa układanka: Nucleo, AC6, HAL

Funkcje sterowania cyfrowego przekształtników (lista nie wyczerpująca)

2. Budowa układów procesorowych rodziny TMS320C

Część 6. Mieszane analogowo-cyfrowe układy sterowania. Łukasz Starzak, Sterowanie przekształtników elektronicznych, zima 2011/12

LABORATORIUM ELEKTRONIKA I ENERGOELEKTRONIKA BADANIE GENERATORÓW PRZEBIEGÓW PROSTOKĄTNYCH I GENERATORÓW VCO

STM32 dla użytkowników 8-bitowców (2)

Instytut Teleinformatyki

Podstawy systemów mikroprocesorowych

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

Programowanie mikrokontrolerów. 8 listopada 2007

Wykład 2. Przegląd mikrokontrolerów 8-bit: -AVR -PIC

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 4

WYKORZYSTANIE WEWNĘTRZNYCH GENERATORÓW RC DO TAKTOWANIA MIKROKONTROLERÓW AVR

Ćwiczenie 23. Cyfrowe pomiary czasu i częstotliwości.

NOTATNIK KONSTRUKTORA Płytka prototypowa z mikrokontrolerem STM32 L4

Ćwiczenie 23. Cyfrowe pomiary czasu i częstotliwości.

STM32 dla początkujących (i nie tylko)

Generator tonów CTCSS, 1750Hz i innych.

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Pobór mocy przez układy mikroprocesorowe

Programowalne układy logiczne

Wbudowane układy komunikacyjne cz. 1 Wykład 10

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Uniwersalna płytka generatora tonów CTCSS, 1750Hz i innych.

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

Instrukcja użytkownika

Politechnika Białostocka

Podstawowe informacje o STM8

ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x. Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC213x

Programowanie mikrokontrolerów. 3 stycznia 2008

Synteza częstotliwości z pętlą PLL

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Mikrokontrolery STM32G0 PODZESPOŁY

Laboratorium Procesorów Sygnałowych

1. Zasilacz mocy AC/ DC programowany 1 sztuka. 2. Oscyloskop cyfrowy z pomiarem - 2 sztuki 3. Oscyloskop cyfrowy profesjonalny 1 sztuka

MMstm32F103Vx. Instrukcja uŝytkownika REV 1.1. Many ideas one solution

MOD STM32 explorem0 z STM32F051C8T6. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

12. Demodulatory synchroniczne z fazową pętlą sprzężenia zwrotnego

Systemy akwizycji i transmisji sygnałów

STM32L0: Cortex-M0+ w rodzinie STM32

Transkrypt:

4.1 Programowanie mikrokontrolerów 2.0 Taktowanie Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 22 listopada 2016

4.2 Drzewo taktowania w STM32F411 Źródło: RM0383 Reference manual, STM32F411xC/E advanced ARM-based 32-bit MCUs, Figure 12. Clock tree

4.3 Drzewo taktowania w STM32F411 Cztery oscylatory: LSI, LSE, HSI, HSE Dwie pętle fazowe: PLL, PLLI2S Kilkanaście wewnętrznych sygnałów zegarowych Dwa wyjścia sygnałów zegarowych: MCO1, MCO2 Jedno wejście sygnału zegarowego: I2S CKIN Kilka układów wybierających jeden z kilku sygnałów zegarowych Mnóstwo dzielników częstotliwości (ang. prescaler) Niezależne włączanie sygnału zegarowego dla poszczególnych peryferii Uwaga: jeśli nie zaznaczono tego jawnie, to podane na kolejnych slajdach wartości liczbowe dotyczą tego modelu mikrokontrolera

LSI (ang. Low Speed Internal) Wewnętrzny generator RC małej częstotliwości f LSI = 32 ± 15 khz Taktowanie strażnika (ang. watchdog) Taktowanie zegara czasu rzeczywistego RTC (ang. Real Time Clock) niezalecane

LSE (ang. Low Speed External) Generator kwarcowy małej częstotliwości f LSE = 32768 Hz Wymaga podłączenia zegarkowego rezonatora kwarcowego Dokładność wynika z parametrów zastosowanego rezonatora Taktowanie zegara czasu rzeczywistego RTC Zamiast rezonatora kwarcowego można podłączyć zewnętrzne źródło sygnału zegarowego

HSI (ang. High Speed Internal) Wewnętrzny generator RC dużej częstotliwości f HSI = 16 MHz Dokładność zależna od zakresu temperatur pracy: od ±1% do ±8% Możliwość programowej kalibracji Taktowanie większości układów mikrokontrolera, z wyjątkiem strażnika i zegara czasu rzeczywistego

HSE (ang. High Speed External) Generator kwarcowy dużej częstotliwości 4 MHz f HSE 26 MHz Dokładność wynika z parametrów zastosowanego rezonatora Zamiast rezonatora kwarcowego można podłączyć zewnętrzne źródło sygnału zegarowego Taktowanie większości układów mikrokontrolera, z wyjątkiem strażnika

4.8 Pętla fazowa (ang. Phase Locked Loop) f VCO f VCO f IN M Detektor fazy N f VCO = N M f IN

4.9 PLL w STM32F411 Oscylator pętli fazowej wytwarza sygnał zegarowy o częstotliwości gdzie f VCO = N M f PLL IN f PLL IN = f HSI lub f PLL IN = f HSE Sygnał tego oscylatora służy do wytworzenia sygnału wyjściowego f PLL OUT = f VCO /P oraz sygnału zegarowego 48 MHz dla interfejsu USB f PLL48CK = f VCO /Q

4.10 PLL w STM32F411, cd. Ograniczenia częstotliwości 1 MHz f PLL IN /M 2 MHz 100 MHz f VCO 432 MHz 24 MHz f PLL OUT 100 MHz Ograniczenia wartości współczynników M = 2, 3, 4,..., 63 N = 50, 51, 52,..., 432 P = 2, 4, 6, 8 Q = 2, 3, 4,..., 15

4.11 Pytania kontrolne Czy można uzyskać jednocześnie f PLL48CK = 48 MHz i f PLL OUT = 100 MHz? Dlaczego możemy chcieć taktować mikrokontroler z częstotliwością mniejszą niż maksymalna dopuszczalna?

PLLI2S w STM32F411 Pętla fazowa wytwarzająca sygnał zegarowy do taktowania interfejsu I2S f PLLI2SCLK = N M R f PLL IN To samo źródło sygnału wejściowego f PLL IN Niezależne współczynniki Podobne ograniczenia jak dla głównej PLL

Szyny w STM32F411 Źródło: STM32F411xC/E Data sheet 4.13

4.14 Dystrybucja sygnałów zegarowych w STM32F411 Główny sygnał zegarowy f SYSCLK = f HSI lub f HSE lub f PLL OUT Służy do wytworzenia sygnałów taktujących rdzeń, pamięci, DMA oraz szyn AHB1 (GPIO, rejestry konfiguracyjne DMA) i AHB2 (USB) gdzie Ograniczenie f HCLK = f SYSCLK /HPRE HPRE = 1, 2, 4, 8, 16, 64, 128, 256, 512 f HCLK 100 MHz Do szyny AHB1 podłączone są szyny APB1 i APB2, do których podłączone są pozostałe peryferie

Dystrybucja sygnałów zegarowych w STM32F411 Szyna APB1, do której podłączone są wolne peryferie: TIM2, TIM3, TIM4, TIM5, WWDG, SPI2, SPI3, USART2, I2C1, I2C2, I2C3,... f PCLK1 = f HCLK /PPRE1, gdzie PPRE1 = 1, 2, 4, 8, 16 Ograniczenie f PCLK1 50 MHz Szyna APB2, do której podłączone są szybkie peryferie: TIM1, TIM9, TIM10, TIM11, USART1, USART6, ADC1, SDIO, SPI1, SPI4, SPI5, SYSCFG,... f PCLK2 = f HCLK /PPRE2, gdzie PPRE2 = 1, 2, 4, 8, 16 Ograniczenie f PCLK2 100 MHz

4.16 Dystrybucja sygnałów zegarowych w STM32F411 Liczniki (TIMx) podłączone do szyny APBy taktowane są zegarem o częstotliwości gdzie x = 1, 2, 3,..., y = 1, 2 f PCLKy, gdy PPREy = 1 2f PCLKy, gdy PPREy > 1 Uwaga: w większości modeli STM dystrybucja sygnałów zegarowych jest podobna do wyżej opisanej, ale występują drobne acz znaczące różnice trzeba czytać dokumentację

Maksymalne częstotliwości taktowania w wybranych modelach STM32 [MHz] L0xx F0xx F10x F2xx L1xx F3xx 1 f PCLK1 32 48 36 30 f PCLK2 32 48 72 60 f HCLK 32 48 72 120 [MHz] L4xx F401 F410 F405/415 F427/437 F7xx F411 F407/417 F429/439 F446 F469/479 f PCLK1 40 42 50 42 45 54 f PCLK2 80 84 100 84 90 108 f HCLK 80 84 100 168 180 216 1 Niektóre liczniki mogą być taktowane z częstotliwością 144 MHz 4.17

Po wyzerowaniu Po włączeniu zasilania lub sprzętowym albo programowym wyzerowaniu mikrokontrolera f HCLK = f PCLK1 = f PCLK2 = f SYSCLK = f HSI

Przykład konfiguracji HSE Konfigurowanie trzeba rozpocząć z wyłączonym HSE i wyłączonymi pętlami fazowymi RCC->CR &= ~(RCC_CR_PLLI2SON RCC_CR_PLLON RCC_CR_HSEBYP RCC_CR_HSEON); Włączamy oscylator HSE z rezonatorem kwarcowym RCC->CR = RCC_CR_HSEON; Albo włączamy zewnętrzny generator HSE RCC->CR = RCC_CR_HSEBYP RCC_CR_HSEON; Czekamy, aż oscylator zaskoczy, czyli aż będzie spełniony warunek RCC->CR & RCC_CR_HSERDY Ale nie czekamy w nieskończoność Jak to zrobić? Co zrobić, gdy oscylator nie zaskoczy?

Przykład konfiguracji PLL Konfigurujemy sygnał wejściowy i parametry pętli fazowej RCC->PLLCFGR = RCC_PLLCFGR_PLLSRC_HSE M N << 6 ((P >> 1) - 1) << 16 Q << 24; Włączamy oscylator pętli RCC->CR = RCC_CR_PLLON; Czekamy na zsynchronizowanie się pętli, czyli aż będzie spełniony warunek RCC->CR & RCC_CR_PLLRDY Ale oczywiście nie czekamy w nieskończoność Co zrobić, gdy pętla się nie zsynchronizuje?

4.21 Przykład konfiguracji Flash Pamięć Flash jest za wolna Trzeba skonfigurować dodatkowe takty oczekiwania (ang. latency) Żeby nie spowalniać pracy mikrokontrolera, trzeba włączyć pmięci podręczne FLASH->ACR = FLASH_ACR_DCEN /* data cache */ FLASH_ACR_ICEN /* instr. cache */ FLASH_ACR_PRFTEN /* prefetch */ latency; Wartość parametru latency zależy od napięcia zasilania zakładamy, że jest większe niż 2,7 V dla innych napięć trzeba sprawdzić w dokumentacji fhclk [Hz] latency = 30 10 6

Przykład konfiguracji, taktowanie szyn Zmienna pomocnicza uint32_t reg; Konfigurujemy podzielnik dla f HCLK reg = RCC->CFGR; reg &= ~RCC_CFGR_HPRE; reg = RCC_CFGR_HPRE_DIV1; RCC->CFGR = reg; Konfigurujemy podzielnik dla f PCLK1 reg = RCC->CFGR; reg &= ~RCC_CFGR_PPRE1; reg = RCC_CFGR_PPRE1_DIV2; RCC->CFGR = reg; Konfigurujemy podzielnik dla f PCLK2 reg = RCC->CFGR; reg &= ~RCC_CFGR_PPRE2; reg = RCC_CFGR_PPRE2_DIV1; RCC->CFGR = reg;

Przykład konfiguracji, włączenie całości Ustawiamy f SYSCLK = f PLL OUT reg = RCC->CFGR; reg &= ~RCC_CFGR_SW; reg = RCC_CFGR_SW_PLL; RCC->CFGR = reg; To chwilę trwa, czekamy na spełnienie warunku (RCC->CFGR & RCC_CFGR_SWS) == RCC_CFGR_SWS_PLL Ale oczywiście nie czekamy w nieskończoność

Podsumowanie Mikrokontroler w zestawie laboratoryjnym może być taktowany wewnętrznym generatorem RC HSI o częstotliwości 16 MHz zewnętrznym generatorem kwarcowym HSE o częstotliwości 8 MHz źródłem sygnału jest ST-LINK/V2-1 Za pomocą PLL można z tych sygnałów zegarowych wytworzyć sygnały taktujące o potrzebnych częstotliwościach

Włączanie taktowania peryferii, przypomnienie i podsumowanie Peryferie podłączone do szyny AHB1 (DMA1, DMA2, CRC, GPIOx) włączamy za pomocą rejestru AHB1ENR, np. RCC->AHB1ENR = RCC_AHB1ENR_GPIOAEN; Peryferie podłączone do szyny AHB2 (USB) włączamy za pomocą rejestru AHB2ENR, np. RCC->AHB2ENR = RCC_AHB2ENR_OTGFSEN; Peryferie podłączone do szyny APB1 (TIM2, TIM3, TIM4, TIM5, WWDG, SPI2, SPI3, USART2, I2C1, I2C2, I2C3) włączamy za pomocą rejestru APB1ENR, np. RCC->APB1ENR = RCC_APB1ENR_USART2EN; Peryferie podłączone do szyny APB2 (TIM1, TIM9, TIM10, TIM11, USART1, USART6, ADC1, SDIO, SPI1, SPI4, SPI5, SYSCFG) włączamy za pomocą rejestru APB2ENR, np. RCC->APB2ENR = RCC_APB2ENR_USART1EN;