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

Podobne dokumenty
Programowanie mikrokontrolerów 2.0

Porty GPIO w mikrokontrolerach STM32F3

Instytut Teleinformatyki

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

Programowanie mikrokontrolerów 2.0

Opóźnienia w STM32 (2)

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

STM32Cube ułatwienie tworzenia oprogramowania

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

Programowanie mikrokontrolerów 2.0

Politechnika Śląska w Gliwicach

Instytut Teleinformatyki

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

Timery w mikrokontrolerach STM32F3

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

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

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

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Programowanie układów STM32F4 (1)

SML3 październik

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

Laboratorium mikrokontrolerów

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

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

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

Laboratorium Procesorów Sygnałowych

DOKUMENTACJA PROJEKTU

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

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

Szkolenia specjalistyczne

Programowanie mikrokontrolerów 2.0

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Wstęp Architektura... 13

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

Instrukcja obsługi Zasilacz regulowany WINNERS XL4015 USB

Expandery wejść MCP23S17 oraz MCP23017

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

Instytut Teleinformatyki

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

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

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

Instrukcja obsługi. PROGRAMATOR dualavr. redflu Tarnów

ZL5ARM. Zestaw uruchomieniowy dla mikrokontrolerów LPC2119/2129 (rdzeń ARM7TMDI-S) Kompatybilność z zestawem MCB2100 firmy Keil

Płytka uruchomieniowa XM32

Podstawy Elektroniki dla Informatyki. Pętla fazowa

Uniwersalny sterownik silnika krokowego z portem szeregowym RS232 z procesorem AT90S2313 na płycie E200. Zestaw do samodzielnego montażu.

Karta katalogowa JAZZ OPLC JZ20-T40/JZ20-J-T wejść cyfrowych, 2 wejścia analogowe/cyfrowe, 2 wejścia analogowe. 20 wyjść tranzystorowych

Konfiguracja i programowanie PLC Siemens SIMATIC S7 i panelu tekstowego w układzie sterowania napędami elektrycznymi. Przebieg ćwiczenia

AN ON OFF TEMPERATURE CONTROLLER WITH A MOBILE APPLICATION

Instytut Teleinformatyki

TECHNIKA MIKROPROCESOROWA II

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

2. Architektura mikrokontrolerów PIC16F8x... 13

Stair Lighting Driver. Sterownik oświetlenia schodowego Instrukcja użytkowania

Szybka instrukcja obsługi - Wi.TV

Mikrokontrolery AVR Wprowadzenie

Technika mikroprocesorowa. Konsola do gier

Instrukcja obsługi programatora AVR Prog USB v2

Ustawienia ogólne. Ustawienia okólne są dostępne w panelu głównym programu System Sensor, po kliknięciu ikony

TECHNIKA MIKROPROCESOROWA II

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

dv-2ps INSTRUKCJA OBSŁUGI

Instytut Teleinformatyki

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

Centrala alarmowa ALOCK-1

Programowanie mikrokontrolerów - laboratorium

GSM KONTROLER V3.0 instrukcja v 1.0

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

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Parametryzacja przetworników analogowocyfrowych

Ciśnieniomierz typ AL154AG08.P

Instrukcja obsługi programatora AVR Prog USB v2

LOW ENERGY TIMER, BURTC

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

uruchomieniowego i biblioteki API dla mikrokontrolerów STM32

Programator procesorów rodziny AVR AVR-T910

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

Cisco EPC2100 Instrukcja obsługi modemu

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

Huawei EchoLife HG8245/ GPON Terminal. User s Manual

W semestrze letnim studenci kierunku Aplikacje Internetu Rzeczy podczas ćwiczeń z programowania CAD/CAM

M-1TI. PRECYZYJNY PRZETWORNIK RTD, TC, R, U NA SYGNAŁ ANALOGOWY 4-20mA Z SEPARACJĄ GALWANICZNĄ. 2

Programowanie STM32F4(7)

MultiTool instrukcja użytkownika 2010 SFAR

USB AVR JTAG. Instrukcja obsługi rev.1.0. Copyright 2011 SIBIT

Wyłącznik czasowy GAO EMT757

Bufor danych USB jednorazowego użytku EBI 330-T30/EBI 330-T85 Nr produktu

Konfigurowanie mikrokontrolera, podstawy funkcjonowania aplikacji

GRM-10 - APLIKACJA PC

Programowanie mikrokontrolerów 2.0

Transkrypt:

MARM M. Suchenek Laboratorium 1 system zegarów, porty wejścia/wyjścia Celem laboratorium jest zapoznanie się ze środowiskiem uruchomieniowym Keil µvision, w tym konfiguracja środowiska, systemu zegarów, portów wejścia/wyjścia. Strukturę systemu zegarów mikrokontrolera STM32F411 przedstawia diagram: 1

