1.2 Przetwornik cyfrowo–analogowy DAC

Transkrypt

1.2 Przetwornik cyfrowo–analogowy DAC
Białostocka
Politechnika
WYDZIAŁ ELEKTRYCZNY
KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ
Instrukcja do zajęć laboratoryjnych
Temat ćwiczenia: Układy DMA, przetwornik cyfrowo-analogowy,
transmisja szeregowa.
Numer ćwiczenia: 4
Laboratorium z przedmiotu:
Systemy mikroprocesorowe w zastosowaniach przemysłowych i sieciowych
KOD: TS1C6
Opracowali:
dr inż. Maciej Szumski
dr inż. Krzysztof Konopko
2017
1
Wprowadzenie
1.1 Bezpośredni dostęp do pamięci
Mechanizm bezpośredniego dostępu do pamięci DMA (Direct Memory Access) jest
użyteczną techniką przesyłania danych z pominięciem procesora, pomiędzy pamięcią i
układami peryferyjnymi oraz z jednego obszaru pamięci do innego. Przykładami stosowania
DMA są:
 zwolnienie procesor z konieczności oczekiwania na gotowość układu peryferyjnego w
przypadku transmisji z niewielką prędkością bodową (przykładem jest transmisja
szeregowa, która dzięki DMA może być realizowana bez konieczności udziału
procesora),
 realizacja bardzo szybkich transmisji danych, gdy DMA zapewnia sprawny odbiór i
zapisanie w pamięci bloku danych, także w czasie nadawania DMA jest w stanie
dostarczyć szybko strumień danych z pamięci do nadajnika,
 przetwarzanie sygnałów analogowych, gdy DMA współpracuje z przetwornikami
