C_D
Понедельник, 03 августа 2015 г., 20:12
Кто -нибудь здесь работал с эмулированным EEPROM на STM32?
Я работаю над приложением, где мне нужно сделать калибровку одной из них и сохранить несколько байтов данных. Они будут писать очень редко (возможно, только один раз) и часто читают.
Я видел в потоке RTC, что в памяти было несколько байт хранения, которые поддерживаются аккумулятором RTC, однако я бы предпочел, чтобы эти калибровочные данные были заменены, даже если аккумулятор RTC заменяется.
Похоже, ST предоставила приложение, подробно описывающую их стратегию «эмулированного EEPROM»: AN2594
И есть реализация этого для клена: клено-эпок-стимуляция
Я собираюсь расследовать это дальше сегодня и посмотреть, смогу ли я его запустить.
Я работаю над приложением, где мне нужно сделать калибровку одной из них и сохранить несколько байтов данных. Они будут писать очень редко (возможно, только один раз) и часто читают.
Я видел в потоке RTC, что в памяти было несколько байт хранения, которые поддерживаются аккумулятором RTC, однако я бы предпочел, чтобы эти калибровочные данные были заменены, даже если аккумулятор RTC заменяется.
Похоже, ST предоставила приложение, подробно описывающую их стратегию «эмулированного EEPROM»: AN2594
И есть реализация этого для клена: клено-эпок-стимуляция
Я собираюсь расследовать это дальше сегодня и посмотреть, смогу ли я его запустить.
Martinayotte
Понедельник, 3 августа 2015 г., 20:24
Вы также можете использовать небольшой i2c eeprom, они дешевы, и вы можете получить довольно большие, такие как AT24C512.
Rogerclark
Понедельник, 3 августа 2015 г., 21:23
@C_d
Насколько я знал, библиотека EEPROM работает.
https: // github.com/rogerclarkmelbourne/ ... IES/EEPROM
Размер страницы на Maple Mini и т. Д. Составляет 1K, а на больших (устройствах высокой плотности) его 2K.
Насколько я знал, библиотека EEPROM работает.
https: // github.com/rogerclarkmelbourne/ ... IES/EEPROM
Размер страницы на Maple Mini и т. Д. Составляет 1K, а на больших (устройствах высокой плотности) его 2K.
C_D
Понедельник, 3 августа 2015 г., 23:06
Пабломуро
Чт 13 июля 2017 г. 2:15 утра
[Rogerclark - Пн, 03 августа 2015 г., 21:23] - @C_dG'day,
Насколько я знал, библиотека EEPROM работает.
https: // github.com/rogerclarkmelbourne/ ... IES/EEPROM
Размер страницы на Maple Mini и т. Д. Составляет 1K, а на больших (устройствах высокой плотности) его 2K.
Я заметил в библиотеке "eeprom" отсутствие функции "eeprom.Обновление », так что я добавил в eeprom.CPP Функция:
Uint16 eepromclass :: update (адрес uint16, данные Uint16)
{
If (eeprom.Читать (адрес)! = Данные)
{
Eeprom.написать (адрес, данные);
}
Uint16 status = ee_verifypagefullwritevariable (адрес, data);
Статус возврата;
}
А также добавлен в файл "eeprom.H "В разделе класса EepromClass:
Uint16 Обновление (Uint16 Adder, Uint16 Data);
Это правильно? Будет ли это работать?
Спасибо за замечательную работу "Arduino для STM32"
victor_pv
Чт 13 июля 2017 г., 2:30
[Пабломуро - Чт 13 июля 2017 г., 2:15 утра] -Функция записи уже включает в себя эту проверку:
G'day,
Я заметил в библиотеке "eeprom" отсутствие функции "eeprom.Обновление », так что я добавил в eeprom.CPP Функция:
Uint16 eepromclass :: update (адрес uint16, данные Uint16)
{
If (eeprom.Читать (адрес)! = Данные)
{
Eeprom.написать (адрес, данные);
}
Uint16 status = ee_verifypagefullwritevariable (адрес, data);
Статус возврата;
}
А также добавлен в файл "eeprom.H "В разделе класса EepromClass:
Uint16 Обновление (Uint16 Adder, Uint16 Data);
Это правильно? Будет ли это работать?
Спасибо за замечательную работу "Arduino для STM32"
Ee_verifypagefullWriteVariable (адрес, data);
Так что вам не нужна эта часть, и вы можете просто вернуть значение, возвращаемое write (). Такой как:
stephen@i7:~/sketchbook/hardware/Arduino_STM32/tools/linux/dfu-util$ ./dfu-util
bash: ./dfu-util: cannot execute binary file: Exec format error
stephen@i7:~/sketchbook/hardware/Arduino_STM32/tools/linux/dfu-util$
stephen@i7:~/sketchbook/hardware$ ls -l ~/sketchbook
lrwxrwxrwx 1 stephen stephen 17 Nov 9 17:04 /home/stephen/sketchbook -> sketchbook_stm32/
stephen@i7:~/sketchbook/hardware$ ls -l ~/sketchbook/hardware/
total 0
lrwxrwxrwx 1 stephen stephen 32 Nov 22 15:45 Arduino_STM32 -> ../../Arduino_STM32-201115-1325/
stephen@i7:~/sketchbook/hardware/Arduino_STM32/tools/src$ ./build_dfu-util.sh
Пабломуро
Чт 13 июля 2017 г. 3:13 утра
Спасибо, я скачаю последнюю версию, конечно, будет лучше.
Максиан
Солнце 12 ноября 2017 г. 13:48
Помоги мне! Каналы, приведенные после отключения мощности постоянного тока, не сохраняются. После подключения питания при чтении данных eEPROM = 0. Что я не так?
Я использую Arduino Ide с ядром STM32Duino
код:
Sketch uses 11,324 bytes (9%) of program storage space. Maximum is 122,880 bytes.
Global variables use 2,560 bytes of dynamic memory.
Failed to open serial device.
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
dfu-util: No DFU capable USB device available
dfu-util 0.8
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to [email protected]
Пито
Солнце 12 ноября 2017 г. 14:21
Вы смешиваете
if (buttonNumber == 0 && buttonState != 1) // TURN OFF RED LIGH ON POWER
{
digitalWrite(io_led[11], HIGH);
}
if (buttonNumber == 0 && buttonState != 0) // TURN ON RED LIGH ON POWER
{
digitalWrite(io_led[11], LOW);
}
Максиан
Солнце 12 ноября 2017 г. 15:15
[Пито - Солнце 12 ноября 2017 г. 14:21] -
Вы смешиваете
Serial.println(Serial(F("Teste"))); <= This doesn't WORK
Кбахи
Сб 21 апреля 2018 г. 12:06
Я запускаю этот пример для эмуляции EEPROM на черной таблетке STM32F103C8T6.
Когда я выбираю 3, прочитайте/записываю тест, я иногда получаю ошибку 81 (вне хранилища), а иногда (без действительной страницы).
Попытки 2K работали один раз (статус возвращен 0), но вернул AB или последующие попытки.
Эмуляция eeprom поддерживается на черных таблетках и синих таблетках?
Если нет, то какой способ сделать это? Всегда есть at24cxx i2c eeproms, но это означает дополнительную сложность и меньше штучек.
Когда я выбираю 3, прочитайте/записываю тест, я иногда получаю ошибку 81 (вне хранилища), а иногда (без действительной страницы).
Попытки 2K работали один раз (статус возвращен 0), но вернул AB или последующие попытки.
Эмуляция eeprom поддерживается на черных таблетках и синих таблетках?
Если нет, то какой способ сделать это? Всегда есть at24cxx i2c eeproms, но это означает дополнительную сложность и меньше штучек.
электрический
Сб 21 апреля 2018 г., 3:02
Я использую эмуляцию EEPROM с синей таблеткой и клоном Maple Mini уже несколько недель. У меня не было никаких проблем.
Rogerclark
Сб 21 апреля 2018 г., 3:55
Отлично работает и для меня.
Важный.
Это просто эмуляция. Если вы относитесь к нему как к настоящему EEPROM и выпустите тысячи циклов стирания / записи, вы будете носить вспышку памяти, очень быстро, поскольку у него всего 10 000 циклов переписывания - следовательно, она не очень полезна для регистрации данных.
Однако это хорошо для хранения настроек, которые не меняются очень часто
Важный.
Это просто эмуляция. Если вы относитесь к нему как к настоящему EEPROM и выпустите тысячи циклов стирания / записи, вы будете носить вспышку памяти, очень быстро, поскольку у него всего 10 000 циклов переписывания - следовательно, она не очень полезна для регистрации данных.
Однако это хорошо для хранения настроек, которые не меняются очень часто
Кбахи
SAT 21 апреля 2018 г. 16:41
Это не для сбора данных. Это для сохранения настроек. Когда определенные настройки изменятся по умолчанию, они будут написаны. Всего лишь горстка в неделю.
Обратите внимание, что приложение (контроллер телескопа) использует API Arduino, который использует 8 -битные аргументы, а затем строки 2 или 4 из них для 16 и 32 -битных значений.
Код обертки здесь: https: // github.com/hjd1964/onstep/blob/alpha/nv.час
Это работает для Arduino Mega 2560 и Teensy 3.х.
Тогда он хранит такие вещи:
Обратите внимание, что приложение (контроллер телескопа) использует API Arduino, который использует 8 -битные аргументы, а затем строки 2 или 4 из них для 16 и 32 -битных значений.
Код обертки здесь: https: // github.com/hjd1964/onstep/blob/alpha/nv.час
Это работает для Arduino Mega 2560 и Teensy 3.х.
Тогда он хранит такие вещи:
const int io_led[18] = {PC6, PG6, PG8, PG5, PG7, PD13, PD15, PD12, PD14, PG4, PG3, PC7, PG2, PB12, PD11, PD10, PB14, PB13};
Rogerclark
Сб 21 апреля 2018 г., 20:56
Основные функции для хранения данных в Flash (около верхней части удобного пространства) работают ОК
Я нахожу библиотеку EEPROM очень ограниченной.
Мы, вероятно, должны сделать, так это сделать новый либарарий с некоторыми лучшими функциями, так как действительно процесс..
Читать страницу в ram
Обновить оперативную память с новыми данными в некоторых местах
Проверьте, действительно ли данные изменились
Если данные изменились....
Разблокировать страницу в Flash
Стереть страницу в Flash
Напишите оператив
Блокировка вспышка
Я нахожу библиотеку EEPROM очень ограниченной.
Мы, вероятно, должны сделать, так это сделать новый либарарий с некоторыми лучшими функциями, так как действительно процесс..
Читать страницу в ram
Обновить оперативную память с новыми данными в некоторых местах
Проверьте, действительно ли данные изменились
Если данные изменились....
Разблокировать страницу в Flash
Стереть страницу в Flash
Напишите оператив
Блокировка вспышка