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

Не правильно читается Chip ID в микросхеме памяти ZD35Q1GC и только в определённой плате

В рамках замены на более доступные компоненты, микросхема SPI памяти от Макроникса (MX35LF), была заменена на Zettaa ZD35Q1GC-IB. В целом обе микросхемы функционально похожи или одинаковы. Но столкнулся с проблемой что у ZD35Q1GC не правильно читается Chip ID  командой 0x9F. Должно быть 0xBA, 0x071. А читается 0x70, 0x41. Причём не читается только на нужной мне плате, на которой планировалось использовать. На двух отладках от ST эта микросхема на проводочках читается нормально. И она же, на этих же проводочках не читается в нужной плате. При этом на одной из отладок точно такой же микроконтроллер как и в нужной мне плате. Мало того, запускаю один и тот же код! В этой же плате до этого Макроникс и Гигадевайс работали отлично. А эта ни в какую! На логическом анализаторе та же картина, будто микросхема отдаёт не те данные. Сижу третий день, уже не знаю куда копать.

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


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

Посмею предположить, что к одному (или нескольким) из этих проводочков в отладке от ST оказался подключен вход какой-то другой микросхемы, который добавляет в линию небольшую емкость, которая, в свою очередь, приводит к задержке сигнала и эта задержка приводит к тому, что микросхема воспринимает команду правильно. Например, добавляет задержку между SCK и SI. Микросхемы других производителей могут быть не так критичны к этой задержке. Проверьте еще раз, правильно ли вы устанавливаете биты CPOL и CPHA при настройке SPI вашего контроллера.

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


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

26 minutes ago, Сергей Борщ said:

Посмею предположить, что к одному (или нескольким) из этих проводочков в отладке от ST оказался подключен вход какой-то другой микросхемы, который добавляет в линию небольшую емкость, которая, в свою очередь, приводит к задержке сигнала и эта задержка приводит к тому, что микросхема воспринимает команду правильно. Например, добавляет задержку между SCK и SI. Микросхемы других производителей могут быть не так критичны к этой задержке. Проверьте еще раз, правильно ли вы устанавливаете биты CPOL и CPHA при настройке SPI вашего контроллера.

Тоже уже думал о ёмкости, видимо нужно пробовать в параллель подключать какую нибудь ёмкость для экспериментов. Ну а CPOL И CPHA я уже раз 20 все 4 варианта перепробовал за 4 дня, как и частоту и пошаговое выполнение.  Но саму команду она воспринимает правильно скорей всего, т.к. если её меняю на что либо другое, то она совсем ничего не отдаёт. Может адрес (следующий байт после команды) как то не так воспринимает, хотя он вроде 0 и с чем то другим его перепутать сложно. Короче буду пробовать какие нибудь ёмкости вешать, но готов услышать ещё варианты. 

Скорость ножек SPI тоже все варианты испробовал.

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


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

40 minutes ago, IgorAVR2 said:

Тоже уже думал о ёмкости, видимо нужно пробовать в параллель подключать какую нибудь ёмкость для экспериментов. Ну а CPOL И CPHA я уже раз 20 все 4 варианта перепробовал за 4 дня, как и частоту и пошаговое выполнение.  Но саму команду она воспринимает правильно скорей всего, т.к. если её меняю на что либо другое, то она совсем ничего не отдаёт. Может адрес (следующий байт после команды) как то не так воспринимает, хотя он вроде 0 и с чем то другим его перепутать сложно. Короче буду пробовать какие нибудь ёмкости вешать, но готов услышать ещё варианты. 

Скорость ножек SPI тоже все варианты испробовал.

Не добавление разных конденсаторов на SCK и SI, ни резисторы по 100 ом в разрыв по этим же линиям не помогли.

Добавление отладки в параллель на эти же линии тоже не помогло.

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


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

Увы, у меня версии кончились. С этими памятями не работал. Может еще кто-нибудь подскажет. Если разберетесь - не сочтите за труд, отпишитесь, в чем была причина. Любопытно.

