Например TDA7294

Форум РадиоКот • Просмотр темы - stm32f103 HAL: зранение данных во внутреннем флеше
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 10:49:29

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 31 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вс июл 02, 2017 00:53:10 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Столкнулся с потребностью сохранять данные во внутреннем флеше МК (F103). Можно было бы во внешнем ЕЕПРОМ, но его на уже разведенной и запаяной плате нет. Проблема, собственно в следующем: при попытке стирания страницы флеша - контроллер намертво виснет. Делаю так:

Код:
FLASH_EraseInitTypeDef EraseInit;
   uint32_t PageError=0;

   EraseInit.TypeErase=FLASH_TYPEERASE_PAGES;
   //EraseInit.Banks=FLASH_BANK_1;
   EraseInit.NbPages=1;
   EraseInit.PageAddress=0x08002000;

   HAL_FLASH_Unlock();
   FLASH_WaitForLastOperation(500);
   HAL_FLASHEx_Erase(&EraseInit,&PageError);
   FLASH_WaitForLastOperation(500);


Толи лыжи не едут, то ли я... Кто виноват и что делать?

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вс июл 02, 2017 06:24:26 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я готовые функции не использовал.
Я делал наподобие этого, все работает. МК как раз 103.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вс июл 02, 2017 12:02:28 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Попробовал код из статьи, все равно подвисает... Похоже, не неправильной странице при стирании обращаюсь. Хотя, по мануалам адрес страницы 8 и есть 0x8002000

_________________
R2AIV 73!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вс июл 02, 2017 16:12:08 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Чтобы стереть страницу можно использовать любой адрес из этой страницы.
Быть может эта страница уже занята, попробуйте с другой, например с последней.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вс июл 02, 2017 17:18:16 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Попробовал - заработало. Стирает и пишет. Почему-то виснет при попытках стирать страницы с номером, ближе к использованным. В итоге все кончилось тем, что работаю с 30й страницей ) Еще обнаружил один момент, если страницу стереть, потом записать данные, потом еще раз попытаться записать данные - все намертво виснет. В итоге, похоже, что перед операцией записи в любом случае нужно вызывать операцию стирания. Лучше всего - затолкать данные для сохранения в структуру, и потом эту структуру записывать через указатель одной операцией записи. Проблема решена - спасибо! Теперь буду думать над чтением )

_________________
R2AIV 73!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вс июл 02, 2017 19:35:35 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
KT315B писал(а):
Почему-то виснет при попытках стирать страницы с номером, ближе к использованным.
Наверное затираете какие-то данные.
KT315B писал(а):
Еще обнаружил один момент, если страницу стереть, потом записать данные, потом еще раз попытаться записать данные - все намертво виснет.
Так я не пробовал, после записи сразу же лочу запись во флеш.
KT315B писал(а):
Лучше всего - затолкать данные для сохранения в структуру, и потом эту структуру записывать через указатель одной операцией записи.
Ну лично я, как раз так и сделал.
KT315B писал(а):
Теперь буду думать над чтением
Я объявил переменную в области флеш и делал вот так просто.
Код:
#define VAR_FL   __attribute__((section(".var_area"))) //область для хранения во флеш переменных
...
extern volatile DEVICE_t DEVICE;
volatile DEVICE_t DEVICE_FLASH VAR_FL;   
...
DEVICE=DEVICE_FLASH;   //считываем из флеша


Местоположение секции .var_area определена мной в файле линковщика. Но можно структуру того же типа объявить как указатель и присвоить ему фиксированный адрес. Но в первом варианте как раз гарантируется, что данные не налезут друг на друга.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Пн июл 03, 2017 08:12:39 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
Наверное затираете какие-то данные.


Дык не должен - тут же вычитываю HEX, и пустота.

Цитата:
Я объявил переменную в области флеш и делал вот так просто.


Хм, настолько глубоко я еще пока не залезал. А какой компилятор используете? Или там все равно? У меня SW4STM32. Хотя есть еще и Keil, просто проект делался в SW4STM32.

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Пн июл 03, 2017 17:38:28 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Компилятор GCC

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вт июл 04, 2017 08:37:15 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Это тот, что arm-none-eabi? Тогда у меня тоже самое )

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Ср июл 05, 2017 18:36:10 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да, он.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Чт июл 06, 2017 01:20:44 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В итоге все свелось к этому:

Код:
void *ReadFlash(unsigned int FlashAddr)
{
   return (void *)FlashAddr;
}


И вызов:

