Помогите разобратся с чтением/записью в EEPROM
Короче у меня есть EEPROM микруха Atmel AT93C66A. Она четырьмя контактами (CS, SK, DI, DO) подведена к интеловскому эзернет контроллеру 82546GB, который использует её для хранения прошивки.
У этого контроллера есть регистр, 4 бита которого выведены на эти 4 провода. Эти биты там таки называются (CS, SK, DI, DO).
Прочитав весь интеловский даташит по этому контроллеру и даташит по самой микрухе Атмел я вроде бы всё понял, но при этом осталас куча чисто практических непоняток:
на пример вот если я хочу прочесть одино слово из епрома, то я должен что? выставить в бит CS 1, а потом в DI согласно протоколу передачи пихать побитно адрес ячейки, которую хочу прочесть, и сразу после этого читать побитно из DO значение ячейки?
Зачем тогда нужен сигнал SK ? и нужно ли мне постоянно поддерживать сигнал CS ? или одиночной записи и сброса после окончания операции чтения достаточно? И в каком месте я должен указывать оп-код операции (читать я хочу или писать?)
Нужно ли мне соблюдать все тайминги описанные в протоколе общения с микросхемой Atmel, или они соблюдаются уже внутренней логикой интеловского контроллера?.
непонятно.
на пример вот если я хочу прочесть одино слово из епрома, то я должен что? выставить в бит CS 1, а потом в DI согласно протоколу передачи пихать побитно адрес ячейки, которую хочу прочесть, и сразу после этого читать побитно из DO значение ячейки?
Вообще-то EEPROM эта понимает обычный синхронный последовательный интерфейс, типа SPI. В твоем же случае, если контроллер не имеет SPI интерфейса, а управляющие выводы просто повешены на обычный цифровой порт, то весь протокол общения придется отрабатывать вручную, именно так, как ты сказал.
Зачем тогда нужен сигнал SK ? и нужно ли мне постоянно поддерживать сигнал CS ?
SK - это тактирующий сигнал (clock) его нужно генерировать обязательно (т.к. это все же синхронный последовательный интерфейс)
CS - (Chip Select), его нужно поддерживать постоянно, иначе микруха EEPROM отрубит свои порты от внешнего мира.
И в каком месте я должен указывать оп-код операции (читать я хочу или писать?)
Сначала шлешь 1, потом 2 бита опкод, потом адрес, потом данные, согласно протоколу (читай еще раз даташит от Атмела :) )
Нужно ли мне соблюдать все тайминги описанные в протоколе общения с микросхемой Atmel, или они соблюдаются уже внутренней логикой интеловского контроллера?.
Если контроллер сам генерирует все необходимые сигналы, то все проще. Но если все сигналы ты генерируешь вручную, то придется соблюдать все тайминги в рамках, указанных в даташите (внутри этих лимитов, времена могут варьироваться в принципе).