1. Konfigurację systemu zegarów Konfigurację systemu zegarów należy rozpocząć od inicjalizacji wartości domyślnych dla systemu zegarów funkcją: void RCC_DeInit(void) Ustawia ona: HSI włączone HSE, PLL wyłączone wyjścia MOC1-2 wyłączone, nie zmienia ustawień dla LSE i LSI. Następnie wybrać należy odpowiednie źródła zegara dla mikrokontrolera, to jest przynajmniej jeden z zegarów: HSE, HSI, LSE, LSI. Konfiguracja zewnętrznego źródła zegara HSE: RCC_HSEConfig(uint32_t RCC_HSE) parametry wejściowe: RCC_HSE_ON/RCC_HSE_OFF włącza/wyłącza zewnętrzny oscylator RCC_HSE_Bypass pozwala podać zewnętrzny zegar na wejście HSE Funkcja czeka na włączenie zegara HSE ErrorStatus RCC_WaitForHSEStartUp(void), funkcja zwraca: SUCCESS oscylator HSE jest stabilny i gotowy ERROR nie jest gotowy Włączenie/wyłączenie szybkiego wbudowanego zegara HSI: void RCC_HSICmd(FunctionalState NewState), parametr wejściowy przyjmuje wartości: ENABLE bądź DISABLE kalibracja wewnętrznego źródła zegara: void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue) dopuszczalne wartości: 0 0x1F Konfiguracja zewnętrznego wolnego zegara LSE: void RCC_LSEConfig(uint8_t RCC_LSE), parametry wejściowe: RCC_LSE_ON włącza źródło jako oscylator RCC_LSE_OFF wyłącza RCC_LSE_Bypass pozwala podać zewnętrzny zegar na wejście LSE Włączenie/wyłączenie wewnętrznego oscylatora LSI: void RCC_LSICmd(FunctionalState NewState), parametry wejściowe funkcji ENABLE lub DISABLE Oprócz włączenia zegara należy skonfigurować odpowiednio multiplekser System clock mux, który określa źródło zegara dla mikrokontrolera: void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource) RCC_SYSCLKSource_HSI wewnętrzny zegar szybki HSI RCC_SYSCLKSource_HSE zewnętrzny zegar szybki HSE RCC_SYSCLKSource_PLLCLK zegar z pętli fazowej PLL 2

Do sprawdzenia poprawności konfiguracji systemu zegarów można skorzystać z funkcji sprawdzającej źródło zegara: uint8_t RCC_GetSYSCLKSource(void), funkcja zwraca: 0x00 - HSI used as system clock 0x04 - HSE used as system clock 0x08 - PLL used as system clock sprawdzającej częstotliwość pracy zegara głównego: void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks) sprawdzającej gotowość zegara bądź oscylatora do pracy: FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG) RCC_FLAG_HSIRDY: gotowość zegara HSI RCC_FLAG_HSERDY: gotowość zegara HSE RCC_FLAG_PLLRDY: gotowość pętli fazowej PLL RCC_FLAG_PLLI2SRDY: PLLI2S RCC_FLAG_PLLSAIRDY: PLLSAI RCC_FLAG_LSERDY: gotowość zegara LSE RCC_FLAG_LSIRDY: gotowość zegara LSI oraz przyczynę wyzerowania mikrokontrolera: RCC_FLAG_BORRST: POR/PDR bądź BOR reset RCC_FLAG_PINRST: poprzez pin reset RCC_FLAG_PORRST: POR/PDR reset RCC_FLAG_SFTRST: Software reset RCC_FLAG_IWDGRST: reset poprzez niezależny watchdog RCC_FLAG_WWDGRST: reset poprzez watchdog okienkowy RCC_FLAG_LPWRRST: Low Power reset Funkcja zwracane FlagStatus, która może przyjąć wartość SET lub RESET Konfiguracja pętli fazowej PLL: void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP, uint32_t PLLQ) RCC_PLLSource określa źródło zegara dla pętli fazowej: RCC_PLLSource_HSI RCC_PLLSource_HSE PLLM - dzielnik częstotliwości dla VCO: ustawiany w zakresie 0-63 PLLN - mnożnik częstotliwości dla VCO: ustawiany w zakresie 192-432 PLLP - dzielnik częstotliwości dla zegara mikrokontrolera SYSCLK (2,4,6,8) PLLQ - dzielnik zegara dla układów: OTG FS, SDIO i RNG 4-15 Uwaga: VCO pętli fazowej może pracować w zakresie częstotliwości od 192 do 432 MHz Włączenie pętli fazowej: void RCC_PLLCmd(FunctionalState NewState) NewState może przyjąć wartości określone jako ENABLE bądź DISABLE 3

