Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Flash в STM32L151
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Bass
Доброго времени суток.
Наткнулся на такую проблему в STM32L151: при попытке стирания страницы Flash операция проходит без ошибок, но память не стирается.
Операция выполняется согласно алгоритму, описанному в Reference Manual'е "Flash program memory and data EEPROM (FLASH)" (стр.63)
1. Разблокировка регистра PECR
2. Разблокировка записи во флэш
3. Установка бита ERASE в регистре PECR
4. Установка бита PROG в регистре PECR
5. Ожидание сброса бита BSY в регистре SR
6. Запись 0x00000000 в первые 4 байта страницы (0x08001000)
7. Ожидание сброса бита BSY в регистре SR
8. Сброс бита PROG в регистре PECR
9. Сброс бита ERASE в регистре PECR
10. Блокировка регистра PECR
Данная процедура проходит без ошибок (флаги ошибок сброшены, EOP = 1), но страница не стирается. Код функции стирания расположен в RAM.
Если кто-нибудь сталкивался с подобным поведением МК, то подскажите куда копать.
Сергей Борщ
Не сталкивался, но совсем глупый вопрос - а ту ли страницу вы стираете? Возможно стираете одну, а смотрите другую...
kolobok0
Цитата(Сергей Борщ @ Jul 8 2014, 09:44) *
Не сталкивался, но совсем глупый вопрос - а ту ли страницу вы стираете? Возможно стираете одну, а смотрите другую...


+1
иногда бывает используют стандартный пример и передают ему реальный адрес, а не ID страницы...
Bass
Цитата(Сергей Борщ @ Jul 8 2014, 12:44) *
Не сталкивался, но совсем глупый вопрос - а ту ли страницу вы стираете? Возможно стираете одну, а смотрите другую...

Адрес 0x08001000, куда записывается 0x00000000 вижу в дебаге (J-TAG). Проверяю результат по этому же адресу.
Стандартную библиотеку не использую.
Bass
Разобрался с ситуацией. Оказывается в STM32L данные во flash после стирания имеют значение 0x00 (хотя я всегда думал, что стертая flash это 0xff).
Соответственно после стирания я наблюдал нули в памяти и думал, что ничего не стерлось. По аналогии запись во flash с 0 в 1 осуществляется без стирания.
В документации нигде не увидел упоминания о том, что после стирания во flash должны быть нули. Если кто-то видел, сообщите пожалуйста где об этом можно прочитать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.