wersja mobilna

Cortexino Duo - płyta ewaluacyjna z LPC1343

Numer: Styczeń/2013

Płytka łączy moc mikrokontrolera 32-bitowego z elastycznością zastosowań Arduino. Przyda się wszędzie tam, gdzie moc 8-bitowego rdzenia AVR jest niewystarczająca. Mikrokontroler zamontowany na płytce ma zaprogramowany bootloader oraz sterowniki USB HID i MSD.

Pobierz PDFMateriały dodatkowe

Schemat płytki pokazano na rysunku 1. Zasilanie płytki może być pobierane z portu USB, wtedy prąd nie powinien przekraczać 100 mA, a napięcie VCC będzie miało wartość ok. 4,5 V. Jeżeli przewidujemy większy pobór prądu np. przez peryferia dołączone do płytki, to należy zasilić układ z zewnętrznego zasilacza 7...12 V DC. Wtedy napięcie VCC jest dostarczane przez stabilizator US1 i wynosi 5 V. Stabilizator można obciążyć prądem do 0,5 A, co jest wystarczające w większości wypadków.

Rysunek 1. Schemat ideowy płytki CortexinoDuo

Mikrokontroler jest zasilany napięciem 2,0; 2,5 lub 3,3 V wybieranym za pomocą zworki JP1. Diody LED3 i LED4 sygnalizują obecność napięć zasilających. Układ US3 to konwerter USB/UART, który pełni dwie funkcje: pozwala na programowanie pamięci mikrokontrolera w trybie ISP oraz na transmisję danych do komputera PC za pośrednictwem interfejsu szeregowego, co może być wykorzystane jako prosty debugger. Złącze JP2, po założeniu dwóch jumperów, pozwala na dołączenie sygnałów RESET i ISP ENABLE do wyprowadzeń układu FT232, a to zapewnia pełną automatyzację procesu programowania. Pracę interfejsu USB sygnalizuje dioda świecąca LED5. Przycisk S1 służy do zerowania mikrokontrolera, Q1 jest źródłem sygnału taktującego, diody LED1 i LED2 pełnią rolę sygnalizacyjną, mogą być wykorzystane w dowolny sposób. Porty mikrokontrolera doprowadzono do złącz IO2, IO3 i IO4.

Złącze CON3 umożliwia dołączenie zewnętrznego programatora/debuggera z interfejsem SWD. Złącze JP3 służy do wyboru urządzenia USB: konwerter FT232 lub mikrokontroler. Rozmieszczenie złącz jest kompatybilne z Arduino Duemilanove Board, co pozwala na zastosowanie modułów rozszerzających (shields) dla Arduino. Doprowadzenia PORT0_4 i PORT0_5 są także szyną I²C i pracują jako wyjścia open drain, więc zostały wyposażone w zewnętrzne rezystory podciągające.

Układ LPC1343 ma większość peryferiów charakterystycznych dla "małych" mikrokontrolerów: timery, przetwornik A/C, interfejsy szeregowe, kontroler przerwań itd. Wyróżniającym komponentem jest interfejs USB. Na uwagę "on-chip drivers", to jest oprogramowanie zapisane w pamięci ROM na etapie produkcji. Podobnym elementem tego typu są bootloadery zwykle służące do zapisywania lub odczyta pamięci programu. LPC1343 oprócz bootloadera ma w pamięci grupę funkcji, które tworzą rodzaj interfejsu programowania aplikacji – API i pozwalają realizować złożone funkcje interfejsu USB – emulować urządzenie USB typu HID lub MSD.

Rysunek 2. Porównanie rozmiaru kodu wynikowego.

Architektura USB składa się z urządzenia nadrzędnego hosta i jednego lub wielu urządzeń device. Każde urządzenie komunikuje się z kontrolerem za pośrednictwem kanałów logicznych – pipes, których może być do 32. Dostęp do kanałów komunikacyjnych jest możliwy dzięki buforom endpoints, ponieważ są one zakończeniami tych kanałów. Rodzaj urządzenia określa device class. Może to być np.: HID, MSD itp. Szczegółowe informacje o urządzeniu, m.in.: nazwa, numery identyfikacyjne VID i PID, zawarte są w bloku device descriptor. Proces wykrywania i rozpoznawania jest nazywany enumeracją. W jego trakcie urządzenie otrzymuje adres, odczytywane są informacje z bloku deskryptora oraz przydzielane sterowniki.

Interfejs API w pamięci mikrokontrolera LPC1343 umożliwia: uruchomienie części sprzętowej interfejsu, nawiązanie połączenia z kontrolerem oraz otwarcie 2 kanałów komunikacyjnych (wejściowego i wyjściowego). Jest on dostępny jako zespół 4 funkcji, które muszą być wywołane w odpowiedniej kolejności i z odpowiednimi parametrami.

