непонятности работы SPI с M95640 (симулирую в Proteus)
Добавлено: Чт янв 26, 2012 01:23:54
Доброй ночи, уважаемые.
Вопрос следующий:
пытаюсь понять как работает SPI EEPROM M95640 симулирую минимум:
микросхема, /W на +5, /HOLD на +5, Q на светодиод через резистор, /S подтянут к +5 через 10к. C,D,/S - подключены на PATTERN GENERATOR.
согласно даташита делаю следующее (в PATTERN GENERATOR):
1) считываю статус (RDSR 0000 0101)
/S = 1, меняю на 0, начинаю тактовать по С, перед сменой с 0 в 1 на пине С выставляю 1 на D на 5-ом и 8-ом сигнале дальше тактую 16 раз (на выходе 0 = const) ставлю /S = 1
2) разрешаю запись (WREN 0000 0110)
/S = 0, тактую С, аналогично первому пункту выставляю 1 на D на 6 и 7 сигнале такта. ставлю /S = 1
3) пишем статус WRSR 0000 0001
/S = 0, тактую С, выставляю 1 на D на 8 сигнале такта. ставлю /S = 1
4) задаем значение статуса ( например 1000 1100)
/S = 0, тактую С, выставляю 1 на D на 1,5,6 сигнале такта.ставлю /S = 1
5) считываю статус аналогично пункта 1 - и ничего. на выходе 0.
в чем ошибка?
я полагаю, что-то связанное с /S и еще один вопрос (просветите) зачем при чтении статуса (в даташите нарисована диаграмма) надо дважды получать значение статуса (16 тактов после команды RDSR)?
Вопрос следующий:
пытаюсь понять как работает SPI EEPROM M95640 симулирую минимум:
микросхема, /W на +5, /HOLD на +5, Q на светодиод через резистор, /S подтянут к +5 через 10к. C,D,/S - подключены на PATTERN GENERATOR.
согласно даташита делаю следующее (в PATTERN GENERATOR):
1) считываю статус (RDSR 0000 0101)
/S = 1, меняю на 0, начинаю тактовать по С, перед сменой с 0 в 1 на пине С выставляю 1 на D на 5-ом и 8-ом сигнале дальше тактую 16 раз (на выходе 0 = const) ставлю /S = 1
2) разрешаю запись (WREN 0000 0110)
/S = 0, тактую С, аналогично первому пункту выставляю 1 на D на 6 и 7 сигнале такта. ставлю /S = 1
3) пишем статус WRSR 0000 0001
/S = 0, тактую С, выставляю 1 на D на 8 сигнале такта. ставлю /S = 1
4) задаем значение статуса ( например 1000 1100)
/S = 0, тактую С, выставляю 1 на D на 1,5,6 сигнале такта.ставлю /S = 1
5) считываю статус аналогично пункта 1 - и ничего. на выходе 0.
в чем ошибка?
я полагаю, что-то связанное с /S и еще один вопрос (просветите) зачем при чтении статуса (в даташите нарисована диаграмма) надо дважды получать значение статуса (16 тактов после команды RDSR)?