Programowanie mikrokontrolerów Freescale Kinetis w trybie ISP
Flash Sector Erase
Wywołanie komendy Flash Sector Erase (SE) skutkuje skasowaniem zawartości pamięci w danych sektorze pamięci Flash. Adres pamięci przyjmuje wartość 64-bitową. Implementację komendy Flash Sector Erase i wcześniej omówionej Flash Section Program pokazano w listingu:
set_to_ezp_mode(); ezp_spi_init(0,6,0,0); /* max permitted clock speed for read */ // 1. Boot-up from reset with EZPORT enabled. ezp_wren_cmd(); // 2. Verify WEN flag is set. sr = ezp_rdsr_cmd(); if (sr != EP_SR_WEN) { printf("Failure in SR value: WEN not set\n"); error_count++; } //3. Sector erase ezp_se_cmd(sector_addr); //Loop till command has completed sr = EP_SR_WIP; // Poll SR until WIP goes low while ((sr & EP_SR_WIP) == EP_SR_WIP) sr = ezp_rdsr_cmd(); ezp_wren_cmd(); //4. Sector program ezp_pp_cmd(sector_addr,64, pg_buffer); //Loop till command has completed sr = EP_SR_WIP; // Poll SR until WIP goes low while ((sr & EP_SR_WIP) == EP_SR_WIP) sr = ezp_rdsr_cmd();
Flash Bulk Erase
Komeneda Flash Bulk Erase wykonuje skasowanie całej wartości pamięci Flash, z pominięciem jedynie sektorów chronionych.
Reset Chip
Wykonanie komendy Reset Chip (RESET) powoduje zresetowanie całego modułu EzPort.
Write FCCOB Registers
Komenda Write FCCOB Registers (WRFCCOB) pozwala na zapis danych do rejestrów modułu EzPort. 12 bajtów informacji przesłanych przez urządzenie zewnętrzne wpisywanych jest do rejestrów FCCOB 0-B.
Read FCCOB registers at High Speed
Za pomocą komendy Read FCCOB registers at High Speed (FAST_RDFCCOB) istnieje możliwość odczytania rejestrów modułu EzPort. Po otrzymaniu komendy, moduł EzPort odsyła 12 bajtów, rozpoczynając od rejestru FCCOB 0, a kończąc na rejetrze FCCOB B. Implementację komendy Read FCCOB registers at High Speed i wcześniej omówionej Write FCCOB Registers pokazano w listingu:
ezp_wren_cmd(); fccob[0] = 0x06;//program longword command fccob[1] = 0x00;//flash address is 0x00040c fccob[2] = 0x04; fccob[3] = 0x0c; fccob[4] = 0xff;//program data is 0xfffffffe fccob[5] = 0xff; fccob[6] = 0xff; fccob[7] = 0xfe; ezp_wrfccob_cmd(fccob); //Loop until command has completed sr = EP_SR_WIP; // Poll SR until WIP goes low while ((sr & EP_SR_WIP) == EP_SR_WIP) sr = ezp_rdsr_cmd();
Write FlexRAM
Komenda Write FlexRAM może zostać użyta tylko dla mikrokontrolerów, które są wyposażone w pamięć FlexRAM. Wykonanie komendy umożliwia zapis do pamięci czterech bajtów danych. Adres pamięci jest wartością 32-bitową.
Read FlexRAM
Za pomocą komendy Read FlexRAM (RDFLEXRAM) odczytywana jest zawartość pamięci FlexRAM. 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. Implementację komendy Read FlexRAM i wcześniej omówionej Write FlexRAM pokazano w listingu:
ezp_wren_cmd(); ezp_wrflexram_cmd(address, buffer); //Loop till command has completed sr = EP_SR_WIP; // Poll SR until WIP goes low while ((sr & EP_SR_WIP) == EP_SR_WIP) sr = ezp_rdsr_cmd();
Read FlexRAM at High Speed
Efekty komendy Read FlexRAM at High Speed jest taki sam jak Read FlexRAM z tą różnicą, że częstotliwość odczytu może być zwiększona – do maksymalnie połowy częstotliwości pracy mikrokontrolera.
Bibliografia
[1] www.freescale.com Kinetis Peripheral Module, 11/2010[2] www.freescale.com Kinetis Reference Manual, 05/2011