Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych
Instrukcja do przedmiotu
PODSTAWY MIKROELEKTRONIKI
(LABORATORIUM 6 i 7)
Projektowanie z wykorzystaniem układu rekonfigurowalnego Cypress PSoC CY8CKIT-050
autorzy: dr inż. Grzegorz Janczyk dr inż. Marek Niewiński
Warszawa, wiosna 2016
2/14 PMK Lab 6/7 wiosna 2016 v.2.0
CYC58xxLP
Port MiniUSB do
programowania i zasilania
układu PSOC
Moduł CapSense
Obszar prototypowy
oraz wybrane porty.
Potencjometr
Diody LED
Wyświetlacz LCD
Port szeregowy RS232
Port E
Port D
Port MiniUSB do do
komunikacji układu PSOC z
otoczeniem
CYC58xxLP
3/14 PMK Lab 6/7 wiosna 2016 v.2.0
1 Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z techniką programowania i elementami projektowania układów cyfrowych i analogowo-cyfrowych na przykładzie sprzętu i oprogramowania PSoC firmy Cypress Microsystems, z wykorzystaniem systemu uruchomieniowego CY8CKIT-050.
2 Wymagane wiadomości Student przed przystąpieniem do ćwiczenia powinien posiadać podstawową wiedzę z zakresu:
• teorii obwodów i pomiarów, • programowania w języku C, • próbkowania sygnałów, • dokument „AN77759 - Getting started with PSoC 5 LP” dostępny w Internecie.
3 Zasady zaliczenia ćwiczenia Przed przystąpieniem do ćwiczenia student powinien posiadać podstawową wiedzę dotyczącą układów PSoC oraz zagadnień poruszanych w ćwiczeniu. Wiedza ta zostanie zweryfikowana podczas kolokwium wstępnego (zalicza 50% czyli 1 punkt). Ćwiczenie jest realizowane w dwóch kolejnych terminach, podczas których student powinien uruchomić i przedstawić prowadzącemu działanie kolejnych układów opisanych w postaci punktowanych zadań zawartych w punkcie 9 niniejszej instrukcji. Maksymalna łączna ocena końcowa za obydwa ćwiczenia 6 i 7 wynosi 10 punktów, z czego na kolokwium wstępne przypadają 2 punkty, zaś pozostałe 8 punktów należy zgromadzić wykonując zestaw wybranych wariantów zadań opisanych w punkcie 9 niniejszej instrukcji. Ocena z ćwiczenia wystawiana jest na podstawie rozwiązanych zadań oraz indywidualnej rozmowy prowadzącego ćwiczenie wykonawcą lub każdym z wykonawców w przypadku, gdy ćwiczenie jest wykonywane w zespołach. Wymagany jest aktywny udział w pracy nad rozwiązaniem zadań przedstawianych do oceny oraz szczegółowa znajomość zastosowanych rozwiązań u wszystkich wykonawców pracujących w danym zespole.
4 Informacje podstawowe o układach programowalnych PSoC PSoC (Programmable System on Chip) to układy, które łączą w jednym układzie scalonym różne podzespoły takie jak mikrokontroler, rekonfigurowalne peryferia oraz bloki analogowe i cyfrowe – w wersji uniwersalnej (UDB) i/lub dedykowanej (fixed). W połączeniu z systemem uruchomieniowym udostępnionym studentom do pracy podczas laboratorium, graficznym edytorem, materiałami szkoleniowymi i dokumentacją dostarczaną przez producenta, tworzy to relatywnie proste w obsłudze narzędzie służące do projektowania zaawansowanych urządzeń i weryfikowania poprawności zastosowanych rozwiązań projektowych na bardzo wczesnym etapie opracowywania systemu. Architekturę układu PSoC w wersji 5 (CYC58xxLP ) przedstawia rys. 4.1.
Rys 4.1 Ogólna architektura układu PSoC CYC58xxLP
4/14 PMK Lab 6/7 wiosna 2016 v.2.0
5 Specyfikacja układu PSoC CYC58xxLP Parameters
DC to 80MHz operation
32bit ARM Cortex-M3 CPU, 32 interrupts
24channel direct memory access (DMA) controller
24bit 64tap digital filter processor (DFB) Memories
Up to 256KB program flash
Up to 32KB additional flash for error correcting code (ECC)
Up to 64KB of SRAM
2KB EEPROM Digital peripherals
Four 16bit timer, counter, and PWM (TCPWM)
I2C, 1Mbps bus speed
USB 2.0 certified full speed (FS) 12Mbps
Full CAN 2.0b, 16 Rx, 8 Tx buffers
20-24 universal digital blocks (UDB), programmable to create any number of functions:
8, 16, 24, 32 bit timers, counters, and PWMs
I2C, UART, SPI, I2S, and LIN 2.0 interfaces
Cyclic redundancy check (CRC)
Pseudo random sequence (PRS) generators
Quadrature decoders
Gate-level logic functions
Analog Subsystem
Configurable 8-20bit delta-sigma ADC
Up to two 12bit SAR ADCs
Four 8bit DACs
Four comparators
Four operational amplifiers (opamps)
Four programmable analog blocks, to create:
Programmable gain amplifier (PGA)
Transimpedance amplifier (TIA)
Mixer
Sample and hold (S/H) circuit
CapSense support, up to 62 sensors
1.024 V ±0.1% internal voltage reference Versatile I/O system
46-72 I/O pins; up to 62 general purpose I/Os (GPIOs)
Up to eight performance I/O (SIO) pins
25 mA current sink
Programmable input threshold and output high voltages
Can act as a general purpose comparator
Hot swap capability and overvoltage tolerance
Two USBIO pins that can be used as GPIOs
Route any digital or analog peripheral to any GPIO
LCD direct drive from any GPIO, up to 46×16 segments
CapSense support from any GPIO
1.2-5.5V interface voltages, up to four power domains
Programmable clocking
3-74MHz internal oscillator, 1% accuracy at 3MHz
4-25MHz external crystal oscillator
Internal PLL clock generation up to 80MHz
Low-power internal oscillator at 1, 33, 100 kHz
32.768kHz external watch crystal oscillator
12 clock dividers routable to any peripheral or I/O
Rys 5.1 Szczegółowa architektura układu PSoC CYC58xxLP
5/14 PMK Lab 6/7 wiosna 2016 v.2.0
6 Struktura systemu uruchomieniowego Układ PSoC CYC58xxLP oraz system uruchomieniowy CY8CKIT-050 zawierają rekonfigurowalne porty I/O dostępne dla użytkownika. Umożliwiają one operowanie na sygnałach zarówno analogowych jak i cyfrowych, które mogą być przez użytkownika przekierowane praktycznie na dowolny pin sygnałowy. W sposób zasadniczy wpływa to na możliwość uproszczenia routingu na poziomie topografii płytki drukowanej PCB. Dostępne są trzy typy wejść/wyjść sygnałowych z układu: • porty ogólnego przeznaczenia oznaczane w specyfikacji jako GPIO (general-
purpose I/O), • szybkie porty o wysokiej wydajności przeznaczone do transferu
szybkozmiennych sygnałów, określane jako SIO (performance I/O), • porty do obsługi komunikacji w standardach USB2.0, I2C, CAN - określane
jako USBIO. Porównanie parametrów GPIO i SIO zostało przedstawione w tabeli obok. Układ PSoC CYC58xxLP jest przeznaczony do pracy z sygnałami analogowymi i cyfrowymi. Z tego względu, dla zachowania wymaganej w elektronice analogowej precyzji parametrów sygnałów, wrażliwości na zakłócenia i potrzeby ograniczenia skutków przesłuchów, w systemie uruchomieniowym zaimplementowano trzy systemy masy sygnałowej: • VSSD - masa cyfrowa służy do podłączania modułów cyfrowych i komunikacji
cyfrowej, • VSSA - masa analogowa służąca do uziemiania bloków analogowych i układów odniesienia i precyzyjnych
układów przetworników DAC i DCA. • GND - uniwersalne podłączenie do potencjału masy. Zarówno masa VSSD jak i VSSA podłączone są do tego
potencjału przy wykorzystaniu topologii gwiazdy
Rys 6.1 Szczegółowa architektura systemu uruchomieniowego układu PSoC CY8CKIT-050
6/14 PMK Lab 6/7 wiosna 2016 v.2.0
Układ PSoC CYC58xxLP posiada dedykowany do komunikacji cyfrowej Port D, który może być wykorzystywany do podłączania modułów rozszerzeń (expansion board kits). W konfiguracji zastosowanej w systemie uruchomieniowym port ten jest wykorzystywany między innymi do podłączenia czujnika pojemnościowego CapSense. Port D nie jest przeznaczony do precyzyjnego prowadzenia sygnałów analogowych.
Rys 6.2 Schemat portu D systemu uruchomieniowego układu PSoC CY8CKIT-050 Port E jest dedykowanym portem analogowym umożliwiającym wyprowadzenie na zewnątrz sygnałów z wszystkich dostępnych w systemie modułów analogowych jak np. wzmacniacze operacyjne. Port ten zawiera wyprowadzenia wyprowadzeń masy analogowej GND_A (VSSA), które są elektrycznie podłączone poprzez masę główną GND. Wyprowadzenia te są przeznaczone do podłączania analogowych modułów rozszerzeń do systemu. Port zawiera również wyprowadzenie masy dedykowane do podłączania modułów cyfrowych. Port ten łączy wyprowadzenia fizycznych portów PCoS 5 o numerach P0, P3 i P4. Port zawiera również wyprowadzenia masy przeznaczonej do aplikacji cyfrowej: GND. Takie separowanie na poziomie masy umożliwia realizowanie precyzyjnych układów analogowych z wykorzystaniem układu PSoC5. System uruchomieniowy CY8CKIT-050 PSoC CYC58xxLP posiada również dedykowany układ komunikacyjny RS-232 (UART).
Rys 6.3 Schemat portu E systemu uruchomieniowego układu PSoC CY8CKIT-050 Obszar prototypowy systemu uruchomieniowego CY8CKIT-050 udostępnia użytkownikowi do wykorzystania w prototypowej aplikacji użytkowej:
dwa pełne porty (P0 i P3),
potencjometr R56
cztery wzmacniacze operacyjne (OPAMP),
cztery wejścia/wyjścia komunikacyjne (SIO) na pinach P12_4, P12_5, P12_6 oraz P12_7,
dwie linie ogólnego przeznaczenia (GPIO) na pinach P6_0 oraz P6_6,
7/14 PMK Lab 6/7 wiosna 2016 v.2.0
wyprowadzenia zasilania i masy wyprowadzone w bezpośrednim sąsiedztwie obszaru prototypowego.
cztery diody LED (dwie dostępne z pinów na płytce, dwie podłączone do linii portów P6_2 i P6_3)
dwa switche (SW2, SW3) podłączone do linii portów P15_5 oraz P6_1
moduł CapSense wyposażony w dwa dotykowe klawisze podłączone do linni portów P5_5 i P5_6 oraz slider podłączony do linii portów P5_0 – P5_4
Rys 6.4 Schemat modułu prototypowego systemu uruchomieniowego układu PSoC CY8CKIT-050
Rys 6.5 Schemat modułu CapSense systemu uruchomieniowego układu PSoC CY8CKIT-050
8/14 PMK Lab 6/7 wiosna 2016 v.2.0
a) b)
Rys 6.6 Schemat podłączenia systemu uruchomieniowego układu PSoC CY8CKIT-050 modułu dwuwierszowego wyświetlacza LCD (a) oraz portu szeregowego RS232 (b).
7 Przykładowa aplikacja Należy uruchomić środowisko programistyczne PSOC Creator w najnowszej wersji 3.3 SP1 (marzec 2016) a następnie utworzyć nowy projekt poleceniem menu File New Project.
Następnie należy wybrać wariant Empty schematic,
9/14 PMK Lab 6/7 wiosna 2016 v.2.0
określić nazwę projektu i jego lokalizację. Po utworzeniu projektu, należy przystąpić do wyboru komponentów systemu z których zamierzamy korzystać. W tym przypadku będą to następujące elementy wybrane z Cypress Component Catalog: Character LCD grupa Display, Wyświetlacz LCD PWM grupa Digital/Functions, Generator PWM Logic Low ‘0’ grupa Digital/Logic, Logiczna wartość ”0” do
podania na wejścia sterujące kill I reset generator PWM sygnału
Digital Output Pin grupa Ports and Pins, Port wyjściowy do
przyporządkowania fizycznego sposobu wyprowadzania sygnału.
Clock grupa System/Clock. Zegar taktujący generator PWM Następnie należy określić parametry pracy poszczególnych bloków i połączenia sygnałowe pomiędzy nimi. W tym celu dla kolejnych modułów parametry powinny wyglądać następująco lub podobnie jak poniżej, gdyż Studenci mogą (a nawet powinni) poeksperymentować z konfiguracją:
Okno konfiguracyjne modułu PWM.
Okno konfiguracyjne CharLCD
10/14 PMK Lab 6/7 wiosna 2016 v.2.0
Okno konfiguracji pinu – wyprowadzenia z portu SIO/GPIO
Okno konfiguracji zegara. Schemat całego Systemu powinien wyglądać następująco:
Niezbędne jest napisanie w języku C krótkiego programu obsługi konfigurowanego systemu. W tym celu należy przejść do modułu Workspace Explorer i otworzyć plik main.c, a następnie wstawić w nim następujące linie sterujące kodu w języku C: PWM_1_Start();
LCD_Char_1_Start();
LCD_Char_1_Position(0,0);
LCD_Char_1_PrintString("Hello PMK with PSOC!");
11/14 PMK Lab 6/7 wiosna 2016 v.2.0
Do zaliczenia ćwiczenia niezbędna jest znajomość znaczenia poszczególnych wykorzystywanych w programie funkcji, użytych parametrów wywołania itd.
Pomoc na temat dostępnych funkcji obsługi poszczególnych modułów, składni, postaci wywołania, argumentów można znaleźć naciskając klawisz Datasheet w oknie konfiguracji parametrów danego modułu. W przypadku wyświetlacza LCD okno konfiguracji dla elementu LCD_Char_1 jest następujące:
a przykładowe, wybrane funkcje obsługi wyświetlacza opisane w dostępnej dokumentacji to:
Należy pamiętać, że wywołanie dowolnej funkcji na rzecz konkretnej instancji modułu, np. LCD_Char_1, wymaga zmodyfikowania nazwy funkcji poprzez uwzględnienie numeru instancji tego modułu, np. LCD_Char_1_Start(). Do uruchomienia systemu niezbędne jest jeszcze skonfigurowanie elementów wejścia/wyjścia. Jest to dostępne po otwarciu pliku *cydwr należącego do bieżącego projektu. Poprawnego przypisania w tym przypadku wymagają porty wyświetlacza LCD_Char1:LCDPort[6:0] i Pin_1. Wyświetlacz LCD należy przypisać do fizycznego portu P2, podczas gdy w przypadku portu wyjściowego Pin_1 Studenci mają pewną swobodę wyboru fizycznego przypisania.
8 Kompilacja i uruchamianie Kompilacja projektu odbywa się z menu Build programu PSOC Creator, lub kombinacją klawiszy Ctrl+F6. Jeżeli kompilacja zakończyła się powodzeniem, programowe przeniesienie konfiguracji i oprogramowania do systemu uruchomieniowego CY8CKIT-050 fizycznie odbywa się za pośrednictwem przewodu MiniUSB włączonego do prawego portu (dostępne są dwa) umieszczonego na płytce ewaluacyjnej .
12/14 PMK Lab 6/7 wiosna 2016 v.2.0
Transfer i uruchomienie aplikacji odbywa się z menu Debug Program lub kombinacją klawiszy Shift+F5. Opisana wyżej konfiguracja systemu i aplikacja umożliwiają wyświetlenie napisu na wyświetlaczu i pojawienie się sygnału PWM na porcie P0_7, do którego można podłączyć umieszczoną na płycie głównej zestawu uruchomieniowego diodę LED. W zestawie znajdują się 4 diody świecące – przed przystąpieniem do realizacji zadań punktowanych należy zastanowić się w jaki sposób można uzyskać dostęp do pozostałych diod LED.
13/14 PMK Lab 6/7 wiosna 2016 v.2.0
9 Zadania do samodzielnego wykonania Zależnie od decyzji prowadzącego, zadania mogą być wykonywane przez studentów pojedynczo lub w zespołach dwuosobowych. Student wybiera zadania o łącznej maksymalnej punktacji 8pkt. 9.1 Zadanie 1 (1 pkt) Wyświetlić na ekranie tekst powitalny „Laboratorium Podstaw Mikroelektroniki IMiO-PW” Wskazówki praktyczne Brak. Przydatne funkcje
LCD_Position(); LCD_Char_Start(); LCD_PrintString(displayStr); sprintf();
9.2 Zadanie 2 (2 pkt) Odebrać dane pomiarowe z potencjometru VR wbudowanego w płytkę ewaluacyjną i wyświetlić je na wyświetlaczu LCD stosując potrójny standard prezentacji wyniku:
poprzez wartość numeryczną wyskalowaną w zakresie 0-3.3 [V] w pierwszym wierszu (0,5 pkt)
prezentując surową wartość odczytaną z przetwornika (HEX), w pierwszym wierszu (0,5 pkt)
graficznie (w drugim wierszu), wykorzystując pasek (tzw. „bar graph”) uzyskując (1 pkt) dokładność wskazania bar-graph na poziomie 1/16 zakresu pomiarowego.
Wskazówki praktyczne
W konfiguracji SAR należy ustawić 12 bitową rozdzielczość przetwornika, prędkość przetwarzania 100kS/s, z wewnętrznym zegarem, wewnętrznym źródłem odniesienia i zakresem przetwarzania Vssa ÷ Vdda. Należy pamiętać o konieczności włączenia na poziomie konfiguracji wyświetlacza LCD przetwarzania znaków na cyfry. W tym celu należy w oknie konfiguracji wyświetlacza zaznaczyć opcję „Include ASCII to Number Conversion Routines”.
Przydatne funkcje
CYGlobalIntEnable ADC_Start(); ADC_StartConvert(); ADC_IsEndConversion(ADC_WAIT_FOR_RESULT); ADC_GetResult16(); ADC_CountsTo_mVolts();
9.3 Zadanie 3 (2-3 pkt) Zrealizować sterowanie jasnością diody LED1 przy pomocy PWM kontrolowanego nastawami potencjometru VR i portu na zasadzie
Wersja standard: (2 pkt) dioda LED1 sterowana w zakresie 0-100%
Wersja dla ambitnych: (3 pkt) Wersja standard (w pełni sprawna) + dodatkowo: przeciwsobnie względem LED1 sterowanie jasnością LED2 w schemacie: LED1=100% jasności + LED2=0% jasności LED1=0% jasności + LED2=100% jasności
Wskazówki praktyczne
Można wygenerować dwa przebiegi o kontrolowanym wypełnieniu z jednego PWM w konfiguracji UDB z odpowiednio ustawionymi wartościami parametrów PWM Mode , CMP Value i CMP Type lub użyć dwóch modułów PWM. Kontrolę przerwań można/należy wyłączyć.
Przydatne funkcje
PWM_Start(); PWM_WritePeriod() PWM_WriteCompare()
14/14 PMK Lab 6/7 wiosna 2016 v.2.0
9.4 Zadanie 4 (2 pkt) Zrealizować dotykowy włącznik LED3 przy wykorzystaniu elektrody dotykowej
Wersja standard 1: P5_5 ON/OFF (2 pkt)
Wersja standard 2: P5_5 ON/P5_6 OFF (2 pkt) Wskazówki praktyczne
W konfiguracji modułu CapSense należy wybrać wewnętrzne taktowanie zegara. Nie jest wymagane uwzględnianie wpływu deszczu i włączanie do układu dodatkowej elektrody ekranującej. W przypadku błędnych odczytów lub wpływu zakłóceń należy poeksperymentować z filtrami (Raw data noise filter).
Przydatne funkcje
CapSense_Start(); CapSense_InitializeAllBaselines(); CapSense_UpdateEnabledBaselines(); CapSense_ScanEnabledWidgets(); CapSense_IsBusy() CapSense_CheckIsWidgetActive(); CapSense_GetCentroidPos();
9.5 Zadanie 5 (3-4 pkt) Zrealizować sterowanie jasnością diody LED3 przy pomocy PWM kontrolowanego odczytami z elektrody dotykowej CapSense
Wersja standard: (3 pkt) „płynne” sterowanie jasnością diody LED3 w zakresie 0-100% (P5_0-P5_4)
Wersja dla ambitnych: (4 pkt) Wersja standard (w pełni sprawna) + dodatkowo LED3 ON/OFF przy pomocy elektrody dotykowej CapSense (P5_5) lub (P5_5/P5_6)
Wskazówki praktyczne Można wygenerować dwa przebiegi o kontrolowanym wypełnieniu przebiegu generowanego z PWM w konfiguracji UDB z odpowiednio ustawionymi wartościami parametrów PWM Mode , CMP Value i CMP Type. Kontrolę przerwań można/należy wyłączyć.
Przydatne funkcje
CapSense_GetCentroidPos();
9.6 Zadanie 6 (3-6 pkt) Zrealizować sterowanie jasnością diody LED3 przy pomocy PWM kontrolowanego odczytami termistora
Wersja standard: (3p) wyświetlić temperaturę na wyświetlaczu LCD stosując podwójny standard prezentacji wyniku: - poprzez wartość numeryczną w pierwszym wierszu, oraz - graficznie (w drugim wierszu) wykorzystując pasek (tzw. „bar graph”)
Wersja dla ambitnych: (4p) Wersja standard (w pełni sprawna) + dodatkowo po przekroczeniu ustalonego progu temperatury należy zaświecić diodę LED1
Wersja zaawansowana 1: (5p) Wersja dla ambitnych (w pełni sprawna) + dodatkowo ustalanie progu przy pomocy CapSense: P5_5/P5_6 (podnoszenie/obniżanie progu):
Wersja zaawansowana 2: (6p) Wersja dla zaawansowana 1 (w pełni sprawna) + dodatkowo zależnie od temperatury sterowanie jasnością diody LED2 w zakresie 0-100%
Top Related