Systemy rejestracji danych wykorzystujące czujniki i pamięci USB

| Technika

Obecnie na rynku dostępnych jest wiele odmian urządzeń do rejestracji danych przystosowanych do współpracy z komputerami osobistymi. Coraz częściej wykorzystują one USB w miejsce stosowanych wcześniej interfejsów, takich jak RS-232 czy inne. Implementacja USB w systemach wbudowanych była jednak jak dotąd kłopotliwa ze względu na konieczność stosowania kontrolera USB host, użycia systemu operacyjnego czasu rzeczywistego (RTOS) i sterowników programowych. Obecnie istnieją produkty ułatwiające wykonanie takiej aplikacji.

Systemy rejestracji danych wykorzystujące czujniki i pamięci USB

Koszt wbudowania portu USB często zniechęcał projektantów systemów wbudowanych, zwłaszcza tych opartych na mikroprocesorach 8- i 16-bitowych, do wykorzystania w swoich projektach omawianych interfejsów. Niemniej jednak kombinacja tego typu mikrokontrolera w połączeniu z inteligentnym kontrolerem USB host najnowszej generacji pozwala nie tylko na realizację urządzeń do rejestracji danych współpracujących z komputerem osobistym, ale również na przechowywanie danych w tanich pamięciach Flash o dużej pojemności.

W artykule zilustrowany został przykład realizacji systemów rejestracji i akwizycji danych bazujących na połączeniu inteligentnego kontrolera USB host z mikrokontrolerem popularnej rodziny PIC. Jako potencjalnym kandydatom do roli inteligentnego kontrolera USB host przyjrzymy się układom rodziny Vinculum VNC1L. Pomimo tego, że ich wykorzystanie wymaga od programisty posiadania na ich temat pewnej wiedzy pozwalającej na poprawne pobranie danych pomiarowych, oprogramowanie firmware kontrolerów VNC1L umożliwia automatyczną konfigurację połączenia z większością układów USB.

PRZYKŁAD APLIKACJI Z REJESTRACJĄ DANYCH

Rys.1. Diagram rejestratora danych z portem USB

Pierwsza z przykładowych aplikacji ilustruje układ, gdzie kontroler USB host (VNC1L) współpracujący z MCU obsługuje port do transmisji danych z czujnika USB oraz drugi port do transmisji danych do pamięci Flash. Komunikacja pomiędzy kontrolerem USB i MCU odbywa się za pośrednictwem interfejsu UART, SPI lub, w przypadku innych zastosowań, również FIFO. Schemat blokowy tej aplikacji przedstawiono na rys. 1. W charakterze jednostki sterującej MCU wykorzystano układ PIC18F1320 zamontowany na płytce demonstracyjnej Microchip Picdem 4.

Transmisja danych pomiędzy MCU i kontrolerem USB host odbywa się z wykorzystaniem 4-żyłowego interfejsu zawierającego linie danych Tx/Rx i linie do sterowania transmisją RTS/CTS. Alternatywnie może tu być wykorzystany 4-żyłowy port SPI. Kod źródłowy utworzony został dla obu wariantów w języku C. W powyższej aplikacji dane są pobierane z modułu 2-osiowego czujnika nachylenia DLP-TILT i zapisywane w formacie CSV w pamięci Flash Drive. Moduł DLP-TILT pobiera aktualny wynik pomiaru nachylenia z czujnika w odpowiedzi na przychodzący z szyny USB pakiet OUT zawierający znak "z".

Transmisja wyniku pomiaru do kontrolera odbywa się w odpowiedzi na wysłanie pakietu odpytującego IN. Dzięki monitorowi VNC1L pakiet OUT może być wysłany wraz z komendą DSD (Device Send Data) i następującą po niej liczbą bajtów. Pakiet IN może być odebrany wraz z komendą DRD (Sevice Read Sata). VNC1L zwraca całkowitą liczbę bajtów wraz z danymi odczytanymi z czujnika. Użytkownik nie musi zajmować się formowaniem pakietów USB ani zagadnieniami związanymi z obsługą protokołu.

