Предыдущая Следующая

Прерывания от SPI программа не использует.

33.10. Обслуживание внутрисхемного программирования IAP

Проект интерфейсах>бслуживания IAP демонстрирует применение встроенного в микроконтроллеры LPC2000 механизма внутрисхемного программирования Flash-памяти средствами пользовательской программы. Используемые в проекте функции обслуживания IAP могут быть внедрены в любое устройство или систему на базе микроконтроллера LPC2000, если необходимо организовать самопрограммирование Flash-памяти внутри самого приложения.

Интерфейс обслуживания IAP LPC2000 [16] реализован в проекте, все файлы которого находятся в каталоге IAP. Основная программа интерфейса IAP находится в файле main.c этого проекта. Программа организует выполнение следующих операций IAP: стирание сектора Flash-памяти, копирование блока данных из SRAM во Flash-память, чтение и индикация содержимого некоторого объема Flash-памяти. Операции, связанные с изменением содержимого Flash-памяти, производятся с помощью функции iap_entry'(command,result), вызываемой с указателем IAP_LOCATION, равным 0x7FFFFFFl. Этот адрес в памяти микроконтроллера LPC2000 является точкой входа в подпрограмму IAP. Вызов функции IAP iap_entry(command,result) производится с условием предварительного определения ее параметров (команд), которые задаются в структуре command[5]. Результаты выполнения функции iap_entry(command,result) возвращаются в структуре result[2]. Во время выполнения функции IAP, прерывания в программе запрещаются.

Файл main.c программы обслуживания IAP

//------------------------------------------------------------------------

// Основная программа обслуживания IAP

//------------------------------------------------------------------------

#include <iolpc2129.h> //подключение стандартных заголовков и определений #include "hardware.К" //подключение специальных заголовков и определений volatile extern U8 flagn_knO, flagn_knl, flagn_kn2, flagn_kn3; idefine IAP_L0CATI0N 0x7FFFFFFl //точка входа в подпрограмму IAP typedef void (*IAP)(U32 [],U32 []); //определение функции IAP IAP iap_entry; //

U32 command[5]; //определение структуры команд IAP

U32 result[2]; //определение структуры результатов IAP

char Ram_Arrayl[] = "ABCDEFGHIJKL"; //символьная строка 1 для записи во FLASH char Ram_Array2[] = "abcdefghijkl"; //символьная строка 2 для записи во FLASH

char *Ram_Pointer; //определение указателя RAM

char *Flash_Pointer; //определение указателя FLASH

void read_flash(); //объявление функции чтения и индикации содержимого FLASH //функция чтения и индикации содержимого FLASH void read_flash() {

U8 i;

Flash_Pointer = (char*)0x000ОАО00; //установка указателя FLASH for (i = 0; i<12; i++) {

lcd_pro_data(*Flash_Pointer,i); //индикация содержимого FLASH

Flash_Pointer++;

}


Предыдущая Следующая



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz