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.