Porty GPIO w mikrokontrolerach STM32F3

Podobne dokumenty
Timery w mikrokontrolerach STM32F3

Programowanie mikrokontrolerów 2.0

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

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Wstęp Architektura... 13

Technika Mikroprocesorowa

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Laboratorium Procesorów Sygnałowych

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

2. Architektura mikrokontrolerów PIC16F8x... 13

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

Układy zegarowe w systemie mikroprocesorowym

MIKROKONTROLERY I MIKROPROCESORY

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

Instytut Teleinformatyki

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

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Ćwiczenia z S S jako Profinet-IO Controller. FAQ Marzec 2012

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

SML3 październik

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

Szkolenia specjalistyczne

Instrukcja do oprogramowania ENAP DEC-1

Ćw. 7: Układy sekwencyjne

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

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

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

WPROWADZENIE Mikrosterownik mikrokontrolery

TECHNIKA MIKROPROCESOROWA II

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

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

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

KA-Nucleo-Weather. Rev Źródło:

1. Tworzenie nowego projektu.

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Ćwiczenie 31 Temat: Analogowe układy multiplekserów i demultiplekserów. Układ jednostki arytmetyczno-logicznej (ALU).

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Laboratorium Elektrycznych Systemów Inteligentnych

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

Projektowanie z użyciem procesora programowego Nios II

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

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

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

dokument DOK wersja 1.0

Uniwersalny zestaw uruchomieniowy ZL4PIC

Temat nr 5. System czasu rzeczywistego bazujący na stałopozycyjnym procesorze sygnałowym. LABORATORIUM Procesory i komputery przemysłowe

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 4. Przekaźniki czasowe

Programowanie mikrokontrolerów 2.0

Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1.

Instytut Teleinformatyki

Programowanie w językach asemblera i C

Generator przebiegów pomiarowych Ex-GPP2

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

2.1 Przesył danych między procesorem a tabelą zmiennych

Mikrokontrolery AVR Wprowadzenie

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

Politechnika Śląska w Gliwicach

Technika mikroprocesorowa. Konsola do gier

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

Metody obsługi zdarzeń

Przetwarzanie AC i CA

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

1.Wstęp. 2.Generowanie systemu w EDK

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

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

2.1 Porównanie procesorów

Zastosowania mikrokontrolerów w przemyśle

Dokumentacja Licznika PLI-2

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

Programowanie mikrokontrolerów 2.0

Interfejs analogowy LDN-...-AN

SYSTEM PRZERWAŃ ATmega 32

Programowanie mikrokontrolerów 2.0

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Instrukcja użytkownika

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

LABORATORIUM ENERGOOSZCZĘDNEGO BUDYNKU

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Programowanie mikrokontrolerów 2.0

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

MSP430 w przykładach (2)

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

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

Instrukcja użytkownika

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

Komunikacja w mikrokontrolerach Laboratorium

KA-NUCLEO-Weather. ver. 1.0

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

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

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Transkrypt:

Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Katedra Inżynierii Systemów, Sygnałów i Elektroniki LABORATORIUM Podstawy Programowania Mikroprocesorów i Procesorów DSP Porty GPIO w mikrokontrolerach STM32F3 Opracował: mgr inż. Andrzej Biedka 1

Środowiskiem IDE tworzenia oprogramowania dla mikrokontrolerów 32-bitowych rodziny STM32F3 będzie Atollic TrueStudio for STM32. Po uruchomieniu programu Atollic TrueStudio pojawia się okno główne: Rys. 1. Fragment okna głównego programu Atollic TrueStudio. W celu sprawdzenia i/lub wyboru właściwego obszaru roboczego (Workspace) należy wybrać z menu File polecenie Switch Workspace i z otworzonej listy wybrać właściwy obszar. Pierwszym krokiem w tworzeniu programu jest utworzenie projektu. Należy wybrać z menu polecenie File -> New - > C Project: Rys.2 Wybór typu projektu. Po wybraniu typu projektu pojawi się okno danych tworzonego projektu: Rys. 3. Okno danych tworzonego projektu. 2

W oknie danych należy wpisać nazwę tworzonego projektu (pole Project name), sprawdzić i jeśli koneczne wybrać folder zapisu projektu, wybrać typ Embedded C Project i zatwierdzić okno przyciskiem Next. Pojawi się okno wyboru platformy realizacji projektu: Rys. 3. Okno wyboru platformy tworzonego projektu. Rys. 4. Okno z wybranym typem platformy tworzonego projektu. 3

W następnym oknie należy zatwierdzić domyślne ustawienia: Rys. 5. Okno konfiguracji oprogramowania IDE tworzonego projektu. W następnym oknie należy zatwierdzić domyślne ustawienia: Rys. 5. Okno konfiguracji interfejsu uruchomieniowego tworzonego projektu. Naciśnięcie przycisku Finish kończy proces przygotowania szablonu nowego projektu. Po chwili w oknie głównym otworzony zostaje projekt, z drzewem plików projektu z lewej strony ekranu oraz plikiem main.c w centralnej części ekranu. 4

