Programowanie mikrokontrolerów Freescale Kinetis w trybie ISP

W 32-bitowych układach rodziny Kinetis firmy Freescale wbudowany został blok funkcjonalny o nazwie EzPort. Moduł ten jest odpowiedzialny za programowanie mikrokontrolerów w trybie ISP (In-System Programming). Aby ten proces mógł zostać wykonany, do głównych funkcji EzPort należy przede wszystkim odczyt pamięci Flash, kasowanie pamięci Flash i zapisywanie pamięci Flash. Co istotne, zgodnie z ideą ISP, czynności te mogą być wykonywane bez konieczności usuwania mikrokontrolera z systemu, w którym został zintegrowany.

Moduł EzPort może działać w dwóch trybach: włączonym i wyłączonym.

  • Tryb włączony: moduł EzPort przejmuje kontrolę nad sterowaniem pamięcią Flash, wyłączając jednocześnie dostęp innych zasobów mikrokontrolera do pamięci. Zapobiega to występowaniu konfliktów dostępu do pamięci;
  • Tryb wyłączony: zasoby mikrokontrolera mają normalny dostęp do pamięci Flash.

Budowa i zasada działania modułu EzPort

W procesie programowania ISP wykorzystywane są: moduł EzPort, pamięć Flash, rdzeń mikrokontrolera i kontroler resetu. Ich wzajemne połączenie przedstawiono na rysunku 1 w postaci schematu blokowego.

 

Rys. 1. Schemat blokowy przedstawiający połączenie modułu EzPort z modułami z nim współpracującymi

Rys. 1. Schemat blokowy przedstawiający połączenie modułu EzPort z modułami z nim współpracującymi

 

 

Moduł EzPort wyposażony jest w prosty interfejs komunikacyjny zgodny ze standardem transmisyjnym SPI (Serial Peripheral Interface), za pomocą którego moduł komunikuje się z urządzeniami zewnętrznymi. Opis wyprowadzeń modułu EzPort przedstawiono w tabeli 1.

 

Tab. 1. Opis wyprowadzeń modułu EzPort

Nazwa wyprowadzenia Funkcja wyprowadzenia Tryb pracy wyprowadzenia
EZP_CK Linia zegarowa Wejście
EZP_CS Chip Select Wejście
EZP_D Linia danych wejściowych Wejście
EZP_Q Linia danych wyjściowych Wyjście

 

Linia EZP_CK to linia, na której podawany jest sygnał zegarowy. Zgodnie z kolejnymi taktami zegara, na liniach danych (EZP_D oraz EZP_Q) podawane są bity danych. Częstotliwość sygnału zegarowego może przyjąć maksymalnie połowę wartości częstotliwości mikrokontrolera. Jedynym wyjątkiem jest sytuacja, gdy wykonywana jest operacja na pamięci oznaczona jako Read Data lub Read FlexRAM. W tym wypadku częstotliwość sygnału zegarowego nie może przekroczyć jednej ósmej częstotliwości pracy mikrokontrolera.

Linia EZP_CS to tak zwana linia Chip Select. Służy ona do sygnalizacji miejsc w ciągu danych, gdzie zaczyna się i kończy dana komenda. Negacja sygnału na linii EZP_CS oznacza zakończenie aktualnie przesyłanej komendy.

Linie EZP_D oraz EZP_Q służą do przesyłania danych. Każda sentencja, w tym kod komendy, adres i dane, rozpoczynana jest od najbardziej znaczącego bitu.

Konfiguracja sprzętowa i programistyczna do współpracy z modułem EzPort

Komunikacja między modułem EzPort i urządzeniem zewnętrznym może odbywać się w dwóch trybach pracy standardu SPI, różniącymi się polaryzacją sygnału zegarowego i zboczem zegara, dla którego zmienia się wartość bitu danych. Dostępne tryby pracy to:

  • CPOL = 0, CPHA = 0;
  • CPOL = 1, CPHA = 1.

Moduł EzPort podczas komunikacji SPI z urządzeniem zewnętrznym działa jako urządzenie Slave, co oznacza, że to urządzenie zewnętrzne steruje całym procesem działania modułu EzPort wysyłając do niego odpowiednie komendy do wykonania. Urządzeniem zewnętrznym może być np. mikrokontroler Freescale Coldfire MCF5282. Schemat połączenia mikrokontrolerów Kinetis i Coldfire MCF5282 przedstawiono na rysunku 2.

 

Rys. 2. Połączenie interfejsu SPI mikrokontrolera MCF5282 z liniami modułu EzPort

Rys. 2. Połączenie interfejsu SPI mikrokontrolera MCF5282 z liniami modułu EzPort

 

 

Przykładowy kod konfigurujący interfejs SPI w mikrokontrolerze Coldfire MCF5282 do pracy z modułem EzPort układu Kinetis pokazano w listingu:

 

O autorze