P.S. Недавно была ситуация - залили старую программу в новую плату - потребление в спячке по сравнению со старой платой возросло на два порядка. Тоже ломал голову несколько дней. Помыли спиртом - пришло в норму, через полчаса под питанием снова полезло вверх. Бледный вид имел, монтажников про флюс пытали... Оказалось - в новой плате выкинули несколько цепей подключения неиспользуемых датчиков и настроенная на ввод нога, которая раньше через резистор соединялась с другой ногой, настроенной на вывод, оказалась висящей в воздухе. А ведь самая первая версия была - "программа та же, значит проблема в железе". Но чудес не бывает 😉. В смысле - причина в железе, но лечить надо программно. Извините, просто захотелось высказаться.

P.P.S. Правильно писать "Ни добавление...".

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


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

1 час назад, IgorAVR2 сказал:

Не добавление разных конденсаторов на SCK и SI, ни резисторы по 100 ом в разрыв по этим же линиям не помогли.

Включать логический анализатор и смотреть разницу в обмене.

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


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

On 8/4/2023 at 1:20 AM, HardEgor said:

Включать логический анализатор и смотреть разницу в обмене.

Так я же сразу написал про логический анализатор, запрос от микроконтроллера выглядит им одинаково, но ответ разный.

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


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

1 час назад, IgorAVR2 сказал:

Так я же сразу написал про логический анализатор, запрос от микроконтроллера выглядит им одинаково, но ответ разный.

Извиняюсь, не заметил.

Тогда осциллографом просматривать фронты. Вдруг где есть неопознанные иголки или всплески напряжения которые не заметил логанализатор.

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


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

4 minutes ago, HardEgor said:

Извиняюсь, не заметил.

Тогда осциллографом просматривать фронты. Вдруг где есть неопознанные иголки или всплески напряжения которые не заметил логанализатор.

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

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


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

А вы сравнили мануалы этих чипов? полностью? На предмет наличия отличий.

Может оказаться что-то совсем простое. Например - чип ZD по дефолту после сброса может находиться в каком-нить энергосберегающем IDLE-состоянии. Из которого выводится просто импульсом определённой длины по входу CS и ожиданием какое-то время после этого. А до этого он будет игнорировать все команды, а вы будете читать мусор с SPI, находящейся в высокоомном состоянии (кстати - подтяжку MOSI/MISO сделали?).

Или просто - не выполняете требования по минимальной задержке между сбросом и первым обращением. Разные чипы + разброс частот тактирования и напряжений питания - разный разброс этого начального времени. Также код (даже один и тот же) запускаемый на разных МК может выполняться разное время. И тогда времянки формируемых им сигналов будут отличаться.

Ещё вариант: какой-то случайной комбинацией сигналов при вкл.питания переводите флешку в режим quad-SPI. Или ещё в какой-то хитрый спец.режим.

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


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

11 minutes ago, jcxz said:

А вы сравнили мануалы этих чипов? полностью? На предмет наличия отличий.

Может оказаться что-то совсем простое. Например - чип ZD по дефолту после сброса может находиться в каком-нить энергосберегающем IDLE-состоянии. Из которого выводится просто импульсом определённой длины по входу CS и ожиданием какое-то время после этого. А до этого он будет игнорировать все команды, а вы будете читать мусор с SPI, находящейся в высокоомном состоянии (кстати - подтяжку MOSI/MISO сделали?).

Или просто - не выполняете требования по минимальной задержке между сбросом и первым обращением. Разные чипы + разброс частот тактирования и напряжений питания - разный разброс этого начального времени. Также код (даже один и тот же) запускаемый на разных МК может выполняться разное время. И тогда времянки формируемых им сигналов будут отличаться.

Ещё вариант: какой-то случайной комбинацией сигналов при вкл.питания переводите флешку в режим quad-SPI. Или ещё в какой-то хитрый спец.режим.

Ещё раз перечитал даташит, полностью.

