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

Проблема подключения sdram к stm32

Имеется плата с микроконтроллером STM32F769II и микросхемой sdram MT48LC4M16A2. Прошил мк тестовой программой. В ней на sdram записывается информация из одного буфера, а затем читается в другой. Проблема в том, что этого не происходит, второй буфер остаётся пустой. Сигналов WE и CS с помощью логического анализатора (макс. 24 МГц) не увидел. Простым "ногодрыгом" удостоверился, что ножки МК в принципе живые. Вопрос такой, может ли в данном случае неграмотная разводка платы (а в том, что она неграмотная сомневаться не приходиться) сделать устройство полностью неработоспособным. Устройство разведено на 4-х слойной печатной плате. В основном вся разводка выполнена на внутренних слоях, а значит почти у всех дорожек есть два переходных отверстия. Верхние два слоя залиты, насколько возможно, GND полигонами, два нижних слоя залиты VCC полигонами. Ещё есть такой момент, уже не касательно разводки ПП. Я заметил что всех отладочных платах от STM для тактирования МК используется кварц на 25 МГц, я же использую 10 МГц, при этом скорректировав все делители и умножители так, чтобы тактирование ядра и FMC совпадало с примерами, но вдруг всё же мистическим образом это не правильно и нужно использовать именно 25 МГц?

боттом леер.PNG

мид1 леер.PNG

мид2 леер.PNG

Снимок.PNG

топ леер.PNG

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


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

Я не вижу ничего неправильного в разводке связей контроллера с sdram на этой плате. Переходные отверствия на этих частотах ни на что не повлияют. Единственно - не вижу блокировочных конденсаторов у памяти по питанию. И неизвестно правильно ли память принципиально подключена к контроллеру. Но что уж точно - вы должны были бы видеть сами сигналы на ножках адресса памяти ну и такты на неё , при любом виде разводки. Сомневаюсь что можно так коряво развести плату чтобы МК не завёлся. Тут уж точно такого нет - это по разводке. 

з.ы.

Давайте схему подключения микроконтроллера и код инициализации частот.

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


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

3 минуты назад, Lmx2315 сказал:

Я не вижу ничего неправильного в разводке связей контроллера с sdram на этой плате. Переходные отверствия на этих частотах ни на что не повлияют. Единственно - не вижу блокировочных конденсаторов у памяти по питанию. И не известно правильно ли память принципиально подключена к контроллеру.

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

Снимок2.PNG

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


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

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

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

Этого достаточно.

Вы когда ногодрыгом проверяли МК убедились что у вас частоты адекватные? 

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


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

38 minutes ago, Lmx2315 said:

Этого достаточно.

Вы когда ногодрыгом проверяли МК убедились что у вас частоты адекватные? 

Да скорее всего непропай. Шелкография поверх площадок за себя говорит. 

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


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

31 минуту назад, Lmx2315 сказал:

Этого достаточно.

Вы когда ногодрыгом проверяли МК убедились что у вас частоты адекватные? 

Сейчас решил всё ещё раз проверить и заметил несколько особенностей, которые не заметил ранее. Программа проверки sdram состоит в следующем: всевозможная инициализация, затем каждые две секунды буфер Tx (размер каждого элемента 2 байта) заполняется новыми значениями, потом этот массив отправляется на sdram и тут же считывается обратно в Rx буфер (размер каждого элемента 2 байта). Не знаю как я мерил вчера, но сейчас увидел активность на ножках WE и CS (рис. 1 и 2), правда непонятно почему на ножке CS активность постоянная. В режиме отладки проверил содержимое Rx буфера, и оказалось, что в нём значения равны последнему элементу Tx буфера, но если между записью и  считыванием добавить задержку, скажем, 100 мс (рис. 3), то содержимое Rx буфера по нулям. Насчёт ногодрыга, с ним всё в порядке в плане частот.

Снимок3.PNG

Снимок4.PNG

Снимок5.PNG

13 минут назад, AlexandrY сказал:

Да скорее всего непропай. Шелкография поверх площадок за себя говорит. 

Мультиметром в режиме прозвонки проверил наличие сигнала от ножки МК до ножки sdram, с этим всё в порядке.

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


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

Вы свою прошивку в рабочем виде видели на отладке какой-нибудь?

Сначала нужно убедиться осцилографом что есть все сигналы на шине и они правильные.

