Programowanie mikrokontrolerów Freescale Kinetis w trybie ISP
Sposób komunikacji z modułem EzPort
W module EzPort zaimplementowano prosty protokół komunikacyjny oparty na komendach. Każda sentencja przesyłanych informacji z urządzenia zewnętrznego do modułu EzPort mikrokontrolera Kinetis rozpoczynana jest od kodu instrukcji, który identyfikuje czynność, którą ma wykonać moduł EzPort. Przykład komunikacji pokazano na rysunku 3.
Rys. 3. Strumień danych będących przykładową sekwencją komunikacyjną modułu EzPort
Wszystkie dostępne komendy przedstawiono w tabeli 2.
Tab. 2. Komendy modułu EzPort
Skrót komendy | Nazwa komendy | Kod komendy |
WREN | Write Enable | 0x06 |
WRDI | Write Disable | 0x04 |
RDSR | Read Status Register | 0x05 |
READ | Flash Read Data | 0x03 |
FAST_READ | Flash Read Data at High Speed | 0x0B |
SP | Flash Section Program | 0x02 |
SE | Flash Sector Erase | 0xD8 |
BE | Flash Bulk Erase | 0xC7 |
RESE | Reset Chip | 0xB9 |
WRFCCOB | Write FCCOB Registers | 0xBA |
FAST_RDFCCOB | Read FCCOB registers at High Speed | 0xBB |
WRFLEXRAM | Write FlexRAM | 0xBC |
RDFLEXRAM | Read FlexRAM | 0xBD |
FAST_RDFLEXRAM | Read FlexRAM at High Speed | 0xBE |
Write Enable
Komenda Write Enable (WREN) ustawia bit write enable w rejestrze statusowym modułu EzPort. Komenda ta musi zostać wywołana, aby umożliwić zapis do pamięci (komendy SP, SE, BE, WRFCCOB, WRFLEXRAM). Implementację komendy Write Enable na mikrokontrolerze Coldfire MCF5282 pokazano w listingu:
//ezp_wren_cmd ezp_write_byte(EZPORT_WREN); while (!(MCF5282_QSPI_QIR & MCF5282_QSPI_QIR_SPIF));
Write Disable
Komenda Write Disable (WRDI) zeruje bit write enable w rejestrze statusowym modułu EzPort, co zapobiega przed nieuprawnionym lub niekontrolowanym zapisem do pamięci. Implementację komendy Write Disable na mikrokontrolerze Coldfire MCF5282 pokazano w listingu:
//ezp_wrdi_cmd ezp_write_byte(EZPORT_WRDI); while (!(MCF5282_QSPI_QIR & MCF5282_QSPI_QIR_SPIF));
Read Status Register
Wywołanie komendy Read Status Register (RDSR) umożliwia odczytanie rejestru statusowego modułu EzPort.
Flash Read Data
Za pomocą komendy Flash Read Data (READ) odczytywana jest zawartość pamięci Flash lub FlexNVM w zależności od wskazanego adresu, który jest liczbą 32-bitową. Przesyłanie odczytanych danych jest ponawiane aż do momentu zmiany przez urządzenie zewnętrzne stanu sygnału na linii EZP_CS. Częstotliwość odczytu danych może wynosić maksymalnie jedną ósmą częstotliwości pracy mikrokontrolera.
Flash Read Data at High Speed
Efekty komendy Flash Read Data at High Speed jest taki sam jak Flash Read Data, z tą różnicą, że częstotliwość odczytu może być zwiększona – do maksymalnie połowy częstotliwości pracy mikrokontrolera.
Flash Section Program
Komeda Flash Section Program (SP) służy do zaprogramowania jednego sektora wcześniej skasowanej pamięci Flash. Adres pamięci podawany jest po kodzie komendy i przyjmuje wartość 64-bitową. Po adresie wysyłane są dane do zapisania w pamięci.