Rys. 6. Okno główne środowiska IDE z szablonem utworzonego projektu. 5

Układy scalone wykonane w technologii CMOS, w jakiej produkowane są współczesne mikrokontrolery, charakteryzują się liniową zależnością poboru prądu w funkcji częstotliwości taktowania, z praktycznie równym zeru prądem zasilania przy częstotliwości sygnału zegarowego 0Hz. W mikrokontrolerach rodziny STM32 przyjęto zasadę włączania taktowania tylko do bloków wykorzystywanych w danej aplikacji. Po uruchomieniu mikrokontrolera sygnał zegarowy, taktujący pracę systemu, dostarczany jest tylko do jego rdzenia, układów pamięci i DMA. Pozostałe bloki wymagają programowego włączenia sygnałów zegarowych. Podyktowane jest to względami oszczędności poboru mocy układu. Sygnały zegarowe wytwarzane są w bloku RCC mikrokontrolera Reset and Clock Control. Schemat blokowy tego zespołu dostępny jest w karcie STM32F303xB/C/D/E Reference Manual dostępnej na stronie firmy ST Microelectronics, www.st.com/resource/en/reference_manual/dm00043574.pdf. Do uruchomienia danego portu mikrokontrolera konieczne jest włączenie sygnału zegara danego portu, pochodzącego z magistrali AHB porównaj schemat blokowy mikrokontrolera zawarty w karcie katalogowej STM32F303RE.pdf dostępnej na stronie www.st.com. Uproszczony schemat blokowy układu generującego sygnał taktowania magistrali AHB przedstawia rysunek 7. 8MHz HSI RC HSI OSC_OUT OSC_IN 4-32 MHz HSE OSC PLL SRC /1, /2, /3, /4,.../16 PREDIV PLL x2, x3, x4,...x16 PLL MUL PLL CLK HSE SW AHB presk. /1, /2, /3,.../512 HPRE AHB bus core DMA Rys. 7. Schemat blokowy układu generującego sygnał taktowania magistrali AHB Źródłem zegara może być: wewnętrzny generator RC o kalibrowanej częstotliwości 8 MHz, oznaczony HSI wewnętrzny generator współpracujący z zewnętrznym rezonatorem kwarcowym o częstotliwości w zakresie 4-32 MHz, oznaczony HSE układ pętli synchronizacji fazowej PLL sterowanej jednym z wyżej wymienionych generatorów, oznaczony PLL CLK Wybór źródła zegara dokonywany jest w multiplekserze sterowanym dwu-bitowym adresem SW. Wybrany zegar przesyłany jest do magistrali AHB i innych bloków przez preskaler dzielący częstotliwość sygnału w stosunku od 1 do 512. W bieżącym ćwiczeniu stosowany będzie zegar pochodzący z generatora HSI, bez podziału preskalera AHB. Jako platforma ćwiczeniowa stosowany będzie moduł Nucleo F303RE. Wyposażony jest on w sygnalizacyjną, zieloną diodę LED, oznaczoną LD2. Przyłączona jest ona do linii PA5. Zatem dla umożliwienia sterowania tej diody konieczne jest uruchomienie taktowania portu GPIOA. Zgodnie ze standardem CMSIS linia potrzebnego kodu będzie miała postać: RCC->AHBENR = RCC_AHBENR_GPIOAEN; Rejestr AHBENR będący elementem bit GPIOA Enable rejestru AHBENR struktury RCC (plik stm32f303xe.h linia 5700) (plik stm32f303xe.h linie 583-589) Jako operację ładowania bitu do rejestru AHBENR zastosowano sumę logiczną ( = ), by nie zmieniać stanu innych bitów rejestru wynikających z ustawień stanu RESET. 6