Что есть запись, чтение , рефреши и т.д. 

з.ы.

У вас из приборов только мультиметр и тормозной логический анализатор?

От осцилографа на 200 Мгц было бы больше пользы.

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


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

Тут много непонятно, начиная со схемы, которую не выложили, может там ошибка. Да разводка никакая с точки зрения правил разводки, но вполне может что то и работать. И таки ничего по вашей проге не написали, как конфигурили, как делители и тд. Для 10 мег тоже нужно все пересчитать правильно, учитывая всю структуру внутренних и наружных интерфейсов. Как то пересчитывал с 25 на 12 мгц, не все так хорошо получилось с Ethrenet10/100.

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


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

9 минут назад, Aner сказал:

Да разводка никакая с точки зрения правил разводки.

И что же там не так, в этой разводке для частоты на которой может работать контролер sdram от этого мк ?

Плейны питания и земли - есть , блокировочные кондёры на ножках - есть, соединения короткие и прямые.

Микрухи стоят вплотную к друг другу.

Обвинять в данном случае разводку в неработоспособности это всё равно что искать ключи не там где потерял, а там где светло.

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


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

В той разводке все через Ж... , если правила знать или хотябы немного картинок посмореть их семинаров по разводке плат. Да и ТС похоже понимает это.

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


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

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

Вы свою прошивку в рабочем виде видели на отладке какой-нибудь?

Сначала нужно убедиться осцилографом что есть все сигналы на шине и они правильные.

Что есть запись, чтение , рефреши и т.д. 

з.ы.

У вас из приборов только мультиметр и тормозной логический анализатор?

От осцилографа на 200 Мгц было бы больше пользы.

В качестве основы я брал код для отладочной платы STM32F769I_EVAL (если у Вас есть на компе CobeMX и все библиотеки обновлены, то этот пример Вы можете найти тут ...\CubeMxRepository\STM32Cube_FW_F7_V1.15.0\Projects\STM32F769I_EVAL\Examples\FMC\FMC_SDRAM). МК на отладочной плате почти такой же как и на моей, только корпус разный. Также на платах разные микросхемы sdram, но, судя по даташитам, тайминги совпадают. Из осциллографов есть только Hantek 6074BC  с полосой пропускания 70 МГц. И то ли у меня руки из одного места, то ли действительно ПО для данного осцилограффа не позволяет нормально снимать и сохранять данные с него для дальнейшего анализа.

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


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

49 минут назад, Nowsan сказал:

В качестве основы я брал код для отладочной платы STM32F769I_EVAL ..

Я может куда не туда посмотрел конечно, но на STM32F769I_EVAL стоит 32 битная память , а у вас 16 битная и размер страницы разный - вы это учли в прошивке? 

49 минут назад, Nowsan сказал:

Из осциллографов есть только Hantek 6074BC  с полосой пропускания 70 МГц. 

С такой полосой можно смотреть цифровые сигналы частотой примерно до 20 МГц. И длительностью больше 40 нС.

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


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

6 минут назад, Lmx2315 сказал:

Я может куда не туда посмотрел конечно, но на STM32F769I_EVAL стоит 32 битная память , а у вас 16 битная и размер страницы разный - вы это учли в прошивке? 

Всё верно. На отладочной плате стоит 32-х разрядная sdram, а у меня 16. Да я это учёл. Я использую библиотеку HAL, так что вполне возможно она где-то косячит.

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


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

6 минут назад, Nowsan сказал:

Всё верно. На отладочной плате стоит 32-х разрядная sdram, а у меня 16. Да я это учёл. Я использую библиотеку HAL, так что вполне возможно она где-то косячит.

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

Один раз записать в память что-то простое , 0xffff чередуя c 0x0000 , а потом поставить на последовательное чтение и проверить осцилом что у вас данные считываются.

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


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

1 минуту назад, Lmx2315 сказал:

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

Один раз записать в память что-то простое , 0xffff чередуя c 0x0000 , а потом поставить на последовательное чтение и проверить осцилом что у вас данные считываются.

Спасибо большое за советы, проверю ещё разочек все настройки инициализации, после чего буду искать осцилографф. Будем думать, будем смотреть. Когда (если) решу проблему, обязательно напишу.

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


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

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

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

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

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

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

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

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

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

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