Автор |
Съобщение |
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 7:04 pm Мнения: 2581 Местоположение: Велико Търново / София
|
Re: Въпрос относно W25Q80
Ами направи го със два сектора. Четен и нечетен (текущ / алтернативен). Прочиташ текущия сектор, модифицираш данните, триеш алтернативния сектор, пишеш в алтернативния. Така ще имаш по 2 сектора (блока) с настройки. За да знаеш кои са текущите трябва в края на блока трябва да имаш номер на настройките char nomer_nastroika всяка следваща настройка инкрементира тази стойност. Като прочетеш 2та блока, в края ще прочетеш номера на настройките (сесията настройки). Който блок е с по-голям номер, той е последния. Ако случайно не се запише новият блок докрай, ще остане с по-малък номер. И така няма да е валиден блока после при проверка. Схемата е следната валидираш данните с по-голям nomer_nastroika, модифицираш и пишеш в блока с по-малък номер.... и накрая не забравяй 0 > 255.
|
Пон Яну 06, 2020 9:25 pm |
|
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 10:22 pm Мнения: 3074
|
Re: Въпрос относно W25Q80
Сектор Б се презаписва 200 мс след сектор А. При ресет се търси коректен сектор, ако и двата са коректни -А се избира за валиден и ако трябва - се копира върху Б. Ако само Б е коректен - копира се върху А.
|
Пон Яну 06, 2020 9:32 pm |
|
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 7:04 pm Мнения: 2581 Местоположение: Велико Търново / София
|
Re: Въпрос относно W25Q80
Вариант Б: захранването на процесора през диод и след него електролитен кондензатор. Със пин следиш захранването преди диода. Ако то е отпаднало се забранява ъпдейта на настройки. Електролита трябва да осигурява ток за времето на един ъпдейт. Така ще минеш само с един сектор.
|
Пон Яну 06, 2020 9:44 pm |
|
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 12:48 pm Мнения: 4393 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
Re: Въпрос относно W25Q80
Вариянт С. Слагаш феропамет и си спестяваш проблемите
_________________ ... ако трети ден не ти се работи... това означава, че е сряда !
|
Пон Яну 06, 2020 11:19 pm |
|
|
Bai Ui
Ранг: Форумен бог
Регистриран на: Вто Ное 06, 2018 4:18 pm Мнения: 1188
|
Re: Въпрос относно W25Q80
F-RAM-a става голям хит напоследък в аероспейс индустрията.
|
Вто Яну 07, 2020 7:01 am |
|
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 12:48 pm Мнения: 4393 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
Re: Въпрос относно W25Q80
Ми незнам за напоследъка, аз слагах феропамети в един дизайн още 1999-2000. Може би чак сега има сертифицирани за аероспейс...
_________________ ... ако трети ден не ти се работи... това означава, че е сряда !
|
Вто Яну 07, 2020 11:44 am |
|
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 3:11 pm Мнения: 3742 Местоположение: София
|
Re: Въпрос относно W25Q80
Не модифицираш. Записваш веднъж и ако се наложи да променяш ( нали е малко по обем ), направо добавяш нов запис на всичките си данни. И така, докато свърши мястото. След това триеш ...
|
Вто Яну 07, 2020 5:09 pm |
|
|
ilkor
Ранг: Форумен бог
Регистриран на: Вто Мар 31, 2009 9:25 am Мнения: 1391
|
Re: Въпрос относно W25Q80
А как разбира после от къде трябва чете?
|
Вто Яну 07, 2020 5:45 pm |
|
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 7:04 pm Мнения: 2581 Местоположение: Велико Търново / София
|
Re: Въпрос относно W25Q80
Ами нали това е моята идея, четни и нечетни записи. Този на който последният байт му е по-голяма стойността, той е последният валиден запис. Аз предложих да ги върти 0 до 255 но 255 е 0xFF което е невалиден запис - изтрит блок и спрял ток по време на записа... Всъщност може да ги върти от 0 до 2 числата. Ако имаш 2 записа с последен байт 0x00 и последен 0x01 този който е 0х01 е валидния. Ако правиш модификация, записваш на мястото на блока със 0х00 и го правиш 0х02. След тази интервенция имаш блокове 0х01 и 0х02 валидният е 0х02, защото е с по-голям номер. Фактически номера на модификацията е последният байт от блока. Този байт би трябвало да се записва атомично, или се записва на една стъпка или не . Ако се направи нова модификация на настройките, новият блок ще е 0х00 и ще бъде записан на мястото на 0х01 . Важното уточннение е че ако имаш: 0х02 и 0х00 валидният е 0х00 ако имаш 0х00 и 0х01 валидният е 0х01 ако имаш 0х01 и 0х02 валидният 0х02 ако единият от блоковете е 0xFF валиден е другият ако и двата са 0xFF - нещо си омазал яко , но не би трябвало да се стига до тази ситуация... идеята е да се пише винаги в алтернативен блок, защото ако не завърши записа, остава текущият блок. Достатъчни са 2 блока (сектора)
|
Вто Яну 07, 2020 6:05 pm |
|
|
Bai Ui
Ранг: Форумен бог
Регистриран на: Вто Ное 06, 2018 4:18 pm Мнения: 1188
|
Re: Въпрос относно W25Q80
Не само, всяка компания си има approved components database, тя се гради с години на база на успешно и безпроблемно използване в предишни проекти, освен това тая индустрия кара малко по инерция, трудно усвоява нови технологии и често нови проекти се базират на стари схемни решения, в някои компании пък използват готови блокове - common circuit blocks и само ги редят по платката като блокчета лего. p.s. феропаметите не са били винаги толкова успешни, ранните памети са се износвали дори само от четенe
|
Вто Яну 07, 2020 7:30 pm |
|
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 3:11 pm Мнения: 3742 Местоположение: София
|
Re: Въпрос относно W25Q80
При стартиране чете наред докато стигне до еф-ове. Там е следпоследният запис.
|
Вто Яну 07, 2020 7:51 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: Въпрос относно W25Q80
The Page Program instruction allows from one byte to 256 bytes (a page) of data to be programmed at previously erased (FFh) memory locations. демек пишеш си инкрементално записи стил: запис в еепром и кат стигнеш края на сектора триеш алтернативния ( стария ) сектор ( 4к ) и пак така... зора ти е да си намериш последния валиден запис при старт ... нящо CRC и си в джаза
_________________ main[-1u]={1};
|
Вто Яну 07, 2020 8:09 pm |
|
|
ilkor
Ранг: Форумен бог
Регистриран на: Вто Мар 31, 2009 9:25 am Мнения: 1391
|
Re: Въпрос относно W25Q80
Ииии това ще трябва да е голямо четене ... Срещу един допълнително опроводен CS и запоен EEPROM директно върху флаша проблема се решава най-елегантно за въпросните 10 броя устройства.
|
Вто Яну 07, 2020 8:42 pm |
|
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 3:11 pm Мнения: 3742 Местоположение: София
|
Re: Въпрос относно W25Q80
Някои сричат, други четат умно и затова бързо. Няма да спорим.
|
Вто Яну 07, 2020 9:50 pm |
|
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 12:01 pm Мнения: 2201
|
Re: Въпрос относно W25Q80
Благодаря за коментарите! Всичко е наред! Просто използвам цял блок данни. Чете се направо целия блок(на практика може, само колкото е необходмо), промените се правят директно в масива като се използват същите адреси като в паметта(адресът сочи клетка от масива), после се трие блока и се записват промените. Доста проста и за сега работеща е промяната. Става да се работи със страници, но няма команда за триене на страница - пак се трие блок. Само малко нерви дето потроших, докато схвана какво всъщност става... ПП: И да, интегралата е доста бавна. Мога да опитам утре да вдигна още скоростта на spi, ама като гледам то си има закъснения в кода и едва ли ще е има голям ефект.
_________________www.elkran.com
|
Вто Яну 07, 2020 10:11 pm |
|
|