|
AT45DB081D to AT45DB081Е, Ошибки при переходе на 081Е |
|
|
|
Mar 27 2015, 12:19
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Доброе время! Было в свое время разработано устройство на микроконтроллере LPC1778 и флешке AT45DB081D-SSU. Последняя использовалась для хранения таблиц с коэффициентами. Эту флешку постранично могло обновлять программное обеспечение. Запись во флешку делается при помощи команды 0x82 (Main Memory Page Program through Buffer 1 with Built-In Erase), для чтения использую 0xD2 (Main Memory Page Read). Все работало замечательно, пока AT45DB081D-SSU не сняли с производства. На замену ей пришла AT45DB081E от Adesto, которую мы установили в новую партию. И тут начались чудеса. После создания тестовых программ, выяснилось, что данные записываются некорректно, причем может во всей памяти записаться некорректно один байт, а может и вся страница, а может и все нормально записаться. Причем это не от чего не зависит, глючит спонтанно. Даже ввели верификацию страниц и повторную запись. Однако выяснилось, что контрольная сумма данных не совпадала, даже когда постраничная верификация и перезаписть проходила на ОК. Т.е. запись одной страницы может убить данных в другой. Думали, что флешки бракованные. Купили в проверенном месте - тоже самое. Подскажите, в чем может быть причина? Функция записи страницы приведена ниже. (используется 264 байтная страница) Код BOOL at45db081d::write264(WORD page, BYTE *pBuf) { unsigned int i;
if(page > MAX_PAGES) return FALSE;// FALSE; SET_AT45D_CS(); reg[0] = 0x82; reg[1] = page >> 7; reg[2] = page << 1; reg[3] = 0x00; pSpi->transfer(reg, 4); pSpi->transfer(buf, 264); CLR_AT45D_CS(); for(i = 0xFFFFFFFF; i > 0; i--) { if(status() & 0x80) break; } if(i == 0) return FALSE; if(status() & 0x20) // EPE bit return FALSE; return TRUE; }
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
 |
Ответов
|
Mar 30 2015, 06:09
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686

|
Vitaliy_ARMКод pSpi->transfer(buf, 264); Можете пояснить? Всегда записывается буфер длиной 264 Байта? А не пробовали протестировать с записью 4, 128, 250 Байт, к примеру? Ошибка повторяется?
|
|
|
|
|
Mar 30 2015, 12:32
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686

|
Цитата(jcxz @ Mar 30 2015, 15:26)  Прежде чем что-то советовать, хоть даташит откройте. В AT45D невозможно записать меньше страницы. Ступил. Предполагал то, что не могло ли писаться 264 байта при организации страниц флэшки по 256, но здесь не тот случай. Цитата В пн, как появлюсь на работе, надо глянуть - какие мелкосхемки стоят в последних экземплярах.... Так что там в "последних экземплярах"?
|
|
|
|
Сообщений в этой теме
Vitaliy_ARM AT45DB081D to AT45DB081Е Mar 27 2015, 12:19 Altemir CS после записи отпускали? Бит EPE смотрели в стат... Mar 27 2015, 12:32 Vitaliy_ARM Цитата(Altemir @ Mar 27 2015, 16:32) CS п... Mar 27 2015, 12:43  alag57 Цитата(Vitaliy_ARM @ Mar 27 2015, 17:43) ... Mar 27 2015, 13:58   Vitaliy_ARM Цитата(alag57 @ Mar 27 2015, 17:58) Код r... Mar 27 2015, 16:55    alag57 Цитата(Vitaliy_ARM @ Mar 27 2015, 21:55) ... Mar 27 2015, 20:32     jcxz У нас также выпускаются несколько устройств на LPC... Mar 28 2015, 04:26 MobyDick На всякий случай отмечу, что в том документе они у... Mar 27 2015, 14:34 mcheb Я на какой то флэшке так делал после посылки буфер... Mar 27 2015, 15:25    aaarrr Цитата(Vitaliy_ARM @ Mar 30 2015, 22:24) ... Mar 30 2015, 20:16   jcxz Цитата(Altemir @ Mar 30 2015, 18:32) Так ... Mar 31 2015, 03:10 alag57 Цитата(Vitaliy_ARM @ Mar 27 2015, 17:19) ... Mar 30 2015, 19:45 Altemir Нашли у себя AT45DB041E. На корпусе сверху маркиро... Mar 31 2015, 07:00 aaarrr Хм, а с режимом SPI не напутано? По симптомам похо... Mar 31 2015, 07:17 esaulenka Много лет назад наступил на грабли с AT45DBxxxD.
... Apr 3 2015, 10:58 uriy У нас в изделии заменена 161D на 161E. Уже несколь... Apr 5 2015, 16:46 Velund С этими чипами (только АТ45DB161 а не 081) один ра... Apr 9 2015, 00:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|