transmitując próbki bezpośrednio do i z pamięci bez angażowania procesora.
W mikrokontrolerach STM32 dostępne są układy DMA1 i DMA2. Pierwszy z nich jest
7-kanałowy i występuje we wszystkich mikrokontrolerach STM32. Drugi jest 5-kanałowy
i jest dostępny tylko w układach high-density, XL-density oraz connectivity. Schemat
przyłączenia układów DMA w dostępnym na ćwiczeniach laboratoryjnych zestawie [2] został
pokazany na rysunku 1.1.
Rys. 1.1. Blokowy schemat układów DMA występujący w kontrolerach serii connectivity[4]
Bus Matrix jest układem arbitrażu magistral wewnętrznych mikrokontrolera. Dostęp
poszczególnych układów peryferyjnych i rdzenia do układu Bus Matrix jest przydzielany
według algorytmu karuzelowego (round robin). Polega to na kolejnościowym otrzymywaniu
od układu arbitrażowego dostępu do magistrali. Dzięki temu nie ma niebezpieczeństwa
zablokowania magistrali przez któryś z układów. Kiedy przychodzi kolej na układ DMA,
otrzymuje on dostęp, ale tylko na jeden cykl. Jest to transfer z podkradaniem (bus stealing).
Transfer dużego bloku danych, przy wykorzystaniu mechanizmu DMA nie zablokuje więc
procesora – co najwyżej nieco spowolni jego pracę.
1.2 Przetwornik cyfrowo–analogowy DAC
Przetwornik cyfrowo–analogowy (Digital-to-Analog Converter) DAC zamienia sygnał
cyfrowy (sygnał dyskretny w czasie przyjmujący dyskretne wartości) w sygnał analogowy.
Schemat blokowy układu DAC występującego w zestawie dostępnym na zajęciach pokazany
jest na rysunku 1.2.
Rys. 1.2. Schemat przetwornika DAC
DAC może być skonfigurowany jako 8–bitowy, albo 12–bitowy. Może pracować niezależnie
lub synchronicznie. Układ DAC zawiera rejestry danych (Data Holding Registers) DHR,
logikę sterująca (Control Logic), rejestr wyjsciowy (Data Output Register ) DOR i
przetwornik DAC. Zasilany jest z napięcia części analogowej VDDA i masy analogowej V SSA.
Wymaga ponadto napięcia odniesienia VREF. W procesorach Cortex-M stosuje się jedno,
wspólne napięcie odniesienia VREF dla wszystkich układów ADC i DAC. Wewnętrzne źródło
ma wartość VREF = 3.3V. Zatem zakres wyjścia przetwornika DAC, to od 0V do VREF. Logika
sterująca może dodać do sygnału wyjściowego szum biały lub przebieg piłokształtny.
1.3 Transmisja szeregowa
W większości systemów cyfrowych konieczne jest zapewnienie wymiany danych pomiędzy
mikrokontrolerem, a układami peryferyjnymi. Transmisja może dotyczyć układów
zamontowanych lokalnie bądź urządzeń zewnętrznych. Mikrokontrolery STM32 umożliwiają
obsługę szeregu interfejsów komunikacyjnych. Przykładowo zestawy dostępne w trakcie
ćwiczeń laboratoryjnych wyposażone są w dwa kanały SPI, kanał I2C, dwa kanały CAN,
kanał USB-OTG i pięć kanałów USART. USART (Universal Synchronous/Asynchronous
Receiver-Transmitter) to możliwość realizacji transmisji szeregowej w trybie synchronicznym
i asynchronicznym. Tryb asynchroniczny nie wymaga przekazywania do odbiornika sygnału
taktującego, a nadajnik i odbiornik musza pracować z taką samą prędkością bodową. Kanał
UART przesyła dane w ramkach zgodnie z schematem pokazanym na rysunku 1.2.
Rys. 1.2. Schemat przetwornika DAC
Poziom wysoki linii oznacza stan spoczynku. Ramkę rozpoczyna zbocze opadające – bit
startu zawsze ma poziom niski, czyli przeciwny do stanu spoczynku linii. Pierwsze opadające
zbocze służy do synchronizacji całej ramki w odbiorniku. Po czasie połowy długości trwania
bitu, próbkowany jest stan linii. W rzeczywistości rejestrowane są trzy próbki (bit dzielony
jest na 16 równych odcinków) – środkowa i dwie boczne. O wartości bitu decydują dwie
jednakowe próbki. Jeżeli bit startu nie jest zerem, odbiornik uznaje, że było to zakłócenie i
wraca do oczekiwania na zbocze opadające. Jeżeli bit startu jest zerem, odczytywanych jest
osiem kolejnych bitów informacji, bit parzystości (jeśli jest) i bit stopu, którego stan jest
równy stanowi spoczynku linii. Brak bitu stopu lub błędny bit parzystości oznacza wadliwą
transmisje, i odczytany bajt jest odrzucany. Bity danych przesyłane są od najmłodszego do
najstarszego. Ilość bitów danych jest programowalna: może to być 7 bitów, lub pełny bajt,
czyli 8 bitów. Po bitach danych, a przed bitem stopu, jest miejsce na bit parzystości. Możliwe
opcje to:
•
•
•
EVEN – bity danych wraz z bitem parzystości zawierają parzysta liczbę jedynek,
ODD – bity danych wraz z bitem parzystości zawierają nieparzysta liczbę jedynek,
brak bitu parzystości.
Ramkę kończy znacznik stopu, możliwe długości stopu to 0.5, 1, 1.5 albo 2 bity. Najbardziej
popularne standardy elektryczne transmisji USART to RS232, RS485 i RS422. W tabeli 1.1
podano maksymalny dystans, maksymalna prędkość i maksymalną liczbę układów, które
można połączyć w jednej pętli.
Tab. 1.1. Standardy elektryczne transmisji USART
standard
sygnał elektryczny
RS-232
sygnał napięciowy:***** 15 m
1 to (+5, +15V ),*******
dystans
prędkość
liczba układów
115’200 bps
1 nadajnik, 1 odbiornik
0 to (−5,−15V )
RS-422
różnicowy: −6V ↔ +6V
1200 m
10 Mbps
1 nadajnik, 10 odbiorników
RS-485
różnicowy: −7V ↔+12V
1200 m
10 Mbps
32 nadajniki, 32 odbiorniki
2
Cel i zakres ćwiczenia
Celem ćwiczenia jest ugruntowanie wiedzy studentów oraz nabycie przez nich
umiejętności z zakresu podstaw programowania mikroprocesorów. W ramach zajęć studenci
nabywają umiejętności z zakresu obsługi mechanizmu bezpośredniego dostępu do pamięci
DMA, realizacji przetwarzania cyfrowo-analogowego oraz konfiguracji i nawiązywania
komunikacji z wykorzystaniem interfejsów szeregowych.
Studenci zdobywają umiejętność tworzenia, uruchamiania i testowania oprogramowania
mikrokontrolerów
na
przykładzie
zestawu
ZL29ARM
z
mikrokontrolerem
STM32F107VCT6. Realizowanymi zadaniami w bieżącym ćwiczeniu jest obsługa transmisji
danych z zastosowaniem układów DMA, generacja sygnałów analogowych z zastosowaniem
przetworników DAC oraz konfiguracja i uruchomienie transmisji pomiędzy
mikrokontrolerem, a terminalem komputerowym z zastosowaniem standardu RS-232.
3
Zagadnienia do opracowania przed
przystąpieniem do zajęć
Przed przystąpieniem do zajęć należy opracować następujące zagadnienia:
 połączenie układów peryferyjnych do poszczególnych kanałów układu DMA [1
(rozdz. 15.2)],
 konfiguracja dostępnych w zestawie ZL29ARM [2, 3] wyprowadzeń sygnałów z
