Прерывания от 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 ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |