Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CF глючит - запарился уже
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > IDE/ATA/SATA/SAS/SCSI/CF
Foxx
Нажмите для просмотра прикрепленного файлаСуть проблемы: имеется плата с Atmega128 на борту, которая работает с CompactFlash. Плата разработана достаточно давно и до сих пор работала без проблем.
Недавно были закуплены карточки Transcend 1Gb 80x, с которой замечается следующих глюк: после включения питания плата работает нормально, память читается и пишется. Если карточку вытащить, а затем вставить "по-горячему", в 50-70% случаев возможно некорректное считывание определенных секторов (пропускаюся байты, причем всегда одни и те же). Стабильность проявляется и в том, какой именно сектор читается криво, следующие за ним сектора читаются нормально. Выводится карточка из комы выключением/включением питания. Иногда удается это сделать ее повторным вытаскиванием/вставлением. Проблема проявляется на 7 имеющихся платах и с шестью карточками (все одинаковые - Transcend 1Gb 80x). Другие карты (Transcend 256M 45x, Kingston 256M, A-Data 2Gb 120x) при подобных опытах ведут себя совершенно нормально.
На картинке приведен результат считывания сектора - внизу при нормальном чтении, свеху при кривом.
Народ, какие есть идеи? Голова уже распухла 07.gif

Вдогонку...
Заметил, что при неправильном чтении сектора теряются байты исключительно со значением 0xFF, то есть если идет подряд 5 байт 0xFF, реально считывается только 4. Поскольку глюк наблюдается при чтении корневой записи в системе FAT16, такие последовательности встречаются только у длинных имен или если имя содержит заглавные символы.
Переформатировал карточку, привел все имена в соответствии с FAT16 - не более 8 символов, без заглавных. Пока не глючит.
Хрень какая-то.
_LD
Были глюки чуть другого характера, но тоже проявлялись лишь на Transcend 80x.
У меня, правда, с ней работала ПЛИСина, но не важно. Я формировал срез сигналов CE и OE одновременно, поскольку в спецификации указано, что сетап одного относительно другого 0 нс. Все это работало на разных карточках, пока не попалась Transcend 80x - ей такое обращение не понравилось. Были очень "хитрые" глюки, сейчас не вспомню, какие именно. Пришлось чуть подвинуть срез ОЕ, сделать его попозже.
Может, мой опыт пригодится.
Foxx
Вроде разобрался...
Подал на CF питание 5В вместо 3,3В. Atmega также 5-вольтовая, видимо трабл заключался в уровнях сигналов.

Пока работает стабильно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.