Jeśli istnieje potrzeba uruchomienia innych portów GPIO należy w podanej wyżej instrukcji sumować logicznie następne symbole bitów odblokowujących właściwe porty. Mikrokontrolery 32-bitowe rodziny STM32F3xx wyposażone są w 16-bitowe porty wejścia/wyjścia oznaczane GPIOx, gdzie x określa numer portu opisywany literami alfabetu od A do K, przy czym ilość portów uzależniona jest od konkretnego typu/wersji mikrokontrolera. Podstawową funkcją portu jest transmisja binarnych sygnałów wyjściowych i wejściowych. Każda linia portu może zamiennie pełnić tzw. funkcje alternatywne. Są nimi wejścia lub wyjścia układów wyposażenia mikrokontrolera, takich jak timery, przetworniki AD, DA, kanały transmisyjne różnych standardów. Blokowy schemat jednej linii portu przedstawia rysunek 8. Rys. 8. Schemat blokowy linii portu GPIO źródło STM32F303 Reference Manual. Porty GPIO mikrokontrolerów STM32F3 mają w stosunku do mikrokontrolerów 8-bitowych, przykładowo rodziny AVR, znacznie większe możliwości konfiguracji parametrów pracy. Wymaga to zastosowania większej liczby rejestrów sterujących pracą portów. Lp Tablica 1. Rejestry konfiguracyjne portów GPIO Nazwa rejestru Ilość bitów Opis rejestru Strona RefMan. 1 MODER 32 Rejestr trybu pracy portu: wejście, wyjście, funkcja alternatywna 237 2 IDR 32 Rejestr wejściowy portu 239 3 ODR 32 Rejestr wyjściowy portu 239 4 BSRRL 16 Rejestr bitowego sterowania stanem linii portu ustawianie linii 240 5 BSRRH 16 Rejestr bitowego sterowania stanem linii portu zerowanie linii 240 6 BRR 32 Rejestr zerowania linii portu 242 7 OTYPER 32 Rejestr typu wyjścia linii portu: Push-Pull, Open Drain 237 8 OSPEEDR 32 Rejestr wyboru szybkości zmian poziomów logicznych linii 238 9 PUPDR 32 Rejestr załączania rezystorów Pull Up i Pull Down linii portu 238 10 LCKR 32 Rejestr blokowania konfiguracji linii portu 240 11 AFRL 32 Rejestr wyboru funkcji alternatywnych linii GPIOx 0-7 241 12 AFRH 32 Rejestr wyboru funkcji alternatywnych linii GPIOx 8-15 242 7

Podstawowymi rejestrami portów GPIO są: ODR rejestr wyjściowy, IDR rejestr wejściowy, MODER rejestr określania kierunku pracy portu. W kontrolerach STM32 wprowadzono rejestry bitowego sterowania liniami portów: BRR rejestr bitowego zerowania linii portu, pozwalający na bezpośrednie zerowanie wybranej/wybranych linii portu, BSRR - rejestr bitowego zerowania lub ustawiania linii portu, pozwalający na bezpośrednie ustawianie/zerowanie wybranej/wybranych linii portu. Przykład programowania rejestru MODER: W 32-bitowym rejestrze MODER znajduje się szesnaście dwu-bitowych grup programujących tryb pracy każdej linii portu. Przyporządkowanie i znaczenie bitów pokazane jest na rysunku 9. Rys. 9. Opis rejestru MODER - źródło STM32F303 Reference Manual. Jeśli żądana linia portu ma pełnić funkcję wyjścia binarnego należy w parze bitów przypisanej danej linii ustawić kombinację 0b01. Dla ustawienia linii nr 5 portu GPIOA w trybie wyjścia cyfrowego należy bitom nr 11 i nr 10 rejestru MODER nadać wartość 0b01. Zgodnie ze standardem CMSIS linia potrzebnego kodu będzie miała postać: GPIOA->MODER = GPIO_MODER_MODER5_0; Rejestr MODER będący elementem bity MODER5 rejestru MODER struktury GPIO (plik stm32f303xe.h linia 5034) (plik stm32f303xe.h linie 488-501) Zmiana stanu linii portu może być wykonywana przy wykorzystaniu różnych rejestrów: ODR rejestru wyjściowy portu, wpisując do niego nową wartość bitową, BRR rejestru bitowego zerowania, pozwalającego na bezpośrednie zerowanie wybranego/wybranych bitów, a zatem linii portu. BSRR rejestru bitowego ustawiania/zerowania, pozwalającego na bezpośrednie ustawianie/zerowanie wybranego/wybranych bitów, a zatem linii portu. Rejestry BRR i BSRR wymagają wpisania 1 logicznej na pozycji zmienianego bitu zarówno dla wykonania operacji ustawiania jak i zerowania. 8

Przykładowy program zapalania i gaszenia diody LD2: int main(void) { uint32_t ii = 0; RCC->AHBENR = RCC_AHBENR_GPIOAEN; // wlaczenie zegara magistrali AHB GPIOA->MODER = GPIO_MODER_MODER5_0; // wybor trybu pracy linii 5 portu GPIOA while ( 1 ) { ii = 0xFFFF; while( ii-- ); // petla opozniajaca GPIOA->ODR = GPIO_ODR_5; // ustawienie bitu 5 rejestru ODR } ii = 0xFFFF; while( ii-- ); // petla opozniajaca GPIOA->ODR &= ~GPIO_ODR_5; // zerowanie bitu 5 rejestru ODR } return 0; Zadania: 1. Zmodyfikować program stosując zerowanie bitu przy pomocy rejestru BRR. 2. Zmodyfikować program stosując zerowanie bitu przy pomocy rejestru BSRR. 3. Zmodyfikować program stosując ustawianie i zerowanie bitu przy pomocy rejestru BSRR. 9