Obsługa kart chipowych Smart Card

Listing 2. Definicja funkcji SC_DetectPinConfig() inicjalizującej wyprowadzenie wykrywające obecność karty w gnieździe

 

Na początku mikrokontroler pozostaje w pętli while() dopóty, dopóki w gnieździe nie zostanie umieszczona karta identyfikacyjna. Jeśli to nastąpi to wygenerowane zostanie przerwanie zewnętrzne od wspomnianego wyżej wyprowadzenia PE14. W konsekwencji mikrokontroler wywoła funkcję obsługi przerwania zewnętrznego EXTI15_10_IRQHandler() z pliku stm32f10x_it.c. Zamieszczono ją na listingu 3. Jest to standardowy kod obsługi przerwania dla układów z rodziny STM32, a zatem na początku sprawdzane jest, od której linii przerwanie pochodzi, a następnie mikrokontroler zeruje flagę przerwania i przystępuje do wykonywania właściwego kodu aplikacji. Po zmianie flagi obecności karty w gnieździe (CardInserted) na 1, uruchamiana jest procedura aktywacji karty i jej zerowania.

 

Listing 3. Funkcja obsługi przerwania od wyprowadzenia detekującego obecność karty

 

Po powrocie z obsługi przerwania warunek wykonywania się pierwszej pętli while() nie jest już spełniony. Oznacza obecność karty w gnieździe, a więc aplikacja przystępuje do próby odebrania odpowiedzi na sygnał zerowania (ATR), ale najpierw za pomocą wywołania funkcji SC_PTSConfig() ustalana jest prędkość komunikacji.

Gdy ramka ATR jest już odebrana i zdekodowana, mikrokontroler rozpoczyna poruszanie się po systemie plików karty Smart Card. Najpierw sprawdzana jest obecność pliku głównego MF (Master File), a następnie wybierany jest plik ICCID. Jeśli te czynności zostaną zakończone powodzeniem, aplikacja przystępuje do odczytu zawartości pliku ICCID, jest to 10 bajtów, ponieważ taki jest właśnie jego rozmiar na użytej karcie identyfikacyjnej.

Jak widać, podstawowa obsługa kart Smart Card nie jest zbytnio skomplikowana. Taki stan rzeczy nie wynika oczywiście z banalności samego standardu, ponieważ z pewnością banalnym on nie jest. Dzięki sprzętowemu wsparciu ze strony układów STM32, oraz dzięki udostępnianiu przez firmę STMicroelectronics bibliotek, implementacja obsługi kart identyfikacyjnych we własnych aplikacjach nie powinna nastręczać większych problemów przy tworzeniu własnych aplikacji.

O autorze