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

 
 
> FLASH-память в контроллере MSP430F5438, Не могу стереть FLASH-память
mzhelezkin
сообщение Jan 26 2010, 21:17
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 15-01-10
Пользователь №: 54 827



Здравствуйте. Подскажите такую вещь. В контроллере MSP430F5438 есть встроенная FLASH-память. Так вот записать в нее даныые у меня получается, а стереть их я не могу (пользуюсь программой IAR Embeddet Workbench v4.20.1). Для примера я взял простую программу:

CODE
#include "msp430x54x.h"

#define Memstart 0x10000 // Адрес с которого начну запись в FLASH

void main(void)
{
WDTCTL = WDTPW + WDTHOLD;

unsigned long g = Memstart;

do
{

while(FCTL3 & BUSY)
{}
FCTL3 = FWKEY;
FCTL1 = FWKEY + WRT;
__data20_write_char(g, 0x15);
g += 0x0001;
}
while(g <= 0x45BFF);

FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;
}


Такой код работает нормально. Записывает в память все отлично.

Теперь попробую очистить FLASH. После цикла, указанного выше пишу такой код:

CODE
do
{

while(FCTL3 & BUSY)
{}
FCTL3 = FWKEY;
FCTL1 = FWKEY + ERASE;
__data20_write_char(g, 0x0F);
g += 0x0200;
}
while(g <= 0x10FF0);

FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;


Компилирую. Ошибок никаких, но теперь и память не записывается, и не стирается. Хотя может наоборот стирается.)))) Прошу заметить что данные я записываю с адреса 0x10000 до 0x45BFF. А стирать пытаюсь с адреса 0x10000 до 0x10FF0. Получается что часть памяти я должен очистить, а часть забить своими данными, но ничего подобного не наблюдаю.
Данные во FlASH-памяти смотрю с помощью отладчика в IAR, в окне "Memory". Подскажите, может я что-то забыл. Какой-нибудь разрешающий/запрещающий бит не установил или наоборот не очистил. Или еще что-то.Заранее спасибо.
Go to the top of the page
 
+Quote Post



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

 


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


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