Typowo urządzenia USB wykazują opóźnienia na poziomie milisekund wynikające z wymogu transmitowania danych w pakietach, aczkolwiek efekt ten można zminimalizować, odpowiednio buforując dane z czujnika. Oczywiście w powyższej aplikacji nie musi występować czujnik USB, transmisja danych może się też odbywać z samą pamięcią Flash. Taka sytuacja ma miejsce wówczas, gdy sam MCU próbkuje wejścia analogowe lub odczytuje dane z zewnętrznego źródła. Transmisja danych jest wtedy szybsza z uwagi na brak konieczności odpytywania urządzeń USB.

PRZYKŁAD APLIKACJI Z AKWIZYCJĄ DANYCH

Rys.2. Diagram układu akwizycji danych

Na rys. 2 przedstawiono aplikację z wejściami analogowymi. W tym przypadku rolę MCU pełni taki sam układ PIC18F1320 zamontowany na płytce demonstracyjnej Picdem 4. Do jego wejść analogowych podłączono czujnik przyspieszenia STMicroelectronics Steval-MKI010V1. Wejścia analogowe są próbkowane z określoną częstotliwością, a wyniki pomiarów są dodawane do bufora FIFO i przetwarzane programowo przed zapisem w pamięci Flash przez kontroler VNC1L. Monitor VNC1L generuje komendy sterujące zapisem i odczytem danych do/z pamięci Flash oraz dodatkowo pozwalające na zarządzanie systemem plików: tworzeniem, kasowaniem i zmianą nazwy plików i katalogów.

Są one podobne do poleceń systemu DOS (np. DIR, CD itp.), a w odpowiedzi dostaje się również listę elementów przypominającą tę z systemu DOS. Komendy do zarządzania systemem plików są proste w obsłudze, podobnie jak komendy służące do komunikacji z urządzeniami USB. Zapis danych do pliku wymaga wysłania sekwencji poleceń OPW (Open Form Write) z następującą po niej nazwą pliku, WRF (Write To File) z następującą po niej liczbą bajtów i CLF (Close File) również z następującą po niej nazwą pliku.

Ponieważ standardowy rozmiar sektora dysku Flash wynosi 512 bajtów, najlepsze osiągi uzyskuje się, poprzedzając zapis utworzeniem 512-bajtowych ciągów danych w buforze. Przy wykorzystywaniu mikrokontrolera możemy również korzystać ze skróconych komend (zapis szesnastkowy). KONTROLERY VINCULUM Dzięki dużej pojemności i niskiej cenie napędy Flash stanowią atrakcyjne rozwiązanie w systemach wbudowanych wymagających przechowywania wszelkiego typu danych. Dotyczy to zwłaszcza aplikacji, gdzie stosowanie wewnętrznej pamięci Flash lub pamięci z podtrzymaniem bateryjnym jest niewygodne lub po prostu zbyt drogie.

Przykładem mogą tu być sytuacje, gdy wymagana jest stała obecność czujnika w miejscu pracy i cykliczne odczytywanie pamięci, gdy nie istnieje możliwość ciągłego dostarczania napięcia zasilającego lub gdy występuje konieczność przechowywania dużych ilości danych przez długi okres przy minimalnym poborze mocy. Z kontrolerami VNC1L wykorzystywać można prawie wszystkie pamięci Flash Drive o rozmiarze sektora równym 512 bajtów i systemie plików FAT. Kontrolery te działać mogą w trybie oszczędnościowym (sleep) i powracać do stanu aktywnego po odebraniu sygnału uaktywniającego od MCU.

Dzięki odciążeniu jednostki MCU od zadań związanych z obsługą protokołu USB i zarządzeniem systemem plików w systemach rejestracji oraz akwizycji danych stosowane mogą być mikroprocesory 8- i 16-bitowe. Kontroler może być zasilany napięciem 3,3V z tolerancją 5V dla linii portów. Należy dodać, że dostępne są również moduły urządzeń z rdzeniem VNC1L – np. VDRIVE 2, które mają już obudowę, gniazdo USB oraz dwukolorową diodę sygnalizującą stan pracy.

Soyter

Klaudyn, ul. Ekologiczna 14/16

05-080 Izabelin

tel. 022 752 82 55

www.soyter.pl