Перейти к содержанию
    

Если можно "общаться" через один вывод, то зачем их делают 2?

C двумя линиями можно передавать данные в обе стороны одновременно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

C двумя линиями можно передавать данные в обе стороны одновременно.

Что значит передавать данные в обе стороны одновременно?

Изменено пользователем d7d1cd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что значит передавать данные в обе стороны одновременно?

 

Это значит писать и читать данные одновременно. Например читать из RAM и писать в DAC ... вроде как быстрее получиться :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятно. То есть, в моем случае, я и читаю и записываю данные через пин SI. А делать то же самое через пин SO можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть, в моем случае, я и читаю и записываю данные через пин SI. А делать то же самое через пин SO можно?

Если не используется аппаратный spi и SI и SO объединены, то читать и передавать мастер может через любой из них. Но slave может читать данные только с SI, а передавать в SO.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще есть вопрос. Перед тем как начать процедуру записи, я читаю регистр микросхемы памяти и проверяю там бит WIP, то есть определяю, не занята ли микросхема в настоящий момент записью, заданной ей в предыдущем сеансе. Подскажите, сколько раз следует читать регистр до выдачи ответа о том, что с микросхемой что-то не так? Вдруг микросхема неисправна и бит WIP всегда установлен...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятно. То есть, в моем случае, я и читаю и записываю данные через пин SI. А делать то же самое через пин SO можно?

Я не понял, кто и где вас так "нагрузил", но вы ошибаетесь. Причем ошибка уже в нарисованной вами схеме из корневого поста. М/c c интерфейсом SPI имеют раздельные входы и выходы данных. Нельзя прочитать данные через вход м/с SPI EEPROM. Для этого (попеременного чтения/записи) вход и выход данных м/с должны быть как минимум объединены между собой. Так что, в вашей схеме ошибка: а) нет линии связи между объединенными выходами м/с FRAM.EEPROM и каким-либо пином МК и б) поскольку на схеме раздельно объединены входы данных и выходы данных, то следовательно линии записи и чтения данных в МК тоже должны быть раздельными.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не понял, кто и где вас так "нагрузил", но вы ошибаетесь. Причем ошибка уже в нарисованной вами схеме из корневого поста. М/c c интерфейсом SPI имеют раздельные входы и выходы данных. Нельзя прочитать данные через вход м/с SPI EEPROM. Для этого (попеременного чтения/записи) вход и выход данных м/с должны быть как минимум объединены между собой. Так что, в вашей схеме ошибка: а) нет линии связи между объединенными выходами м/с FRAM.EEPROM и каким-либо пином МК и б) поскольку на схеме раздельно объединены входы данных и выходы данных, то следовательно линии записи и чтения данных в МК тоже должны быть раздельными.

Спасибо за указание на ошибку в схеме. Действительно, на самом деле у меня в схеме выходы SI соединены с выходами SO.

Я планирую такой алгоритм работы (например чтение байта из м\с):

 

1. Отправляю в м\с инструкцию на чтение регистра статуса;

2. Читаю регистр статуса;

3. Если бит WIP в регистре статуса равен 1, то перехожу к пункту 2;

4. Отправляю в м\с инструкцию на чтение и адрес чтения;

5. Читаю байт информации

 

Вопрос такой: сколько раз необходимо выполнить цикл 2-3, перед тем, как сообщить, что чтение невозможно?

Изменено пользователем d7d1cd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за указание на ошибку в схеме. Действительно, на самом деле у меня в схеме выходы SI соединены с выходами SO.
Тогда не забывайте, что перед чтением данных нужно менять функцию пина МК, переводя его с режима вывода на режим ввода.

Вопрос такой: сколько раз необходимо выполнить цикл 2-3, перед тем, как сообщить, что чтение невозможно?
Готовность нужна при ожидании окончания записи. В datasheet M95256 указано максимальное время записи - 5мс. Вот в течение этого времени и нужно опрашивать готовность м/с EEPROM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос такой: сколько раз необходимо выполнить цикл 2-3, перед тем, как сообщить, что чтение невозможно?

Это перестраховка какая-то - память как правило либо работает либо нет.

Но если хочется можете секунду-другую задать время ожидания. Но нужно в даташит смотреть, какие там времена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятно. Еще вопрос возник относительно того, что у меня в м\с вывод SO и SI соединены вместе. Получается, что при получении данных из SO они (данные) одновременно будут воздействовать на SI.

Что, если при чтении данных из м\с будет читаться байт 0х05. Ведь в инструкциях м\с это чтение регистра статуса. Прочитав этот байт, м\с одновременно получит команду на выдачу регистра статуса и при дальнейшем тактировании выдаст на SO значение регистра статуса, а не следующий байт из массива данных. Подскажите, если я не прав в своих рассуждениях, то в чем я ошибаюсь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, если я не прав в своих рассуждениях, то в чем я ошибаюсь?
Дык не надо рассуждать, коль имеете всего лишь смутные предположения о том, как все это работает :) Для вас основой должен стать datasheet м/с которую вы применяете. Изучите его досконально - вдоль и поперек, сверху вниз и снизу вверх. Ответы на 90% вопросов найдутся сами в ходе изучения. А вот остальные 10% ищите в других документах или спрашивайте окружающих.

Для того, чтобы вы отбросили свои беспокойства советую внимательно рассмотреть в datasheet M95256 временные диаграммы записи и чтения. Там вы можете заметить, что во время приема команды выход EEPROM находится в высокоимпедансном состоянии (Z-состояние) и не оказывает влияние на процесс приема команды. В то же время во время передачи данных самой м/с EEPROM она не чувствительна к входному битовому потоку данных. Конкретно по чтению регистра статуса см. Figure 10. Read Status Register (RDSR) sequence на стр.19.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я понял, после выбора м\с (Chip Select = 0), она ждет 1 байта инструкции (например, чтение регистра статуса). При дальнейшем тактировании м\с выдает на SO байт регистра статуса. В этот момент ее вход как бы отключен и она не воспринимает команды по SI. Чтобы снова передать инструкцию в м\с необходимо снять выбор с м\с (Chip Select = 1), а затем заново ее выбрать (Chip Select = 0).

 

Хоть это верно? :blush:

Изменено пользователем d7d1cd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хоть это верно? :blush:
Да, это верно. SPI синхронный интерфейс. Прием/передача данных в нем происходит синхронно с тактовом сигналом. Но начало/конец битовой последовательности задается отдельным сигналом фреймовой синхронизации. В данной м/с им является CS. Кроме того, CS выполняет вторую функцию выбора кристалла. Пока CS не автивирован, интерфейс м/с индифферентен к входным сигналам. Каждый фрейм начинается с передачи м/с-ме EEPROM кода команды. Следом за командой могут транслироваться данные или данные может выдавать сама м/с EEPROM, если ей была принята соответствующая команда (чтение регистра или чтение данных). При выдаче данных м/с EEPROM уже не воспринимает битовый поток на своем входе до тех пор, пока сигнал фреймовой синхронизации не сигшнализирует ей о начале нового фрейма.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нк, слава транзистору! B) Спасибо за помощь. Пока вопросов нет. Приступил к реализации...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...