Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Информационная память FLASH
СообщениеДобавлено: 2011-янв-25 12:39 
Не в сети

Зарегистрирован: 2010-фев-24 21:35
Сообщения: 20
Скажите, пожалуйста, используется ли вами информационная память FLASHа или её можно использовать в приложениях? Вот, например, у STMов туда производителем записывается загрузчик, и делать с этой памятью какие-то действия прямо запрещается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Информационная память FLASH
СообщениеДобавлено: 2016-июл-04 16:54 
Не в сети
Аватара пользователя

Зарегистрирован: 2015-ноя-11 13:42
Сообщения: 11
Поднимаю тему. Что это такая за информационная память?

Читаю документацию на 1986ВЕ9Х...
Есть основная память от 0х08000000 до +32 страницы (128Кб)
И есть некая информационная память от 0х08000000 до +1 страница (4 Кб)

То есть фактически 1-ая страница основной памяти и информационной памяти абсолютно пересекаются в адресном пространстве. Это как так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Информационная память FLASH
СообщениеДобавлено: 2016-июл-04 17:08 
Не в сети
Аватара пользователя

Зарегистрирован: 2015-ноя-11 13:42
Сообщения: 11
О, нашёл, здесь же на форуме: viewtopic.php?f=33&t=1972

Вобщем, информационная память доступна на чтение и запись только в режиме программирования. А в режим программирования можно войти только исполняя код из ОЗУ.
Следовательно, можно использовать эту информационную память, как место для хранения каких-то значений. Причем, если хотим прочитать или стереть значение, то надо делать это через функции выполняемые в ОЗУ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Информационная память FLASH
СообщениеДобавлено: 2016-июл-05 08:08 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1039
Откуда: Тула
Да, вполне себе работает вот такая конструкция
Код:
   __disable_irq();
   EEPROM_ErasePage(0x08000000, EEPROM_Info_Bank_Select);
   for(i=0; i<4096; i+=4) {
      uint32_t data = .......;
      EEPROM_ProgramWord( i+0x08000000, EEPROM_Info_Bank_Select, data);
   }
   __enable_irq();

Функции из SPL. Только указать размещение файла/ф-ций из файла MDR32F9Qx_eeprom.c в ОЗУ.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Информационная память FLASH
СообщениеДобавлено: 2017-ноя-14 15:42 
Не в сети

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 15
Столкнулся с проблемой чтения пользовательской памяти.
После чтения пользовательской памяти некоторые ячейки EE_Data в сброшены (0xFFFFFFFF).

Код:
#define EEPROM_PAGE_SIZE   (4*1024)
#define MAIN_EEPAGE            0
#define INIT_EE_ADDRESS      (0x08000000 + MAIN_EEPAGE * EEPROM_PAGE_SIZE)


Код:
uint32_t EE_Address = 0;
uint32_t EE_BankSelector = 0;
uint32_t EE_Data[1024];


Код:
void EE_Configure(void)
{
   uint16_t i;
   RST_CLK_PCLKcmd(RST_CLK_PCLK_EEPROM, ENABLE);
   EE_Address = INIT_EE_ADDRESS;
   EE_BankSelector = EEPROM_Info_Bank_Select;

   __disable_irq();
   
   for (i = 0; i < EEPROM_PAGE_SIZE; i += 4)
      EE_Data[i>>2] = EEPROM_ReadWord (EE_Address+i, EE_BankSelector);
...


Код:
int main(void)
{   
   Clock_Configure();
   IO_Configure();
   EE_Configure();
...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Информационная память FLASH
СообщениеДобавлено: 2017-ноя-16 09:21 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 49
Откуда: ПКК "Миландр"
Поясните пожалуйста проблему, почему ячейки не могут быть сброшены?

При стирании страницы или всей памяти, ячейки памяти становятся равны 0хFF. Последующая процедура записи записывает необходимые нули. Если в память ничего не писалось, то она сохраняет значение 0хFF.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Информационная память FLASH
СообщениеДобавлено: 2017-ноя-17 10:55 
Не в сети

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 15
В функции EE_Configure() после считывания страницы пользовательской памяти я проверяю: если ячейки сброшены, то я стираю страницу (EEPROM_ErasePage) и записываю туда некие значения:
Код:
// Write the data
   for (i = 0; i < EEPROM_PAGE_SIZE; i += 4)
      EEPROM_ProgramWord(Address + i, BankSelector, *src++);   


После этого иногда при подаче питания на микроконтроллер некоторые (не все) ячейки пользовательской памяти оказывались стертыми.
Я предполагаю, что после подачи питания во время выполнения EE_Configure() происходил провал напряжения питания и микроконтроллер сбрасывался, что приводило к потере данных.


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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 3


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

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