Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 25.06.2014, 15:01  
kvark85
Прописка
 
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
kvark85 на пути к лучшему
По умолчанию Хранение данных в flash в линейке HD

Здравствуйте. Микросхема STM32f103VG из линейки HD имеет 1Мгб флеш памяти (в даташите показано что она поделена на 2 банка по 512 килобайт).
Не получается разместить данный по настройке прибора в конце флеша, тоесть в конец второго банка. Хочу хранить эти данные начиная с 1022-го килобайта флеша (адрес 0x080FF800).
размещать данные не далеко от начала флеша - получается нормально.
например в 127-ом байте флеша (адресс 0x0801FC00) данный коректно записываются, обновляются и код раотает правильно. В проекте много картинок, поэтому возникает такая необходимость.
код:
Код:
#define FLASH_KEY1      ((uint32_t)0x45670123)
#define FLASH_KEY2      ((uint32_t)0xCDEF89AB)
#define Page_1022       0x080FF800  // по адрусу 0x0801FC00 код размещается без проблем, к примеру

void Write(void)
{
  uint16_t len = 20;
  uint32_t flash_p;

  flash_p = Page_1022;
  //----------------------------------------------------------------------------------------------------------------------
  /* Authorize the FPEC Access */
  FLASH-›KEYR = FLASH_KEY1;     // снимаем блокировку
  FLASH-›KEYR = FLASH_KEY2;
  //FLASH_Erase Page
  while((FLASH-›SR&FLASH_SR_BSY));
  FLASH-›CR |= FLASH_CR_PER;            // Устанавливаем бит стирания одной страницы
  FLASH-›AR = (uint32_t)Page_1022;      // Задаем её адрес (стирается 1022й байт)
  FLASH-›CR |= FLASH_CR_STRT;           // Запускаем стирание
  while((FLASH-›SR&FLASH_SR_BSY));
  FLASH-›CR &= ~FLASH_CR_PER;           // востанавливаем бит стирания одной страници в исходное состояние
  //----------------------------------------------------------------------------------------------------------------------
  //FLASH_Program HalfWord
  FLASH-›CR |= FLASH_CR_PG;
  
  for(uint32_t i=0; i‹len; i++) {
        while((FLASH-›SR&FLASH_SR_BSY));
        *(__IO uint16_t*)flash_p = (uint16_t)0xA5; flash_p+=2;
  }
  while((FLASH-›SR&FLASH_SR_BSY));
  FLASH-›CR &= ~FLASH_CR_PG;
  FLASH-›CR |= FLASH_CR_LOCK;   // устанавливаем блокировку
}
Итак c Page_1022 = 0x0801FC00 работает без проблем, но затирает мне картинки в программе.
значение Page_1022 = 0x080FF800 просто не записываются в флеш.
Кто нибудь делал подобное?
Реклама:
__________________
Kvsrk85(Андрей)

Последний раз редактировалось kvark85; 25.06.2014 в 15:03.
kvark85 вне форума  
Непрочитано 25.06.2014, 15:41  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Хранение данных в flash в линейке HD

Сообщение от kvark85 Посмотреть сообщение
Итак c Page_1022 = 0x0801FC00 работает без проблем, но затирает мне картинки в программе.
У этих контроллеров страница 2кБ размером, потому и трёт.

Сообщение от kvark85 Посмотреть сообщение
значение Page_1022 = 0x080FF800 просто не записываются в флеш.
Для второго банка имеется дополнительный набор регистров FLASH_KEYR2, FLASH_SR2 и т.д.
STM32F10xxx XL-density Flash programming
AJScorp вне форума  
Сказали "Спасибо" AJScorp
kvark85 (25.06.2014)
Непрочитано 25.06.2014, 19:26  
kvark85
Прописка
 
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
kvark85 на пути к лучшему
По умолчанию Re: Хранение данных в flash в линейке HD

изменив регистры на дополнительные - стало записываться. проглядел этот момент. спасибо.
__________________
Kvsrk85(Андрей)
kvark85 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Символьный ЖКИ заглючил kvark85 Микроконтроллеры, АЦП, память и т.д 18 15.02.2011 17:28
Программирование NOR FLASH ST_Senya Микроконтроллеры, АЦП, память и т.д 1 01.10.2010 22:18
Программатор ПЗУ, Flash, МК и прочего. Elya Поиск схем. Делимся схемами 2 28.08.2009 20:01
Упаковка данных (сжатие данных) satnettv Proteus, KiCAD и другие ECAD 4 06.09.2007 20:15


Часовой пояс GMT +4, время: 11:54.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot