Например TDA7294

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





Текущее время: Ср апр 17, 2024 00:31:04

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


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



Начать новую тему Ответить на тему  [ Сообщений: 31 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Ср ноя 08, 2017 16:01:29 
Собутыльник Кота
Аватар пользователя

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

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


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

Зарегистрирован: Пн окт 30, 2017 15:32:31
Сообщений: 6
Рейтинг сообщения: 0
Где Вы хотите ее отобразить?
На дисплее WH1602.


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

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Пт авг 10, 2007 12:49:55
Сообщений: 3047
Откуда: kr.ua
Рейтинг сообщения: 0
1) кол-во циклов стирания ограничено (то ли 100, то ли 300, то ли 1000 - во всяком случае меньше чем в еепромках и намного)
2) запись идет не байтами, а словами по 16 бит.

если надо много писать во флэш - советую посмотреть на stm'овский аппноут по реализации eeprom'а (да, надо откусить под это 2 страницы флэша, но оно того стоит думаю).


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Ср ноя 15, 2017 08:18:53 
Родился

Зарегистрирован: Пн окт 30, 2017 15:32:31
Сообщений: 6
Рейтинг сообщения: 0
если надо много писать во флэш - советую посмотреть на stm'овский аппноут по реализации eeprom'а (да, надо откусить под это 2 страницы флэша, но оно того стоит думаю).
Подскажите, а в чём преимущества эмулятора перед прямой записью в память через HAL? Эмулятор вроде использует тот же HAL_FLASH.

Цитата:
1) кол-во циклов стирания ограничено (то ли 100, то ли 300, то ли 1000 - во всяком случае меньше чем в еепромках и намного)
Если память не изменяет, вроде Flash 10'000 циклов, а EEPROM 100'000.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Вт янв 30, 2018 10:34:05 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пн ноя 07, 2016 12:14:14
Сообщений: 134
Рейтинг сообщения: 0
Здравствуйте!
Кто нибудь работает сейчас с библиотекой SPL? Имеет ли смысл ее изучать и учиться по ней, ведь 90% уроков именно с ней. Сейчас возникла необходимость сохранить настройки (массив данных на 256 ячеек) во flash. Так чтобы можно было потом написать другую программу и просто обратиться к этому массиву. И у меня есть пара вопросов.
Когда я заливаю прошивку, этот массив уже записывается куда-то во флеш, верно? Мне необходимо зафиксировать его так, чтобы он не пересекался с прошивкой. Как это сделать? Записать его на последнюю страницу? Как сделать так, чтобы сразу записать его куда надо, а не перезаписать уже существующий массив? Имеет ли смысл использовать SPL или проще будет работать с регистрами напрямую?

_________________
Я конечно все понимаю, но этого я не понимаю.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Ср янв 31, 2018 00:25:24 
Грызет канифоль
Аватар пользователя

Карма: -2
Рейтинг сообщений: 43
Зарегистрирован: Ср янв 17, 2018 13:09:14
Сообщений: 250
Рейтинг сообщения: 2
bezzabotna писал(а):
Кто нибудь работает сейчас с библиотекой SPL? Имеет ли смысл ее изучать и учиться по ней, ведь 90% уроков именно с ней.

Сам пользуюсь ею, довольно удобно и быстро в разработке. Но бывают моменты, когда она начинает мешать быстродействию или размеру кода. Например, при отправке через SPI быстрее будет пихать данные напрямую в регистр, чем пользоваться функцией SPL. Для работы с флэш я предпочел написать свои процедуры.
bezzabotna писал(а):
Когда я заливаю прошивку, этот массив уже записывается куда-то во флеш, верно?

Смотря как Вы его объявили. Если как константы с инициализацией, то да. Если как указатель, то нет.
bezzabotna писал(а):
Мне необходимо зафиксировать его так, чтобы он не пересекался с прошивкой. Как это сделать? Записать его на последнюю страницу? Как сделать так, чтобы сразу записать его куда надо, а не перезаписать уже существующий массив?