Код:
memcpy((void *)&FlashData,ReadFlash(FLASH_BASE+20*1024), sizeof(FlashData));


FlashData - вышеупомянутая структура. Все просто оказалось )

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вт июл 25, 2017 08:55:26 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб фев 09, 2008 23:15:43
Сообщений: 31
Рейтинг сообщения: 0
Всем привет!
Подниму тему. Перехожу на HAL, нужно писать данные во FLASH. МК STM32F103C8T6, пишу данные в конец флэша - на 63 страницу, в качестве данных значение переменной isTimeWorkL - время работы одного из двигателей. Делаю это следующим образом:

Код:
                HAL_FLASH_Unlock();                     // Разблокируем флеш память
      FLASH_WaitForLastOperation(500);  // Ожидаем окончания операции
      FLASH_PageErase(0x0800F7C2);     // Очищаем страницу 63 флеш памяти
      FLASH_WaitForLastOperation(500);  // Ожидаем окончания операции
      HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, 0x0800F7C2, isTimeWorkL );   // Записываем значение переменной isTimeWorkL на 63 странице флеш памяти
      FLASH_WaitForLastOperation(500);  // Ожидаем окончания операции
      HAL_FLASH_Lock();                        // Блокируем флеш память
      FLASH_WaitForLastOperation(500);  // Ожидаем окончания операции


В итоге после записи во флеш значения переменной isTimeWorkL я наблюдаю на 63 странице 0xFFFFFFFF, т.е. такое ощущение, что флеш была стерта, но не записана. Что я делаю не так?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вт июл 25, 2017 08:58:35 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
У меня вообще черех HAL не хотело писАться, в итоге пришлось добавить самопальные функции. Код, который прислал Z_h_e - рабочий, им можно пользоваться. Ну а данные лучше в структуру затолкать...

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вт июл 25, 2017 10:05:43 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб фев 09, 2008 23:15:43
Сообщений: 31
Рейтинг сообщения: 0
Цитата:
У меня вообще черех HAL не хотело писАться, в итоге пришлось добавить самопальные функции. Код, который прислал Z_h_e - рабочий, им можно пользоваться. Ну а данные лучше в структуру затолкать...


Я такой код использовал раньше и он тоже работал, НО хочется избавится от костылей и использовать чистый HAL.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вт июл 25, 2017 10:47:54 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
.
Я такой код использовал раньше и он тоже работал, НО хочется избавится от костылей и использовать чистый HAL.


Я тоже хочу так )

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вт июл 25, 2017 17:48:49 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб фев 09, 2008 23:15:43
Сообщений: 31
Рейтинг сообщения: 0
Цитата:
Я тоже хочу так )

Ну раз хотите, получайте :) Заработало! Я решил попробовать использовать HAL_FLASHEx_Erase, в итоге получил следующее:

Код:
   
    FLASH_EraseInitTypeDef EraseInitStruct;
    uint32_t PAGEError = 0;
    EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
    EraseInitStruct.PageAddress = 0x0800F800;
    EraseInitStruct.NbPages     = 1;
    HAL_FLASH_Unlock();   // Разблокируем флеш память
    HAL_FLASHEx_Erase(&EraseInitStruct,&PAGEError);   
    HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, 0x0800F800, sTimeWorkL );   // Записываем значение переменной isTimeWorkL на 63 странице флеш памяти
    HAL_FLASH_Lock();   // Блокируем флеш память


Все стирается и пишется без проблем.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Ср июл 26, 2017 08:07:35 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Отлично! Буду пробовать!

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Ср ноя 08, 2017 14:17:35 
Родился

Зарегистрирован: Пн окт 30, 2017 15:32:31
Сообщений: 6
Рейтинг сообщения: 0
Ребята, а как результат преобразовать в симол?

HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, 'A' ) .

Я передаю символ A, как его получить не в виде числа, а как символ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Ср ноя 08, 2017 15:38:35 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Koret писал(а):
Я передаю символ A,
Нет, Вы передаете число которое соответствует символу А кодовой таблицы.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Ср ноя 08, 2017 16:00:01 
Родился

Зарегистрирован: Пн окт 30, 2017 15:32:31
Сообщений: 6
Рейтинг сообщения: 0
Koret писал(а):
Я передаю символ A,
Нет, Вы передаете число которое соответствует символу А кодовой таблицы.
Согласен, не верно выразился. К, сожалению, не нашел рабочего примера, чтобы и компилятор не ругался и преобразовывалось. Например, число 97 это буква "a", как данное число можно "малой кровью" отобразить как "a"?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  1,  

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y