Konfiguracja zegarów dla magistral AHB, APB1, APB2: konfiguracja zegarów dla magistrali AHB (HCLK) void RCC_HCLKConfig(uint32_t RCC_SYSCLK) RCC_SYSCLK_Div1: AHB clock = SYSCLK RCC_SYSCLK_Div2: AHB clock = SYSCLK/2 RCC_SYSCLK_Div4: AHB clock = SYSCLK/4 RCC_SYSCLK_Div8: AHB clock = SYSCLK/8 RCC_SYSCLK_Div16: AHB clock = SYSCLK/16 RCC_SYSCLK_Div64: AHB clock = SYSCLK/64 RCC_SYSCLK_Div128: AHB clock = SYSCLK/128 RCC_SYSCLK_Div256: AHB clock = SYSCLK/256 RCC_SYSCLK_Div512: AHB clock = SYSCLK/512 konfiguracja wolnych zegarów dla magistrali APB1 (PCLK1) void RCC_PCLK1Config(uint32_t RCC_HCLK) RCC_HCLK_Div1: APB1 clock = HCLK RCC_HCLK_Div2: APB1 clock = HCLK/2 RCC_HCLK_Div4: APB1 clock = HCLK/4 RCC_HCLK_Div8: APB1 clock = HCLK/8 RCC_HCLK_Div16: APB1 clock = HCLK/16 konfiguracja szybkich zegarów dla magistrali APB2 (PCLK2) void RCC_PCLK2Config(uint32_t RCC_HCLK) RCC_HCLK_Div1: APB2 clock = HCLK RCC_HCLK_Div2: APB2 clock = HCLK/2 RCC_HCLK_Div4: APB2 clock = HCLK/4 RCC_HCLK_Div8: APB2 clock = HCLK/8 RCC_HCLK_Div16: APB2 clock = HCLK/16 4

2. Konfiguracja portów wejścia/wyjścia Konfigurację portów wejściowych bądź wyjściowych należy rozpocząć od włączenia zegara dla poszczególnych portów, które mają być używane. Porty podłączone są do magistrali AHB1, stąd należy skorzystać z funkcji: void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState) gdzie: RCC_AHB1Periph określa port NewState stan ENABLE bądź DISABLE, włącza bądź wyłącza port np. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE) Kolejnym etapem jest powołanie oraz uzupełnienie struktury odpowiedzialnej za konfigurację portu zdefiniowaną w pliku stm32f4xx_gpio.h: typedef struct { uint32_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; GPIOOType_TypeDef GPIO_OType; GPIOPuPd_TypeDef GPIO_PuPd; } GPIO_InitTypeDef; Do inicjalizacji struktury można użyć funkcji: void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) Zapis do portu 16 bitów: void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal) np. GPIO_Write(GPIOA, 0xffff); Zapis do pojedynczego wyprowadzenia mikrokontrolera: void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal) np. GPIO_WriteBit(GPIOA, GPIO_Pin_1, 0); bądź alternatywna funkcja ustawiająca wartość logiczną 1 na wyjściu: void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) np. GPIO_SetBits(GPIOF, GPIO_Pin_6) bądź kilka wyprowadzeń z portu: GPIO_SetBits(GPIOF, GPIO_Pin_6 GPIO_Pin_7 GPIO_Pin_8 GPIO_Pin_9) bądź alternatywna funkcja ustawiająca wartość logiczną 0 na wyjściu: void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) np. GPIO_ResetBits(GPIOF, GPIO_Pin_6) bądź kilka wyprowadzeń z portu: np. GPIO_ResetBits(GPIOF, GPIO_Pin_6 GPIO_Pin_7 GPIO_Pin_8 GPIO_Pin_9) Można także bezpośrednio ustawiać wartości rejestrów ustawiającą wartość wyprowadzeń w stan logiczny 1 : np. GPIOA->BSRR = GPIO_Pin_10; // GPIOA.10 = 1 5

bądź ustawiającą wartość wyprowadzeń w stan logiczny 0 : np. GPIOA->BRR = GPIO_Pin_10; // GPIOA.10 = 0 Odczyt ustawionej wartości portu wyjściowego: uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx) np. readvalue = GPIO_ReadOutputData(GPIOC); Odczyt pojedynczego pinu portu wyjściowego: uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) np. readvalue = GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0) Odczyt portu wejściowego, 16 bitów: uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx) np. portval = GPIO_ReadInputdata(GPIOA); Odczyt stanu pojedynczego wyprowadzenia: uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) np. if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_15) == 0) { } 6

3. Opis zestawu laboratoryjnego Do portów płytki uruchomieniowej, podłączone są: PA5 - zielona dioda LED, oznaczona jako LD2 PC13 przycisk niebieski oznaczony jako USER Złącze USB do programowania i diagnostyki USER LD2 Zdjęcie płytki uruchomieniowej z mikrokontrolerem STM32F411. 7