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

SPI EEPROM 93LC56BT-I/OT непонятное поведение

Коллеги, приветствую.

На плате установлена SPI eeprom 93LC56BT-I/OT.

Не могу понять ее поведение.

В ДШ есть следующая временная диаграмма:
Clip2net_201221191230.thumb.png.d59f027127e3bcbc724d4eb4ae2f0518.png

По ней не совсем ясно по фронту или спаду устанавливаются данные, но по характеристикам Tdis и Tdih кажется, что по фронту. Кроме нее более "точных" диаграмм нет.

 

Далее в ДШ указывается:

Instructions, addresses and write data are clocked into the DI pin on the rising edge of the clock.

Что я перевожу как "данные защелкиваются на вход DI на фронте". С такой логикой микросхема "правильно" реагирует на запись данных. То есть укладывает DO на землю на 3,96ms в моем случае. Диаграмму не привожу, она как в ДШ.

Настройки выставляю стандартные CPHA = 0; CPOL = 0.

 

Но есть проблема - когда я читаю записанные данные у меня выходит странная картина:

read_zero.thumb.png.ac89c1992c405f3c73a4004de34ad1dc.png

Я данные защелкиваю на фронте, а еепром на спаде. Из чего я предполагаю, что неправильно трактовал перевод и меняю CPHA на 1. В результате этого у меня пропадает реакция микросхемы на запись.

 

В ДШ есть оговорка:

The Start bit is detected by the device if CS and DI are both high with respect to the positive edge of CLK for the first time. Before  a  Start  condition  is  detected,  CS,  CLK  and  DI may  change  in  any  combination  (except  to  that  of  a Start   condition),   without   resulting   in   any   device operation.

Это значит, что память ждет условия старта (CS, DI и CLK в 1) и после этого просыпается и начинает работать.

 

У меня на линии с CPHA = 1 ситуация такая:

write_cpha.thumb.png.3b14cc5b7997be565ad4c04a5d5e11b4.png

Я подозреваю, что память не успевает увидеть стартовое условие, хотя оно вроде и не нужно, если защелка работает на спаде. Но, возможно, на фронте происходит сдвиг в регистр, а он не срабатывает, т.к. условие старта пропущено...

Перед первым битом видно, что MOSI на 0. Пробовал перед этим без CS отправлять в порт 0xFF чтобы MOSI оставалась в 1, но это не помогает, т.к. перед новой передачей MOSI опять сбрасывается в 0.

 

Любые другие вариации CPOL и CPHA к работоспособности не привели (ради интереса уже пробовал).

 

Работал ли кто-нибудь с такой памятью?

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


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

PS.

Нашел документ AN993 от микрочипа. В нем просто лучшие (sarcasm) диаграммы:

diagram1.thumb.png.6e34aa34cfaf06cc1fee86cb02b1286c.pngdiagram2.thumb.png.ac8d1c9b1a88bb352be62d1f946c50a9.png

 

В нем видно, что MOSI поднимается незадолго до фронта клока. В моем же случае все не так радужно и MOSI отстает, а точнее идет условно одинаково с фронтом (согласно настройке):

jitter.png.7a9533e89e6e25d1ed53725d30a4c571.png

 

 

Складывается впечатление, что я выбрал староватую память... (

 

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


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

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

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

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

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

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

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

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

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

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