реклама на сайте
подробности

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> Чтение\запись по SPI
_Артём_
сообщение Oct 7 2012, 15:13
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(d7d1cd @ Oct 7 2012, 16:15) *
Если можно "общаться" через один вывод, то зачем их делают 2?

C двумя линиями можно передавать данные в обе стороны одновременно.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 7 2012, 16:14
Сообщение #32


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(_Артём_ @ Oct 7 2012, 19:13) *
C двумя линиями можно передавать данные в обе стороны одновременно.

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

Сообщение отредактировал d7d1cd - Oct 7 2012, 16:26
Go to the top of the page
 
+Quote Post
hash20
сообщение Oct 8 2012, 10:19
Сообщение #33


Участник
*

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



Цитата(d7d1cd @ Oct 7 2012, 19:14) *
Что значит передавать данные в обе стороны одновременно?


Это значит писать и читать данные одновременно. Например читать из RAM и писать в DAC ... вроде как быстрее получиться sm.gif
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 8 2012, 16:35
Сообщение #34


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Понятно. То есть, в моем случае, я и читаю и записываю данные через пин SI. А делать то же самое через пин SO можно?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 8 2012, 20:02
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(d7d1cd @ Oct 8 2012, 19:35) *
То есть, в моем случае, я и читаю и записываю данные через пин SI. А делать то же самое через пин SO можно?

Если не используется аппаратный spi и SI и SO объединены, то читать и передавать мастер может через любой из них. Но slave может читать данные только с SI, а передавать в SO.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 9 2012, 15:47
Сообщение #36


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Еще есть вопрос. Перед тем как начать процедуру записи, я читаю регистр микросхемы памяти и проверяю там бит WIP, то есть определяю, не занята ли микросхема в настоящий момент записью, заданной ей в предыдущем сеансе. Подскажите, сколько раз следует читать регистр до выдачи ответа о том, что с микросхемой что-то не так? Вдруг микросхема неисправна и бит WIP всегда установлен...
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 9 2012, 19:02
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Oct 8 2012, 21:35) *
Понятно. То есть, в моем случае, я и читаю и записываю данные через пин SI. А делать то же самое через пин SO можно?

Я не понял, кто и где вас так "нагрузил", но вы ошибаетесь. Причем ошибка уже в нарисованной вами схеме из корневого поста. М/c c интерфейсом SPI имеют раздельные входы и выходы данных. Нельзя прочитать данные через вход м/с SPI EEPROM. Для этого (попеременного чтения/записи) вход и выход данных м/с должны быть как минимум объединены между собой. Так что, в вашей схеме ошибка: а) нет линии связи между объединенными выходами м/с FRAM.EEPROM и каким-либо пином МК и б) поскольку на схеме раздельно объединены входы данных и выходы данных, то следовательно линии записи и чтения данных в МК тоже должны быть раздельными.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 10 2012, 16:08
Сообщение #38


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 10 2012, 16:21
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 10 2012, 16:26
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(d7d1cd @ Oct 10 2012, 19:08) *
Вопрос такой: сколько раз необходимо выполнить цикл 2-3, перед тем, как сообщить, что чтение невозможно?

Это перестраховка какая-то - память как правило либо работает либо нет.
Но если хочется можете секунду-другую задать время ожидания. Но нужно в даташит смотреть, какие там времена.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 10 2012, 17:16
Сообщение #41


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Понятно. Еще вопрос возник относительно того, что у меня в м\с вывод SO и SI соединены вместе. Получается, что при получении данных из SO они (данные) одновременно будут воздействовать на SI.
Что, если при чтении данных из м\с будет читаться байт 0х05. Ведь в инструкциях м\с это чтение регистра статуса. Прочитав этот байт, м\с одновременно получит команду на выдачу регистра статуса и при дальнейшем тактировании выдаст на SO значение регистра статуса, а не следующий байт из массива данных. Подскажите, если я не прав в своих рассуждениях, то в чем я ошибаюсь?
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 10 2012, 17:51
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Oct 10 2012, 22:16) *
Подскажите, если я не прав в своих рассуждениях, то в чем я ошибаюсь?
Дык не надо рассуждать, коль имеете всего лишь смутные предположения о том, как все это работает sm.gif Для вас основой должен стать datasheet м/с которую вы применяете. Изучите его досконально - вдоль и поперек, сверху вниз и снизу вверх. Ответы на 90% вопросов найдутся сами в ходе изучения. А вот остальные 10% ищите в других документах или спрашивайте окружающих.
Для того, чтобы вы отбросили свои беспокойства советую внимательно рассмотреть в datasheet M95256 временные диаграммы записи и чтения. Там вы можете заметить, что во время приема команды выход EEPROM находится в высокоимпедансном состоянии (Z-состояние) и не оказывает влияние на процесс приема команды. В то же время во время передачи данных самой м/с EEPROM она не чувствительна к входному битовому потоку данных. Конкретно по чтению регистра статуса см. Figure 10. Read Status Register (RDSR) sequence на стр.19.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 11 2012, 02:55
Сообщение #43


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



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

Хоть это верно? blush.gif

Сообщение отредактировал d7d1cd - Oct 11 2012, 02:55
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 11 2012, 09:15
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Oct 11 2012, 07:55) *
Хоть это верно? blush.gif
Да, это верно. SPI синхронный интерфейс. Прием/передача данных в нем происходит синхронно с тактовом сигналом. Но начало/конец битовой последовательности задается отдельным сигналом фреймовой синхронизации. В данной м/с им является CS. Кроме того, CS выполняет вторую функцию выбора кристалла. Пока CS не автивирован, интерфейс м/с индифферентен к входным сигналам. Каждый фрейм начинается с передачи м/с-ме EEPROM кода команды. Следом за командой могут транслироваться данные или данные может выдавать сама м/с EEPROM, если ей была принята соответствующая команда (чтение регистра или чтение данных). При выдаче данных м/с EEPROM уже не воспринимает битовый поток на своем входе до тех пор, пока сигнал фреймовой синхронизации не сигшнализирует ей о начале нового фрейма.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 12 2012, 02:50
Сообщение #45


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Нк, слава транзистору! cool.gif Спасибо за помощь. Пока вопросов нет. Приступил к реализации...
Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 5 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 00:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.03274 секунд с 7
ELECTRONIX ©2004-2016