LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

Interfejs USB-DCD w mikrokontrolerach Kinetis

Konfiguracja modułu USBDCD

Prawidłowe funkcjonowanie modułu DCD wymaga konfiguracji innych modułów:

Generator sygnału zegarowego

Moduł DCD potrzebuje sygnału taktującego o częstotliwości 48 MHz. jest to ten sam przebieg, który taktuje interfejs USB, ale DCD posiada swój własny bit bramkujący w rejestrze SIM_CGC6. W celu włączenia źródła zegara dla modułu DCD, należy się upewnić, że bit USB-DCD jest ustawiony.

Linie we/wy

Moduł DCD musi wiedzieć, kiedy zewnętrzne urządzenie jest dołączone do USB. Może to zostać zrealizowane poprzez wykorzystanie linii we/wy poprzez pomiar napięcia na linii VBUS złącza USB. Gdy stan linii VBUS przejdzie na wysoki, oprogramowanie musi odwołać się do programu obsługi sekwencji startowej modułu DCD.

Interfejs USB:

Sekwencja wykrywania hosta kończy się po włączeniu rezystora pull-up w sygnale D+. Pull-up ten może być włączony jedynie przez interfejs USB. Musi on zostać wcześniej zainicjalizowany do włączenia pull-upu (jeśli jest to potrzebne) oraz rozpocząć wykrywanie, jeśli jest to wymagane (tylko wtedy, gdy detekcja skutkuje wykryciem typu hosta standardowego lub hosta ładowania).

Stabilizator napięcia:

Linia zasilania transceivera USB pochodzi bezpośrednio od VOUT33 (wyjście regulatora napięcia). Z tego powodu regulator musi być włączony, aby upewnić się, że pull-up jest włączony, gdy jest to potrzebne.

Konfiguracja sprzętowa DCD

Podstawowe połączenie w celu wykorzystywania modułu DCD polega na doprowadzeniu linii różnicowych do styków USB oraz linii we/wy wykrywających wyprowadzenie VBUS (rysunek 1). Należy pamiętać, że mikrokontrolery z rodziny Kinetis posiadają wyprowadzenia zgodne z napięciem 5 V, co oznacza, że nie ma potrzeby dodawania zmieniaczy poziomu lub dzielników rezystancji w celu wykrywania linii VBUS.

 

Rys. 1. Typowa konfiguracja sprzętowa USBDCD

Rys. 1. Typowa konfiguracja sprzętowa USBDCD

 

 

Przykładowy program obsługi DCD wysyła do terminala wiadomość pokazującą, który jaki hosta jest dołączony do modułu USB. W celu umożliwienia przetestowania trzech różnych typów hostów, należy posiadać specjalne narzędzie. Ponieważ standard jest nowy, jedynie kilka firm oferuje dla niego wsparcie. Narzędziem wykorzystywanym przez Freescale jest pakiet Allion USB Battery Charging Test. Wykorzystanie tego narzędzia oraz standardowego komputera PC wystarczy do emulacji dowolnego hosta oraz przetestowania modułu DCD. Więcej informacji na temat pakietu Allion USB Battery Charging Test można znaleźć pod adresem.

Programu po inicjalizacji mikrokontrolera oczekuje na podłączenie kabla USB, podając napięcie o wartości 5 V na PTB0. Gdy oprogramowanie wykryje narastające zbocze na linii VBUS uruchamia sekwencję detekcji DCD, a następnie oczekuje aż sekwencja ta zostanie ukończona lub blok wyśle powiadomienie o błędzie. Kolejne trzy okna (rysunek 2) przedstawiają rezultat dla każdego z rodzajów hostów.

 

Rys. 2. Przykładowe wyniki detekcji DCD

Rys. 2. Przykładowe wyniki detekcji DCD

 

 

Poniższa sekwencja czynności pozwala sprawdzić w praktyce przykładowy program testujący USBDCD:

1. Konfiguracja jednego wyprowadzenia we/wy jako wejścia. W poniższym przykładzie do detekcji VBUS wykorzystane jest wyprowadzenie PTB0.

FLAG_SET(SIM_SCGC5_PORTB_SHIFT,SIM_SCGC5);// Uruchomienie zegara dla PTB.
PORTB_PCR0=(0|PORT_PCR_MUX(1));// Konfiguracja PTB0 jako wyprowadzenia we/wy.

2. Uruchomienie USB oraz bitów bramkowania zegara DCD w SIM.

/* Konfiguracja SIM. */
SIM_SCGC4|=(SIM_SCGC4_USBOTG_MASK); // Bramkowanie zegara USB.
SIM_SCGC6|=(SIM_SCGC6_USBDCD_MASK); // Bramkowanie zegara USB. 

3. Preinicjalizacja USB. Jest to konieczne do uruchomienia rezystora pull-up, który jest kontrolowany przez moduł USB.

// Preinicjalizacja USB.
USBOTG_USBTRC0|=USBOTG_USBTRC0_USBRESET_MASK;
while(FLAG_CHK(USBOTG_USBTRC0_USBRESET_SHIFT,USBOTG_USBTRC0)){};
FLAG_SET(USBOTG_ISTAT_USBRST_MASK,USBOTG_ISTAT);
// Uruchomienie przerwania od resetu USB.
FLAG_SET(USBOTG_INTEN_USBRSTEN_SHIFT,USBOTG_INTEN);
USBOTG_USBCTRL=0x00;
USBOTG_USBTRC0|=0x40;
USBOTG_CTL|=0x01;
Polski portal branżowy dedykowany zagadnieniom elektroniki. Przeznaczony jest dla inżynierów i konstruktorów, projektantów hardware i programistów oraz dla studentów uczelni technicznych i miłośników elektroniki. Zaglądają tu właściciele startupów, dyrektorzy działów R&D, zarządzający średniego szczebla i prezesi dużych przedsiębiorstw. Oprócz artykułów technicznych, czytelnik znajdzie tu porady i pełne kursy przedmiotowe, informacje o trendach w elektronice, a także oferty pracy. Przeczyta wywiady, przejrzy aktualności z branży w kraju i na świecie oraz zadeklaruje swój udział w wydarzeniach, szkoleniach i konferencjach. Mikrokontroler.pl pełni również rolę patrona medialnego imprez targowych, konkursów, hackathonów i seminariów. Zapraszamy do współpracy!