W uproszczeniu, na przykładzie konfigurowania urządzenia HID w trybie device, przebiega to w sposób następujący:
1. Uruchomienie funkcji inicjującej sprzęt:
(*rom)->pUSBD->init_clk_pins();
2. Ustawienie parametrów i zainicjowanie sterownika:
HidDevInfo.idVendor = USB_VENDOR_ ID;
HidDevInfo.idProduct = USB_PROD_ ID;
HidDevInfo.bcdDevice = USB_DEVICE;
HidDevInfo.StrDescPtr = (uint32_t)&USB_StringDescriptor[0];
HidDevInfo.InReportCount = 1;
HidDevInfo.OutReportCount = 1;
HidDevInfo.SampleInterval = 0x20;
HidDevInfo.InReport = GetInReport;
HidDevInfo.OutReport = SetOutReport;
DeviceInfo.DevType = USB_DEVICE_CLASS_HUMAN_INTERFACE;
DeviceInfo.DevDetailPtr = (uint32_t)&HidDevInfo;
(*rom)->pUSBD->init(&DeviceInfo);
3. Ustawienie funkcji dla przerwania oraz dla odbioru i wysyłania danych:
USB_IRQHandler(void) {(*rom)->pUSBD->isr();}
void GetInReport(uint8_t src[],uint32_t length)
{src[0] = LPC_GPIO0->DATA; //Switch state}
void SetOutReport(uint8_t dst[],uint32_t length)
{LPC_GPIO2->DATA = dst[0]; //Set LED state}
4. Otwarcie połączenia
(*rom)->pUSBD->connect(TRUE);
/* USB Connect

API w pamięci mikrokontrolera umożliwia łatwe tworzenie aplikacji, co przekłada się na oszczędność czasu i zmniejszenie wielkości programu. Na rysunku 2 pokazano ilustrację z dokumentacji firmy NXP z porównaniem wielkości kodu wynikowego w kB typowego programu i wykonanego z użyciem API.

Schemat montażowy CortexinoDuo pokazano na rysunku 3. Jego montaż jest typowy, chociaż wymaga wprawy i uwagi, ponieważ płytka składa się głównie z elementów SMD.

Rysunek 3. Schemat montażowy płytki CortexinoDuo

Wykaz elementów

Rezystory: (SMD 0805)
R2, R4, R5, R9, R12...R16: 1 kΩ
R1, R3, R6: 10 kΩ
R7: 330 Ω
R8: 33 Ω
R10: 220 Ω
R11: 150 Ω
R18, R19: 4,7 kΩ
R21, R22: 33 Ω
R20: 1,5 kΩ

Kondensatory: (SMD 0805)
C1, C5, C10: 100 μF / 16 V (SMD "C")
C2, C4…C6, C9, C11…C13: 100 nF
C7, C8: 18 pF

Półprzewodniki:
D1: BAS85
D2: 1N4007 (SMD)
D3, D4: BAR43
LED1…LED5: LED (SMD)
US1: 78M05
US2: LM1117-1.8
US3: FT232R
US4: LPC1343 (HQFN33)

Inne:
L1, L2: 1...10 mH (dławik SMD)
S1: przycisk kątowy
Q1: kwarc 12 MHz
JP1: goldpin 1×3+zworka
JP2: goldpin 2×2+zworki
JP3: goldpin 2×4+zworki
IO1, IO3: gniazdo goldpin 1×6
IO2, IO4: gniazdo goldpin 1×8
CON1: gniazdo kątowe DC2.1/5.5
CON2: gniazdo kątowe USB B
CON3: goldpin 2×5

Dodatkowe materiały na CD/FTP:

ftp://ep.com.pl, user: 13621, pass: 175brjf7

DS

Pozostałe artykuły

Moduł dla Internetu Rzeczy z ESP-WROOM32

Numer: Marzec/2018

Internet Rzeczy stał się rzeczywistością, więc nie ma na co czekać i warto wprowadzić swoje aplikacje w nową rzeczywistość, tym bardziej że do dystrybucji wprowadzono kolejny moduł firmy Espressif z układem ESP32 o możliwościach znacznie większych od ESP8266.

Płytka wejść analogowych dla Raspberry Pi Zero

Numer: Marzec/2018

Raspberry Pi Zero w przeciwieństwie do większości zestawów uruchomieniowych nie ma wejść analogowych. Przedstawiony moduł umożliwia wyposażenie niewielkim kosztem komputerka Pi Zero w 8 wejść analogowych o rozdzielczości 10 bitów.

Uniwersalny driver silnika małej mocy

Numer: Marzec/2018

Niewielki moduł drivera silnika o małej mocy, przydatny w robotyce amatorskiej. Moduł jest nieskomplikowany w budowie dzięki zastosowaniu układu scalonego A3906.

Tester diod LED małej mocy

Numer: Luty/2018

Zdarzają się sytuacje, w których musimy sprawdzić diody LED. Czasem musimy zlokalizować katodę i anodę, a niekiedy określić kolor świecenia diody. Możemy zastosować miernik uniwersalny, ale zdarzają się sytuacje, że napięcie testowania miernika jest zbyt małe, aby wprowadzić diodę w stan przewodzenia. Wtedy z pomocą może przyjść opisywane urządzenie.

Uniwersalny, stereofoniczny wzmacniacz mocy 2×10 W/8 Ohm z regulacją barwy dźwięku

Numer: Luty/2018

Układ uniwersalnego wzmacniacza stereo z regulacja barwy dźwięku, mogącego znaleźć zastosowanie na przykład, w PC-audio, głośnikach przenośnych, nagłośnieniu samochodu itp.

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Czerwiec 2019

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym