реклама на сайте
подробности

 
 
> Работа с флеш c8051F330
Misile_Inc
сообщение Jul 4 2012, 06:17
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 174
Регистрация: 30-08-11
Из: Санкт-Петербург
Пользователь №: 66 926



Доброго времени суток. Есть проект, в котором не работает запись данных во флеш. Процедура записи такая:
CODE

#define PSEE 1 // PSEE: Program Store Erase Enable
#define PSWE 0 // PSWE: Program Store Write Enable
#define FLASH_UNLOCK_CODE_1 0xA5
#define FLASH_UNLOCK_CODE_2 0xF1
void flash_write_byte(uint16 ptr, uint8 byte)
{
bit EA_save=1;
uint8 xdata * data pwrite;
volatile uint8 i;
volatile uint8 j;

{
EA_save = EA;
DISABLE_INTERRUPT();

VDM0CN = (1<<VDMEN); // enable VDD monitor
RSTSRC = (1<<PORSF); // enable VDD monitor as a reset source


// Unlock flash for modify
//
PSCTL |= (1<<PSWE); // бит PSWE=1;
PSCTL &=~ (1<<PSEE); // бит PSEE=0;
FLKEY = FLASH_UNLOCK_CODE_1;
FLKEY = FLASH_UNLOCK_CODE_2;

VDM0CN = (1<<VDMEN); // enable VDD monitor
RSTSRC = (1<<PORSF); // enable VDD monitor as a reset source
pwrite = (uint8 xdata*) ptr;
*pwrite = byte;

// Lock flash for modify
PSCTL &= (~ (1<<PSWE)); //бит PSWE=0;
for (i = 0; i < 0xff; i++)
{
for (j = 0; j < 10; j++)
{

}
}
//возвращаем состояние контроллера прерываний на момент до запрещения прерываний
EA = EA_save;
}
}

Используется так:
CODE

#define SKEY_ADRESS (0x0C00)// Указатель на серийный номер S-KEY
#define SKEY_LENGTH_BYTE 32 // длина серийного номера в байтах
uint8 xdata skey_buffer[SET_SKEY_PACKET_LENGTH_BYTE + 1];
uint8 i;
// Перезапись из временного буфера в ПЗУ
for (i = 0; i < SKEY_LENGTH_BYTE + 1; i++)
{
flash_write_byte(SKEY_ADRESS + i, skey_buffer[i]);
}

Среда разработки Keil.
Что программист делает не так? Сравнил с документацией, вроде все удовлетворяет требованиям.
Спасибо.

Сообщение отредактировал Misile_Inc - Jul 4 2012, 06:26
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 11:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016