|
|
  |
Чтение\запись по SPI |
|
|
|
Oct 7 2012, 16:14
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Цитата(_Артём_ @ Oct 7 2012, 19:13)  C двумя линиями можно передавать данные в обе стороны одновременно. Что значит передавать данные в обе стороны одновременно?
Сообщение отредактировал d7d1cd - Oct 7 2012, 16:26
|
|
|
|
|
Oct 8 2012, 10:19
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 24-01-12
Пользователь №: 69 858

|
Цитата(d7d1cd @ Oct 7 2012, 19:14)  Что значит передавать данные в обе стороны одновременно? Это значит писать и читать данные одновременно. Например читать из RAM и писать в DAC ... вроде как быстрее получиться
|
|
|
|
|
Oct 9 2012, 19:02
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(d7d1cd @ Oct 8 2012, 21:35)  Понятно. То есть, в моем случае, я и читаю и записываю данные через пин SI. А делать то же самое через пин SO можно? Я не понял, кто и где вас так "нагрузил", но вы ошибаетесь. Причем ошибка уже в нарисованной вами схеме из корневого поста. М/c c интерфейсом SPI имеют раздельные входы и выходы данных. Нельзя прочитать данные через вход м/с SPI EEPROM. Для этого (попеременного чтения/записи) вход и выход данных м/с должны быть как минимум объединены между собой. Так что, в вашей схеме ошибка: а) нет линии связи между объединенными выходами м/с FRAM.EEPROM и каким-либо пином МК и б) поскольку на схеме раздельно объединены входы данных и выходы данных, то следовательно линии записи и чтения данных в МК тоже должны быть раздельными.
|
|
|
|
|
Oct 10 2012, 16:08
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Цитата(rezident @ Oct 9 2012, 23:02)  Я не понял, кто и где вас так "нагрузил", но вы ошибаетесь. Причем ошибка уже в нарисованной вами схеме из корневого поста. М/c c интерфейсом SPI имеют раздельные входы и выходы данных. Нельзя прочитать данные через вход м/с SPI EEPROM. Для этого (попеременного чтения/записи) вход и выход данных м/с должны быть как минимум объединены между собой. Так что, в вашей схеме ошибка: а) нет линии связи между объединенными выходами м/с FRAM.EEPROM и каким-либо пином МК и б) поскольку на схеме раздельно объединены входы данных и выходы данных, то следовательно линии записи и чтения данных в МК тоже должны быть раздельными. Спасибо за указание на ошибку в схеме. Действительно, на самом деле у меня в схеме выходы SI соединены с выходами SO. Я планирую такой алгоритм работы (например чтение байта из м\с): 1. Отправляю в м\с инструкцию на чтение регистра статуса; 2. Читаю регистр статуса; 3. Если бит WIP в регистре статуса равен 1, то перехожу к пункту 2; 4. Отправляю в м\с инструкцию на чтение и адрес чтения; 5. Читаю байт информации Вопрос такой: сколько раз необходимо выполнить цикл 2-3, перед тем, как сообщить, что чтение невозможно?
Сообщение отредактировал d7d1cd - Oct 10 2012, 16:08
|
|
|
|
|
Oct 10 2012, 16:21
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(d7d1cd @ Oct 10 2012, 21:08)  Спасибо за указание на ошибку в схеме. Действительно, на самом деле у меня в схеме выходы SI соединены с выходами SO. Тогда не забывайте, что перед чтением данных нужно менять функцию пина МК, переводя его с режима вывода на режим ввода. Цитата(d7d1cd @ Oct 10 2012, 21:08)  Вопрос такой: сколько раз необходимо выполнить цикл 2-3, перед тем, как сообщить, что чтение невозможно? Готовность нужна при ожидании окончания записи. В datasheet M95256 указано максимальное время записи - 5мс. Вот в течение этого времени и нужно опрашивать готовность м/с EEPROM.
|
|
|
|
|
Oct 10 2012, 17:51
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(d7d1cd @ Oct 10 2012, 22:16)  Подскажите, если я не прав в своих рассуждениях, то в чем я ошибаюсь? Дык не надо рассуждать, коль имеете всего лишь смутные предположения о том, как все это работает  Для вас основой должен стать datasheet м/с которую вы применяете. Изучите его досконально - вдоль и поперек, сверху вниз и снизу вверх. Ответы на 90% вопросов найдутся сами в ходе изучения. А вот остальные 10% ищите в других документах или спрашивайте окружающих. Для того, чтобы вы отбросили свои беспокойства советую внимательно рассмотреть в datasheet M95256 временн ые диаграммы записи и чтения. Там вы можете заметить, что во время приема команды выход EEPROM находится в высокоимпедансном состоянии (Z-состояние) и не оказывает влияние на процесс приема команды. В то же время во время передачи данных самой м/с EEPROM она не чувствительна к входному битовому потоку данных. Конкретно по чтению регистра статуса см. Figure 10. Read Status Register (RDSR) sequence на стр.19.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|