Честно говоря, суть вопроса не совсем ясна. Вам нужно один раз залить во флэш какой-то массив определенных значений, чтобы при последующих прошивках основной программы он оставался на своем месте нетронутый? И чтобы программы получали к нему доступ для чтения? Или программы могут перезаписывать эти значения?
У себя, например, я сделал хранение настроек так:
1. Оставил две последние страницы флэш под хранение настроек, линкеру указал размер флэша за вычетом этих двух страниц. То есть программа ни при каких обстоятельствах на них уже не залезет - линкер ругнется на недостаточную память.
2. В программе объявил структуру с переменными настроек в оперативке. При старте программа считывает настройки из последних страниц в эту структуру. В процедуру чтения передаю указатель на эту структуру и внутри этой процедуры этот указатель используется просто как адрес буфера, в который нужно считать из флэш количество байт, равное размеру структуры настроек.
3. В программе предусмотрен сброс настроек, при котором всем переменным структуры в оперативке присваиваются значения по умолчанию. После этого указатель на структуру передается в процедуру записи, которая, аналогично чтению, использует указатель как адрес буфера, из которого нужно записать в последние страницы флэш количество байт, равное размеру структуры.
Две страницы - это для повышения ресурса перезаписи. Настройки пишутся поочередно то в первую, то во вторую страницы. Если перезапись настроек не нужна или будет происходить редко, то можно использовать только одну страницу без возни с чередованием страниц.
bezzabotna писал(а):
Имеет ли смысл использовать SPL или проще будет работать с регистрами напрямую?

Если нет жестких требований к скорости исполнения и не упираетесь в ограничение размера прошивки, то SPL, конечно, удобнее. Но работать напрямую с регистрами - более предсказуемо и гибко, на мой взгляд :)


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

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
Кто нибудь работает сейчас с библиотекой SPL? Имеет ли смысл ее изучать и учиться по ней

SPL для STM32 закапывается, у ST бзик по поводу HAL.
для STM8 в хидерах есть такой вот комментарий от самих ST:
Код:
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME.

я склонен понимать его буквально (вообще они там про юридическую сторону вопроса), и использую SPL в основном как то самое "guidance only" - источник для копипасты с последующим выпиливанием всего лишнего.


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

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пн ноя 07, 2016 12:14:14
Сообщений: 134
Рейтинг сообщения: 0
Спасибо за ответы! Нужно было записать массив с инициализацией как константу. Но теперь у меня проблема как с ним обращаться правильно то есть я объявляю массив и указатели глобально
Код:
const uint16_t A[256] ={0,1,2,3,...}

uint16_t *point0;
uint16_t *point1;
....



Потом в функциях и теле программы мне надо к нему этими указателями обращаться, а он выдает ошибку в таких строках:
Код:
point0=&A[0];

и говорит мол сущности *point0 нельзя присвоить значение по адресу &A[0] несовместимые типы данных.

если я напишу :
Код:
*point0=A[0];

скомпилируется, но работать программа не будет.

Как мне правильно указывать на этот массив?

_________________
Я конечно все понимаю, но этого я не понимаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103 HAL: зранение данных во внутреннем флеше
СообщениеДобавлено: Чт фев 01, 2018 10:04:28 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Имя массива и есть указатель на его первый элемент.
К примеру передача указателя в качестве аргумента.
Прототип
Код:
my_function( const uint16_t *);

Вызов
Код:
my_function(A);


Код:
const  uint16_t *point0;
point0=A;
Или эквивалент
point0=&A[0];


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

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пн ноя 07, 2016 12:14:14
Сообщений: 134
Рейтинг сообщения: 0
Код:
point0=&A[0];


компилируется только при условии что point0 объявить как
Код:
const uint32_t *point0;


А он точно с флеша значения считывает а не с оперативки?
можно ли сделать так?
Код:
point0=read_flash(&A[0]);

_________________
Я конечно все понимаю, но этого я не понимаю.


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

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Вы лучше фрагмент кода приводите . Снова что ли калокубом страдаете?

Вот только что набросал на скорую рку и проверил .
Код:
const uint16_t  sine_wave[256*3] = {
0x180, 0x2CC, 0x33,
0x189, 0x2C7, 0x2F,

--cut---
uint16_t mem_buf[30];


void read_table(const uint16_t *src,uint16_t *dist)
{
   const uint16_t *pnt0;
   uint16_t *pnt1;
   pnt0=src;
   pnt1=dist;
   *pnt1=*pnt0;
}

--cut--

read_table(sine_wave,mem_buf);




Изображение
Изображение


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

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


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

Сейчас этот форум просматривают: ozzy и гости: 18


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

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


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