Programator układu HCS200

Programator układu HCS200
Pobierz PDF Download icon

Układ HCS200 jest przeznaczony do zastosowania w kluczach bezprzewodowych. Aby zapewnić bezpieczeństwo transmisji danych, układ używa algorytmu kryptograficznego KeeLoq. Dane zapisane w wewnętrznej pamięci EEPROM są informacjami, które ze względu na bezpieczeństwo muszą być szczególnie chronione. Dlatego też układ HCS200 jest programowany w niestandardowy sposób. W artykule opisano sposób programowania układu HCS200 oraz konstrukcję programatora. Rekomendacje: programator może przydać się serwisom urządzeń kontroli dostępu oraz specjalistycznym warsztatom samochodowym.

Podstawowe parametry:
  • Napięcie zasilania 5 VDC.
  • Płytka jednostronna o wymiarach 89 mm×60 mm.
  • Interfejs USB lub RS232.
  • Mikrokontroler AT89C2051.
  • Programowanie układów HCS200 (KeeLoq) oraz HCS301.

Na rynku jest duży wybór programatorów uniwersalnych. Urządzenie tego typu są w stanie obsłużyć większość układów stosowanych w urządzeniach elektronicznych. Zazwyczaj programatory uniwersalne mają zaimplementowane ogólnie stosowane algorytmy programujące przeznaczone dla pewnych grup rozwiązań, takich jak pamięci stałe, pamięci z popularnym interfejsem szeregowym I²C, Microwire SPI. Obok opisanych grup układów istnieją także rozwiązania mniej popularne stosowane w pewnej wąskiej gałęzi aplikacji. Zdarza się, że nawet programatory wiodących producentów, obsługujące tysiące układów, nie zawierają na swojej liście interesującego nas rozwiązania. Programatory przeznaczone do tych konkretnych rozwiązań bywają drogie, a ich zastosowanie praktyczne bywa nieopłacalne, ponieważ czasami ogranicza się do zaprogramowania jednego lub kilku układów. W takiej sytuacji, w wypadku konieczności zaprogramowania nietypowego układu np. w układzie prototypowym, sensowne jest samodzielne skonstruowanie programatora.

Z problemem zaprogramowania układu za pomocą programatora uniwersalnego zmierzyłem się wykonując prototyp urządzenia z układem HCS200 firmy Microchip. Układ jest koderem przeznaczonym dla urządzeń dostępu zdalnego. Aby zapewnić bezpieczeństwo transmisji danych, układ używa algorytmu kryptograficznego KeeLoq będącego rozwiązaniem autorskim firmy Microchip. Popularnie, kod przesyłany pomiędzy nadajnikiem a odbiornikiem nazywa się kodem kroczącym. Nadajnik realizuje funkcje kodowania zbioru danych. Dane zapisane w wewnętrznej pamięci EEPROM są informacjami, które ze względu na bezpieczeństwo użytkowania aplikacji, muszą być szczególnie chronione. Dlatego też układ jest programowany w sposób niestandardowy. Weryfikacja poprawności zaprogramowania jest możliwa tylko raz, bezpośrednio po sekwencji programującej układ. Po jednym cyklu programowania i weryfikacji układu nie daje się odczytać. Oczywiście możliwe jest ponowne zaprogramowanie układu nowymi danymi.

Pamięć układu składa się 12 słów (192 bajty). Mapę pamięci EEPROM układu HCS200 zamieszczono w tabeli 1.

Zaprogramowanie układu sprowadza się do wysłania zawartości pamięci do układu oraz bezpośrednio po tym zweryfikowaniu poprawności zapisanych danych. Poszczególne fazy programowania pokazano na rysunku 1.

Rysunek 1. Fazy programowania pamięci EEPROM układu HCS200

W pierwszym etapie układu jest wprowadzany w tryb programowania. Polega on na ustawieniu wyprowadzenia S2 układu (zegar), w czasie którego na wyprowadzeniu PWM (dane) są podawane kolejno poziomy: niski (3,5…4 ms), wysoki (co najmniej 3,5 ms) i ponownie niski (co najmniej 50 µs). Po wystąpieniu tych poziomów wyprowadzenie zegara jest zerowane i pozostaje w takim stanie przez czas Tp równy co najmniej 4 ms (rysunek 2).

Rysunek 2. Wprowadzenie układu w tryb programowania

Po wprowadzeniu układu w tryb programowania można przystąpić do wysyłania kolejnych słów przeznaczonych do zapisania w pamięci EEPROM. Bity słowa w kolejności od najmłodszego do najstarszego są zapisywane przy opadającym zboczu zegara. Po wysłaniu każdego słowa należy odczekać przez czas Twc potrzebny do wykonania operacji zapisu do pamięci (co najmniej 50 ms, rysunek 3).

Rysunek 3. Zapisywanie bitów w pamięci układu HCS200

Bezpośrednio po operacji programowania rozpoczyna się etap weryfikacji. Kolejne bity od najmłodszego do najstarszego są ustawiane na wyprowadzeniu PWM. Opadające zbocze zegara sygnalizuje przejście do kolejnego bitu (rysunek 4). Po zakończeniu etapu weryfikacji nie ma możliwości ponownej weryfikacji ani odczytu układu.