Никакого IDLE по дефолту у неё нету. Подтяжку я делал внутренними резисторами, не помогло. И не очень понимаю зачем она тут нужна.

Так же после включения выполнял пошагово команды, что бы исключить вероятность маленьких задержек после CS. Так же делал команду Reset ей.

Насчёт quad или dual SPI тоже думал, но тогда бы я на анализаторе всё бы это увидел это раз. А два на команду то она реагирует - пишешь другую и ничего не выдаёт.

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


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

14 минут назад, IgorAVR2 сказал:

Никакого IDLE по дефолту у неё нету. Подтяжку я делал внутренними резисторами, не помогло. И не очень понимаю зачем она тут нужна.

Для определённости. Чтобы например отличить случайный мусор, читаемый вами с шины (если MISO флешки в высокоомном состоянии - она ничего не выдаёт) от реально выдаемой флешкой инфы. Я в своей практике с SPI-флешками сталкивался с таким, что если не делать подтяжки MOSI/MISO, то начинались какие-то непонятные глюки при работе с флешкой (хотя у меня чаще всего используется dual-SPI). С тех пор всегда, в обязательном порядке, включаю подтяжки по MOSI/MISO.

Кроме того - при наличии подтяжки, в начале кадра CS=low состояние линии MISO всегда определённое (при достаточной длительности CS=high), а без неё - случайное (определяемое предыдущим состоянием, ёмкостью линии и т.п.).

 

PS: Ещё вопрос - как реализован интерфейс с микросхемой? Программный ногодрыг или...? При таких проблемах я бы попробовал реализовать обмен сначала программным ногодрыгом. С задержками с большим запасом. Задержку от CS=low до первого фронта/спада SCLK - с запасом; и от последнего фронта/спада SCLK до CS=high - аналогично. Может у вас там одновременно с изменением CS например SCLK дёргается? И одна флешка может воспринимать это как дополнительный входной/выходной бит, а другая - игнорировать.

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


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

Вычитал что в режиме quad или dual она может только отдавать из кеша, остальное всё как я понял только в обычном режиме. Поэтому вариант с dual и quad отпадает.

3 minutes ago, jcxz said:

PS: Ещё вопрос - как реализован интерфейс с микросхемой? Программный ногодрыг или...? При таких проблемах я бы попробовал реализовать обмен сначала программным ногодрыгом. С задержками с большим запасом. Задержку от CS=low до первого фронта/спада SCLK - с запасом; и от последнего фронта/спада SCLK до CS=high - аналогично. Может у вас там одновременно с изменением CS например SCLK дёргается? И одна флешка может воспринимать это как дополнительный входной/выходной бит, а другая - игнорировать.

Тоже уже думаю в эту сторону, хотя бы ради эксперимента. Был конечно аппаратный. Сейчас буду делать программный и отпишусь.

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


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

5 минут назад, IgorAVR2 сказал:

Вычитал что в режиме quad или dual она может только отдавать из кеша, остальное всё как я понял только в обычном режиме.

:shok: Что-то вы не правильно поняли. Такого просто быть не может. Особенно для quad-режима (исходя из алгоритма его работы).

Перечитайте ещё раз.

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


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

2 minutes ago, jcxz said:

:shok: Что-то вы не правильно поняли. Такого просто быть не может. Особенно для quad-режима (исходя из алгоритма его работы).

Перечитайте ещё раз.

Сам удивлён, точно! Возможности переключить в другой режим нету, зато есть две команды - читать в Dual и читать в Quad.

Даташит приложил.

ZD35Q1GC-IB.pdf

4 minutes ago, IgorAVR2 said:

Сам удивлён, точно! Возможности переключить в другой режим нету, зато есть две команды - читать в Dual и читать в Quad.

Даташит приложил.

ZD35Q1GC-IB.pdf 1.6 MB · 0 downloads

да, есть ещё для qaud команда program load.

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


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

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

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

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

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

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

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

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

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

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