95640 eeprom чем читать
95640 eeprom чем читать
Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

BIGGGI ![]() | ||||
Зарегистрирован: Сб июн 26, 2010 21:03:09 |
| |||
![]() | ||||
![]() | Страница 1 из 1 | [ Сообщений: 3 ] |
Часовой пояс: UTC + 3 часа
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
SPI EEPROM 95640WQ прочитать/записать инструменты STLINKv3 AVRDRAGON
Добрый вечер, не знаю какая лучше всего ветка подойдет для того, чтобы задал вопрос. Но по моему мнению эта больше всего подходит. Прошу если не так перенести в необходимую.
Есть EEPROM SPI 95640WQ
с неё необходимо считать прошивку и отредактировать для последующей записи.
В наличии ch340, Pl2303, CP2102 как понимаю rs232 и не подойдут сюда. Только CH341 который необходимо приобрести. У него есть SPI.
Прошивки SPI и EEPROM для ТВ
Здравствуйте.Хотелось узнать, возможно-ли прочесть на понятном языке HEX-код в прошивках.и внести.
STM32F103 + SPI EEPROM M95M01
Всем привет! Пытаюсь написать алгоритм работы с SPI EEPROM, но из-за недостатка опыта сомневаюсь.
Внешняя eeprom с шиной spi
Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в.
Взаимодействие МК c внешней EEPROM по SPI
Здравствуйте! Пожалуйста, объясните или (еще лучше) приведите пример как микроконтроллер (например.
STM32F103C8 FATFS SPI EEPROM. Hardfault при вызове f_close
Доброго времени суток. Пытаюсь развернуть FATFS на мегабитной SPI EEPROM. Столкнулся с проблемой.
Не могу прочитать EEPROM ATtiny13 через оболочку SinaProg
Помогите пожалуйста разобраться с программатором 2ffbb на PinBoardII. Устал плясать с бубном, «не.
как записать масив в eeprom используя eeprom_write_block
Всем привет! Нужно записать массив с данными типа uint8_t в eeprom без использования EEMEM.
Всем привет
есть два магнитафона где неизвестен код
у меня есть етот прибор Xgpro TL866II Plus
кто может объяснить как мне прочитать EEPROM
RCD200MP3 6Q0035152C VWZ1Z5F3737252
Beta 4 3B0035152A VWZ2Z2W7912731






Обратиться к специалистам.
Прибор это хорошо да воспользоваться прибором некому.
по етому видео я делал уже одно и все получилось но ето RCD200MP3 другая плата
я пробывал читать етот 95640WP но почемуто у меня он не читается
а так второй магнитофон изнутри
сдесь я пробывал читать 082C
тоже не читается

Так с е тим и надо разбираться.
И если по быстренькому не получается.
Полезно соотнести даташит с возможностями программатора.
Опыты проводить на выпаянной микросхеме.
С другим аппаратом сначала надо найти эту самую EEPROM
Для этого погулить циферки на микросхемах с добавлением волшебного слова datasheet
То что проглядывается на фотках к EEPROM отношение не имеет.
Работа с EEPROM памятью
Вот и добрались мы до третьего типа памяти, доступного на Arduino: EEPROM (англ. Electrically Erasable Programmable Read-Only Memory – электрически стираемое перепрограммируемое постоянное запоминающее устройство (ЭСППЗУ)), она же энергонезависимая память. Вспомним остальные типы памяти, Flash и SRAM, и их возможности по хранению данных:
| Тип | Чтение из программы | Запись из программы | Очистка при перезагрузке |
| Flash | Да, PROGMEM | Можно, но сложно | Нет |
| SRAM | Да | Да | Да |
| EEPROM | Да | Да | Нет |
Простыми словами: EEPROM – память, к которой мы имеем полный доступ из выполняющейся программы, т.е. можем во время выполнения читать и писать туда данные, и эти данные не сбрасываются при перезагрузке МК. Круто? Круто. Зачем?
Единственный важный момент: EEPROM имеет ресурс по количеству перезаписи ячеек. Производитель гарантирует 100 000 циклов записи каждой ячейки, по факту это количество зависит от конкретного чипа и температурных условий, независимые тесты показали 3-6 миллионов циклов перезаписи при комнатной температуре до появления первой ошибки, т.е. заявленные 100 000 взяты с очень большим запасом. Но есть небольшое уточнение – при заявленных 100 000 циклах перезаписи гарантируется сохранность записанных данных в течение 100 лет при температуре 24°C, если перезаписывать по миллиону – данные испортятся быстрее. В то же время количество чтений каждой ячейки неограниченно.
EEPROM представляет собой область памяти, состоящую из элементарных ячеек с размером в один байт (как SRAM). Объём EEPROM разный у разных моделей МК:
Основная задача при работе с EEPROM – не напутать с адресами, потому что каждый байт имеет свой адрес. Если вы пишете двухбайтные данные, то они займут два байта, и следующие данные нужно будет писать по адресу как минимум +2 к предыдущему, иначе они “перемешаются”. Рассмотрим пример хранения набора данных разного типа, расположенных в памяти последовательно друг за другом (в скобках я пишу размер текущего типа данных, на размер которого увеличится адрес для следующего “блока”):
Важный момент: все ячейки имеют значение по умолчанию (у нового чипа) 255.
Скорость работы с EEPROM (время не зависит от частоты системного клока):
Возможны искажения при записи данных в EEPROM при слишком низком VCC (напряжении питания), настоятельно рекомендуется использовать BOD или вручную мониторить напряжение перед записью.
При использовании внутреннего тактового генератора на 8 МГц, его отклонение не должно быть выше 10% (7.2-8.8 МГц), иначе запись в EEPROM или FLASH скорее всего будет производиться с ошибками. Соответственно все разгоны внутреннего клока недопустимы при записи EEPROM или FLASH.
Для работы с EEPROM в среде Arduino у нас есть целых две библиотеки, вторая является более удобной “оболочкой” для первой. Рассмотрим их обе, потому что в “чужом скетче” может встретиться всё что угодно, да и совместное использование этих двух библиотек делает работу с EEPROM невероятно удобной.
Библиотека avr/eeprom.h
Запись:
Обновление:
Макросы:
Рассмотрим простой пример, в котором происходит запись и чтение единичных типов данных в разные ячейки:
Точно так же можно хранить массивы:
В библиотеке avr/eeprom.h есть ещё один очень полезный инструмент – EEMEM, он позволяет сделать автоматическую адресацию данных путём создания указателей, значение которым присвоит компилятор. Рассмотрим пример, в котором запишем в EEPROM несколько переменных, структуру и массив, раздав им автоматически адреса. Важный момент! Адреса задаются снизу вверх по порядку объявления EEMEM, я подпишу их в примере:
EEMEM сам раздаёт адреса, основываясь на размере данных. Важный момент: данный подход не занимает дополнительного места в памяти, т.е. нумерация адресов вручную цифрами, без создания EEMEM “переменных”, не занимает меньше памяти! Давайте вернёмся к нашему первому примеру и перепишем его с EEMEM. При указании адреса через EEMEM нужно использовать оператор взятия адреса &
Ну и напоследок, запись и чтение блока через EEMEM. Адрес придётся преобразовать в (const void*) вручную:
Таким образом можно добавлять “данные” для хранения в EEPROM прямо по ходу разработки программы, не думая об адресах. Рекомендую добавлять новые данные над старыми, чтобы адресация не сбивалась (напомню, адресация идёт снизу вверх, начиная с нуля).
Библиотека EEPROM.h
Библиотека EEPROM.h идёт в комплекте с ядром Arduino и является стандартной библиотекой. По сути EEPROM.h – это удобная оболочка для avr/eeprom.h, чуть расширяющая её возможности и упрощающая использование. Важный момент: подключая в скетч EEPROM.h мы автоматически подключаем avr/eeprom.h и можем пользоваться её фишками, такими как EEMEM. Рассмотрим инструменты, которые нам предлагает библиотека:
В отличие от avr/eeprom.h у нас нет отдельных инструментов для работы с конкретными типами данных, отличными от byte, и сделать write/update/read для float/long/int мы не можем. Но зато у нас есть всеядный put/get, который очень удобно использовать! Также можем пользоваться тем, что нам даёт avr/eeprom.h, которая подключается автоматически с EEPROM.h. Рассмотрим пример с чтением/записью байтов:
Гораздо удобнее чем write_block и read_block, не правда ли? Put и get сами преобразовывают типы и сами считают размер блока данных, использовать их очень приятно. Они работают как с массивами, так и со структурами.
EEPROM.h + avr/eeprom.h
Ну и конечно же, можно использовать одновременно все преимущества обеих библиотек, например автоматическую адресацию EEMEM и put/get. Рассмотрим на предыдущем примере, вместо ручного задания адресов используем EEMEM, но величину придётся привести к целочисленному типу, сначала взяв от него адрес, т.е. (int)&адрес_еемем
С возможностями библиотек разобрались, перейдём к практике.
Реальный пример
Рассмотрим пример, в котором происходит следующее: две кнопки управляют яркостью светодиода, подключенного к ШИМ пину. Установленная яркость сохраняется в EEPROM, т.е. при перезапуске устройства будет включена яркость, установленная последний раз. Для опроса кнопок используется библиотека GyverButton. Для начала посмотрите на первоначальную программу, где установленная яркость не сохраняется. Программу можно чуть оптимизировать, но это не является целью данного урока.
Полезные трюки
Инициализация
Под инициализацией я имею в виду установку значений ячеек в EEPROM “по умолчанию” во время первого запуска устройства. В рассмотренном выше примере мы действовали в таком порядке:
При первом запуске кода (и при всех дальнейших, в которых в ячейку ничего нового не пишется) переменная получит значение, которое было в EEPROM по умолчанию. В большинстве случаев это значение не подойдёт устройству, например ячейка хранит номер режима, по задумке разработчика – от 0 до 5, а из EEPROM мы прочитаем 255. Непорядок! При первом запуске нужно инициализировать EEPROM так, чтобы устройство работало корректно, для этого нужно определить этот самый первый запуск. Можно сделать это вручную, прошив программу, которая забьёт EEPROM нужными данными. Далее прошить уже рабочую программу. При разработке программы это очень неудобно, ведь количество сохраняемых данных может меняться в процессе разработки, поэтому можно использовать следующий алгоритм:
Рассмотрим на всё том же примере со светодиодом и кнопками:
Сброс до “заводских”
Скорость
Как я писал выше, скорость работы с EEPROM составляет:
При большом желании можно использовать ячейку вместо переменной, т.е. выше мы с вами рассматривали пример, в котором EEPROM читался в переменную в программе, и дальнейшая работа происходила уже с ней. При сильной нехватке оперативной памяти можно читать значение напрямую из EEPROM, ведь это занимает ничтожно мало времени. А вот с записью всё гораздо хуже, там целых 3.3 мс. Например так:
Для изменения значения придётся прочитать ячейку, выполнить нужные операции, и снова в неё записать. Ещё один удобный хак: можно ввести макросы на чтение и запись определённых значений, например:
Получим удобные макросы, с которыми писать код будет чуть быстрее и удобнее, т.е. строка SET_MODE(3) запишет 3 в ячейку 0
Уменьшение износа
Важная тема: уменьшение износа ячеек частыми перезаписями. Ситуаций может быть много, интересных решений для них – тоже. Рассмотрим простейший пример – всё тот же код со светодиодом и кнопкой. Делать будем следующее: записывать новое значение будем только в том случае, если после последнего нажатия на кнопку прошло какое-то время. То есть нам понадобится таймер (воспользуемся таймером на millis), при нажатии на кнопку таймер будет сбрасываться, а при срабатывании таймера будем писать актуальное значение в EEPROM. Также понадобится флаг, который будет сигнализировать о записи и позволит записать именно один раз. Алгоритм такой:
Посмотрим на всё том же примере:
Вариантов уменьшения износа ячеек EEPROM можно придумать много, уникально под свою ситуацию. Есть даже библиотеки готовые, например EEPROMWearLevel. Есть очень интересная статья на Хабре, там рассмотрено ещё несколько хороших алгоритмов и даны ссылки на ещё большее их количество.
Видео
Тема: Audi A4, 2006, 8E0959655G, eeprom 95640.
Опции темы
Audi A4, 2006, 8E0959655G, eeprom 95640.
Re: Audi A4, 2006, 8E0 959 655 G
Пробуйте перезалить EEPROM блока.
Эта процедура только со снятием и разборкой блока SRS.
Re: Audi A4, 2006, 8E0 959 655 G
Если блок на проце CR16,то наверно поплыла флаш память- ресетится,на время, через фишку двукнопочной приблудой.
Re: Audi A4, 2006, 8E0 959 655 G
Спасибо за ответы! Понимаю что тут не любят отвечать на банальные вопросы, но двухкнопочная приблуда как сооружается, может где то описано. Если что ещё можно попробовать через диагностический разъём, я бы докупил кабель какой-нибудь.
Re: Audi A4, 2006, 8E0 959 655 G
Сами Вы навряд ли сможете соорудить такую приблуду.
Похоже Вы не понимаете, что нужно пробовать решение
программное для начала, а не просто кнопками.
Re: Audi A4, 2006, 8E0 959 655 G
?
Согласен что не понимаю, вот и хотел разобраться почему на ровном месте так произошло, и как решают эту проблему. С перепрошивкой до этого сталкивался только с MPPS. Блоки я не разбираю.
Re: Audi A4, 2006, 8E0 959 655 G
Найдите у себя в городе специалиста.
Снимите блок сами (в качестве экономии денег) и увезите ему.
Машина не новая и простая, по этому прошивка будет стоить не дорого.
Re: Audi A4, 2006, 8E0 959 655 G
Так и сделаю. Теперь понимаю о чем речь. Спасибо!
Re: Audi A4, 2006, 8E0 959 655 G
Снял бок, отдал тому,кто имеет представление
в радиоэлектронике и имеет программатор и переписал микросхему 95640 рабочей прошивкой. Я бы выложил, но тебе она всё равно будет не доступна, мало у тебя сообщений, чтобы файлы скачать. Перед снятием блока, подключи диагностику и запиши кодировку блока. У китаёз Air reset 20 баксов стоит. Подкдючил к разъёму у всё..Высокое качество авто reseter инструмент для Audi и для автомобиля vw инструменты авто средство сброса купить на AliExpress Но нет гарантии, что он может удалить твою ошибку, он предназначен для удаления краша. Возможно и возьмет, так как заявлен для удаления ошибки 65535, это почти как 00003
Re: Audi A4, 2006, 8E0 959 655 G
Почему же, выше выложенное вложение я отлично скачал. Так что если что, то выкладывай. Да и на почту можно прислать. Я бы купил airbag reseter, но не понимаю откуда там появилась краш дата если не было удара. Спасибо.




