Помогите разобратся с чтением/записью в EEPROM

Тема в разделе "WASM.ELECTRONICS", создана пользователем Arisu, 24 апр 2007.

  1. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    Здравствуйте! Прошу помощи, т.к. озадачило отсутвтвие практических данных в соответствующей литературе.

    Короче у меня есть EEPROM микруха Atmel AT93C66A. Она четырьмя контактами (CS, SK, DI, DO) подведена к интеловскому эзернет контроллеру 82546GB, который использует её для хранения прошивки.

    У этого контроллера есть регистр, 4 бита которого выведены на эти 4 провода. Эти биты там таки называются (CS, SK, DI, DO).

    Прочитав весь интеловский даташит по этому контроллеру и даташит по самой микрухе Атмел я вроде бы всё понял, но при этом осталас куча чисто практических непоняток:

    на пример вот если я хочу прочесть одино слово из епрома, то я должен что? выставить в бит CS 1, а потом в DI согласно протоколу передачи пихать побитно адрес ячейки, которую хочу прочесть, и сразу после этого читать побитно из DO значение ячейки?

    Зачем тогда нужен сигнал SK ? и нужно ли мне постоянно поддерживать сигнал CS ? или одиночной записи и сброса после окончания операции чтения достаточно? И в каком месте я должен указывать оп-код операции (читать я хочу или писать?)

    Нужно ли мне соблюдать все тайминги описанные в протоколе общения с микросхемой Atmel, или они соблюдаются уже внутренней логикой интеловского контроллера?.

    непонятно.
     
  2. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Бит CS (Chip Select) Нужно ставить всегда, когда ты хочешь общаться с МС, иначе она не реагирует на входные сигналы. Это сделано для того, чтобы можно было несколько МС вешать на одну шину и выбирать нужную одним битом.
    SK (Serial Clock) - Оно же синхронизация, нужен чтобы МС прочла сигнал на входе. То есть устанавливаем нужный сигнал на входе, затем ставим этот бит и МС его принимает. Аналогично и с приёмом жанных из МС. Ставим этот бит, в ответ МС выдаёт следующий бит информации на выходе.
    ИМХО если все ноги выведены на порт контроллера, то протокол нужно соблюдать, иначе сделали бы по-другому.
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Arisu
    Хмм...

    Ну, можно и не сразу, т.е. заморозить сигнал clock, а потом (переведя дух :) снова пустить clock и прочитать.
     
  4. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Arisu
    Покури любую доку по SPI, лучше какую-нибудь моторолловскую - там это подробно написано. А если сильно подробно не надо - так в ее родной доке есть все диаграммы сигналов сигналов и описание команд.
     
  5. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    ок спасибо. похоже начинаю чего-то понимать.

    то есть для передачи одного бита мне нужно сделать так?:
    1) включить CS
    2) поставить нужный бит в DI
    3) включить SK
    4) подождать
    5) выключить SK

    SK сам будет сбрасыватся в 0, после того как МС примет сигнал (бит)?

    ЗЫ
    раньше я хотел сжечь только отдел документации интела. теперь похоже на очереди и Атмел.
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Arisu
    Почему это он должен сам сбрасываться?!
     
  7. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    ну иначе получается, что нет подтверждения записи о_О.
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Arisu
    В 5м пункте Вы же сами сбрасываете SK.

    Что ещё за подтверждение? В смысле, данные могут не записаться или как?
     
  9. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    может какуюнить книгу посоветуете или статейку на счёт этого интерфейса? (как я понял он стандартный для таких Епромов)

    а то у меня целостности картины нет.
     
  10. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Arisu
    Описание SPI? В самом даташите этой памяти он должен быть описан или на сайте производителя отдельной докой.

    Да, почти все paged flash его используют.
     
  11. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
  12. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Эта междуморда называется "microwire" (только сейчас вспомнил ;) Дальше здесь:
    Яндекс
    AltaVista
    Гугол
    Просто море статей (прямо как про ком-порт :derisive:
     
  13. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    вопрос появился: когда я считал бит из DO, то SK я должен сбросить сам? или он стробируется несмотря на мои действия (типа не успел считать - твои проблемы) ?
     
  14. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Нет, это вход. Пока ты его держишь, МС выдаёт сигнал на выходе.
     
  15. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    погоди.

    DI - туда
    DO - оттуда
    CS - выбор микрухи
    SK - для стробирования DI и DO

    что бы микруха приняла бит с DI я должен поднять SK на время и потом сбросить.

    что бы я принял от микрухи - я должен дождатся как поднимится SK и взять с DO.

    но тогда получается что если я не успел взять с DO до того как опустилось SK - то я пролетаю ). прямо хоть все системные процессы блин останавливай что бы успеть.

    ИЛИ не так ?? (до меня долго доходит видимо)

    было бы гораздо удобнее если бы следующий бит в DO микруха пихала только после того как я в ручную снимаю SK. но вот создатели системы чё-то не додумали
     
  16. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Ты как с ней работаешь? Так?
    Чтение:
    1. Поставили SK
    2. Прочли DO
    2. Сбросили SK
    3. Записали прочитаное в массив
    4. переход на 1 пока не прочитаем всё.
    Запись:
    1. Прочли бит из массива
    2. Записали в DI
    3. Поставили SK
    4. Сбросили SK
    5. Переход на 1 пока не записали всё.
    После каждого пункта скорее всего нужна некоторая задержка (написано в доке на МС). По идее так надо.
     
  17. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    нет. я пока только запись сделал (работает). А вот чтение я не до конца понял. Судя по документации атмела при чтении (сразу после того как я отправляю Опкод|адрес в микруху) и пока стоит CS - мне на DO приходят биты с прочтённой ячейки, но, как я понял - SK начинает стробировать сама микруха, а не я уже. Если это не так (в смысле что SK и при чтении должен поднимать тоже Я) - то тогда вопросо нет.
     
  18. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Нет, SK в SPI всегда дергает одно и то же устройство (master), т. е. ты :):):)