Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
22.03.2009, 18:53
|
|
Временная регистрация
Регистрация: 28.05.2007
Адрес: Москва
Сообщений: 66
Сказал спасибо: 23
Сказали Спасибо 54 раз(а) в 12 сообщении(ях)
|
Программное определение типа EEPROM
Здравствуйте, уважаемые коллеги!
Хочу попросить у вас совета.
В текущем проекте используется микросхема serial EEPROM типа 24c64 (8k*8бит), используется для хранения 8-байтных кусочков информации (ID,логи). В хвосте лежит конфигурация устройства, настройки и т.п. (тоже 8 байт).
Шеф попросил сделать устройство гибче, дабы можно было втыкать туда микросхемы от 24с32 до 24с512, а программа бы сама определяла - что воткнуто - и работала с тем объемом хранения, который определила.
Я долго штудировал pdf-ы, надеясь, что компания-разработчик таки предусмотрела какую-нибудь метку, какой-нибудь DeviceID. Не нашел.
Ситуация осложняется тем, что втыкаемая микросхема уже может содержать важную информацию и методом записи с отловом noAck не подходит - можно повредить имеющиеся записи.
Пробовал читать предпоследнюю ячейку, постепенно увеличивая адрес - так мелким EEPROM-ам совершенно пофигу старшие биты большого адреса - они их игнорируют.
Подскажите, может есть какой-то другой способ определить тип (объем) воткнутой EEPROM-ки программным способом, не прибегая к конфигурационным перемычкам?
Заранее спасибо!
|
|
|
|
22.03.2009, 22:03
|
|
Гражданин KAZUS.RU
Регистрация: 02.03.2005
Сообщений: 923
Сказал спасибо: 155
Сказали Спасибо 444 раз(а) в 202 сообщении(ях)
|
Например читаем-пишем последнюю ячейку как для 24с64, и сразу проверяем последнею, как для 24с32 - если переписалась, значить 24с32. и так далее. Выяснив объем еепром - нетрудно восстановить байт. Можно попробовать сначало определить - чистая еепром или что на ней записано. Если чистая - пишем читаем без проблем. если есть информация: например минимальный объем 4 кило, читаем как 8 кило, подсчитываем CRC для младших 4 кило и для старших 4 кило, если CRC совпадают - вернее всего это 4 кило еепром, или 8 - но с одинаковыми блоками. И так далее ![Валяюсь от смеха](images/smilies/icon_biggrin.gif) . Может лучше читать как 512, подсчитываем CRC для каждых 4 кбайт, сравнением CRC определяем - какой объем.
|
|
|
|
23.03.2009, 09:10
|
|
Временная регистрация
Регистрация: 28.05.2007
Адрес: Москва
Сообщений: 66
Сказал спасибо: 23
Сказали Спасибо 54 раз(а) в 12 сообщении(ях)
|
Спасибо!
Про CRC я как-то сразу не подумал...
только вот при чистой или свежеобнуленной памяти блоки будут одинаковые ![Очень расстроен](images/smilies/icon_verysad.gif) Придется заполнять их случайными байтами...
|
|
|
|
24.03.2009, 18:44
|
|
Гражданин KAZUS.RU
Регистрация: 02.03.2005
Сообщений: 923
Сказал спасибо: 155
Сказали Спасибо 444 раз(а) в 202 сообщении(ях)
|
Сообщение от Jendoss
|
Спасибо!
Про CRC я как-то сразу не подумал...
только вот при чистой или свежеобнуленной памяти блоки будут одинаковые Придется заполнять их случайными байтами...
|
Не проблема, генератор псевдослучайной последовательности - если не сталкивались, можно хотя бы у Хоровица Хилла посмотреть. лет надцать назад - самый удачный тест для оперативной памяти Спектрума был на псевдослучайной последовательности, остальные тесты на классических алгоритмах типа бегущая строка, столбец, шахматы и многие другие, пропускали дефектные ячейки. Если CRC соответсвует памяти заполненой FF или 00, тогда смело заполняем псевдослучайной последовательностью, и проверяем CRC. Объем памяти определить тут уже элементарно, заодно и хороший тест на битые ячейки.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:12.
|
|