przetwornika analogowo-cyfrowego,
 konfiguracja taktowania kanałów USART [1 (rozdz. 18.1)]
 obsługa w języku C mechanizmu bezpośredniego dostępu do pamięci DMA [1 (rozdz.
15.3)],
 obsługa w języku C procedury generacji (metodą tablicową) sygnałów analogowych z
zastosowaniem przetwornika ADC [1 (rozdz. 17.4)],
 obsługa w języku C procedur stosowanych do realizacji szeregowej transmisji
sygnałów [1 (rozdz. 18.3).
4
Przebieg ćwiczenia
Ćwiczenia laboratoryjne prowadzone są w oparciu o zestaw ZL29ARM [2] umożliwiający
realizację aplikacji dla mikrokontrolera STM32F107 (rodzina Connectivity Line).
W trakcie ćwiczeń należy zrealizować następujące zadania:
a) napisać procedurę umożliwiającą kopiowanie bloku danych przy zastosowaniu
kanałów DMA (parametry kopiowanego bloku podaje prowadzący),
b) napisać procedurę generującą sygnał metodą tablicową (parametry sygnału podaje
prowadzący).
c) napisać procedurę umożliwiającą wymianę danych pomiędzy mikrokontrolerem, a
komputerem PC z zastosowaniem interfejsu RS232.
Dodatkowe zadania przydzielone grupie przez prowadzącego:
d) wykonać zestaw zadań przydzielony grupie przez prowadzącego. Realizacja zadań
wymaga znajomości obsługi przerwań, układów licznikowo-czasowych, portów
GPIO, sposobu obsługi wyświetlacza LCD, obsługi kanałów DMA, przetworników
ADC i DCA oraz sposobu transmisji danych z zastosowaniem interfejsu RS232.
Każde zrealizowane zadanie należy przedstawić prowadzącemu.
5
Opracowanie sprawozdania
Przygotowane sprawozdanie z zajęć powinno zawierać opis przebiegu ćwiczenia
laboratoryjnego w tym kody źródłowe procedur wraz z opisem i analizą działania.
Sprawozdanie powinno też zawierać wnioski dotyczące realizacji poszczególnych punktów
ćwiczenia laboratoryjnego.
6
Wymagania BHP
W trakcie realizacji programu ćwiczenia należy przestrzegać zasad omówionych we
wstępie do ćwiczeń, zawartych w: „Regulaminie porządkowym w laboratorium” oraz
w „Instrukcji obsługi urządzeń elektronicznych znajdujących się w laboratorium z
uwzględnieniem przepisów BHP”. Regulamin i instrukcja są dostępne w
pomieszczeniu laboratoryjnym w widocznym miejscu.
7
1.
2.
3.
4.
5.
6.
7.
8.
9.
Literatura
Maciej Szumski - „Systemy Mikroprocesorowe w Sterowaniu. Część I.
ARM Cortex-M3”, PLUM, 2016
Dokumentacja zestawu ZL29ARM: http://kamami.pl/dl/zl29arm.pdf
STM32F107VC Datasheet: http://www.st.com/resource/en/datasheet/stm32f107vc.pdf,
2015
RM0008: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and
STM32F107xx advanced ARM®-based 32-bit MCUs:
http://www.st.com/resource/en/reference_manual/cd00171190.pdf, 2015
PM0075: STM32F10xxx Flash memory microcontrollers:
http://www.st.com/resource/en/reference_manual/cd00171190.pdf, 2012
PM0056: STM32F10xxx/20xxx/21xxx/L1xxxx Cortex-M3 programming manual:
http://www.st.com/resource/en/programming_manual/cd00228163.pdf, 2013
STM32F105xx and STM32F107xx revision Z connectivity line device limitations:
http://www.st.com/resource/en/errata_sheet/cd00238166.pdf, 2013
Krzysztof Paprocki, „Mikrokontrolery STM32 w praktyce”, BTC, 2011.
Marek Galewski, „STM 32 : aplikacje i ćwiczenia w języku C”, BTC, 2011.