Господа! Прошу простить меня за беспокойство! Проблема локализована (вроде): причиной всей заварухи был плохая пропайка. В отчаянии нажал пальцем на корпус микросхемы, и она стала давать ответы. Хотя раньше осциллом проверял - все сигналы типа доходят. Но удивительно другое. Если была плохая связь по SPI в результате недостаточного контакта или еще чего-то, то почему не работало лишь частично, а именно - из использующихся команд не работала
только команда чтения статуса? Как такое может быть?
На других экземплярах причина оказалась именно в неправильном режиме SPI, который подходил для 'B', но не подходит для 'D'.
Просто так получилось по иронии судьбы, что я, для экспериментов и исследования взяв, на свой взгляд, плату с самым стабильным повторением эффекта (казалось бы, того же самого), долго мучился с ней по совсем другой причине - плохие контакты...
Итак, Atmel оказался ни при чем (по крайней мере, криминала нет), это я ступил. Поэтому сам отвечаю на свои же вопросы:
Цитата
Как бы гарантированно читать регистр статуса? Сигнал RDY/BUSY на внешней ноге - это хорошо, а результат сравнения откуда тогда брать?
1. Правильно настроить SPI: CPOL = 1, CPHA = 1 (при CPHA = 0 также работает, но при CPOL = 0 не работает никак), такую конфигурацию называют обычно SPI Mode 3.
2. Использовать команду чтения статуса 0xD7, про устаревший ("legacy") код команды 0x57 - забыть.
3. Убедиться в том, что все хорошо пропаяно, сигналы соответствуют нормам и т.д. и т.п.
Цитата
а какие еще команды "могут не работать" в этих флэшках?
Никакие. Все, по крайней мере из обычно используемых, работают. Однако с плохими контактами может быть всякое - что-то может работать, а что-то нет. Здесь Atmel, ясное дело, не при чем, все вопросы к монтажникам/разводчикам/электронщикам.
Сообщение отредактировал Ykidia - Apr 3 2007, 16:40