Rysunek 4. Weryfikacja pamięci układu HCS200

Interfejs programatora

Układ HCS200 jest programowany za pomocą interfejsu dołączanego poprzez złącze USB do komputera PC pracującego pod kontrolą Windows. Interfejs zawiera konwerter USB/RS232. Możliwa jest rezygnacja z tej części układu i podłączenie programatora poprzez złącze RS232. Schemat interfejsu pokazano na rysunku 5.

Rysunek 5. Schemat programatora układów HCS200

Sercem programatora jest mikrokontroler AT89C2051. Odpowiada on zarówno za komunikację z komputerem (RS232), jak i z programowanym układem. Programowanie może odbywać się bezpośrednio w nadajniku zdalnego sterowania przy użyciu klipsa. Tranzystor T1 kluczuje napięcie zasilające układy sterujące oraz programowany układ. Tranzystory T2 i T3 sterują linią danych natomiast tranzystory T4, T5 – linią zegarową. W trakcie weryfikacji dane wystawiane na linii danych przez programowany układ są odczytywane za pomocą wyprowadzenia P1.1 mikrokontrolera. Komendy sterujące programatorem oraz zawartość bufora danych są przesyłane z komputera na wyprowadzenia UART (P3.0 i P3.1) mikrokontrolera. W opisywanym interfejsie zastosowany jest wirtualny port szeregowy dostępny poprzez złącze USB komputera. Rozwiązaniem sprzętowym realizującym konwersję USB/UART jest tutaj układ U2 (FT232BL). Alternatywnie można zastosować konwerter MAX232 i połączyć programator z komputerem poprzez złącze RS232. Rozmieszczenie elementów na obwodzie drukowanym przedstawione zostało na rysunku 6.

Rysunek 6. Rozmieszczenie elementów na płytce programatora układów HCS200

Oprogramowanie

Oprogramowanie programatora składa się z dwóch części: oprogramowania interfejsu oraz programu wiersza poleceń komputera.

Interfejs jest sterowany komendami wysyłanymi z komputera poprzez wirtualny port szeregowy. Na podstawie tych komend interfejs dokonuje programowania układu poprzez wygenerowanie odpowiednich przebiegów (opisanych wcześniej). Do interfejsu przekazywany jest bufor danych będący odwzorowaniem pamięci EEPROM. Po zaprogramowaniu układu wykonywana jest weryfikacja. Dane są wczytywane do bufora i odsyłane do komputera w celu sprawdzenia.

Oprogramowanie komputera oprócz komunikacji z interfejsem realizuje generowanie klucza kodującego (do pamięci EEPROM enkodera nie trafia numer producenta tylko wygenerowany klucz). Proces pokazano na rysunku 7.

Rysunek 7. Generowanie klucza kodującego

Program sterujący programatorem jest uruchamiany z wiersza poleceń i przyjmuje trzy argumenty: nazwę portu szeregowego, 64-bitowy numer producenta oraz 28-bitowy numer seryjny. Pozostałe dane konfiguracyjne (np. CFG zawierające między innymi baud rate) są zapisane na stałe w kodzie. Przykłady komend programujących układy HCS zamieszczono na listingu 1.

Listing 1. Przykłady komend programujących układ HCS200
C:\hcsprog>hcsprog.exe com8 41:4c:41:6d:72:61:6c:61 0:00:00:01
rozpoczynam programowanie: 10 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 08 d6 af 3c d8 a4 1c 11
programowanie zakonczone pomyslnie

C:\hcsprog>hcsprog.exe com8 41:4c:41:6d:72:61:6c:61 0:00:00:02
rozpoczynam programowanie: 10 02 00 00 00 00 00 00 00 00 00 02 00 00 00 00 73 1c e8 68 f0 da 1c d5
programowanie zakonczone pomyślnie

W wypadku problemów z uzyskaniem dostępu do wirtualnego portu szeregowego należy pobrać odpowiednie sterowniki ze strony producenta (http://www.ftdichip.com). Program i interfejs programują również enkoder HCS301.

Jakub Kietliński
jakub.kietlinski@gmail.com

Bibliografia:

Wykaz elementów:
Rezystory:
  • R1…R5, R7…R9: 1 kΩ
  • R2, R6, R19: 10 kΩ
  • R10…R12, R15: 470 Ω
  • R13, R14:220 Ω
  • R16: 1,5 kΩ
  • R17, R18: 27 Ω
  • R20: 2,2 kΩ
Kondensatory:
  • C1: 470 nF
  • C2…C9: 100 nF
  • C3: 33 nF
  • C4: 10 nF
  • C10, C11: 10 µF/6 V
Półprzewodniki:
  • U1: AT89C2051 (SOL-20)
  • U2: FT232BL (TQFP-32)
  • U3: pamięć EEPROM 93C46 (SO-8)
  • T1…T5: BC858 (SOT-23)
  • LED1…LED5: LED SMD
Pozostałe:
  • X1: Rezonator kwarcowy 12 MHz
  • X2: Rezonator kwarcowy 6 MHz
  • J1: Złącze mini USB
  • Klips dla obudów SO-8
Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2012
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów