Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-июл-25 11:46

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Проблема с чтением EEPROM
СообщениеДобавлено: 2015-ноя-11 13:24 
Не в сети

Зарегистрирован: 2015-ноя-11 13:09
Сообщения: 2
Пишу свой программатор области EEPROM (0x08003000-0x08020000-область записи)
Программатор работает в ОЗУ, все как положено.
Записываю массив данных функцией:
int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf) {
sz = (sz + 3) & ~3;
FMC->KEY = (FL_KEY);
Delay(50);
FMC->CMD |= (FL_CON);
Delay(50);
while (sz) {
FMC->ADR = adr;
Delay(50); /* Wait for 10 us */
FMC->CMD |= (FL_PROG | FL_XE);
Delay(50); /* Wait for 5 us */
FMC->CMD |= (FL_NVSTR);
Delay(50);
FMC->DI = *((u32 *)buf);
Delay(50);
FMC->CMD |= (FL_WR);
Delay(50);
FMC->CMD &= ~(FL_WR);
Delay(50); /* Wait for 15 us */
FMC->CMD |= (FL_YE);
Delay(50); /* Wait for 50 us */
FMC->CMD &= ~(FL_YE);
Delay(50);
FMC->CMD &= ~(FL_PROG);
Delay(50); /* Wait for 5 us */
FMC->CMD &= ~(FL_NVSTR | FL_XE);
Delay(50); /* Wait for 5 us */
adr += 4; /* Go to next Word */
buf += 4;
sz -= 4;
}
FMC->CMD &= ~(FL_CON);
Delay(50);
FMC->KEY = 0;
Delay(50); /* Wait for 1 us */
return (0); /* Finished without Errors */
}
Задержки с запасом.

После провожу верификацию:
int VerifyPage(unsigned long adr, unsigned long sz, unsigned char *buf_verify)
{
U32 *buf_in_flash;
U32 *buf_in_kadr;
U32 x, y, i;

buf_in_flash = (U32 *)adr;
buf_in_kadr = (U32 *)buf_verify;
sz = (sz + 3) & ~3;
sz = sz/4;

for(i=0;i<100;i++)
{
__nop();//попытки исправить ошибки
}

while (sz)
{
x = *(buf_in_flash);//чтение из EEPROM
y = *(buf_in_kadr);//чтение из исходного массива
if(x!=y)
{
return 1;//error in flash
}
buf_in_flash++;
buf_in_kadr++;
sz--;
}
return 0;//All ok
}
Проблема:
иногда при чтении ячейки памяти EEPROM (x = *(buf_in_flash);) читается 0xFFFFFFFF
тут же захожу в Debug смотрю эти ячейки а там нормальные данные, если тут же вернуться и снова считать эту ячейку то считываются нормальные записанные данные.
частота ядра 48 МГц.
Что посоветуете???


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB