Nowsan 0 June 25, 2019 Posted June 25, 2019 · Report post Имеется плата с микроконтроллером STM32F769II и микросхемой sdram MT48LC4M16A2. Прошил мк тестовой программой. В ней на sdram записывается информация из одного буфера, а затем читается в другой. Проблема в том, что этого не происходит, второй буфер остаётся пустой. Сигналов WE и CS с помощью логического анализатора (макс. 24 МГц) не увидел. Простым "ногодрыгом" удостоверился, что ножки МК в принципе живые. Вопрос такой, может ли в данном случае неграмотная разводка платы (а в том, что она неграмотная сомневаться не приходиться) сделать устройство полностью неработоспособным. Устройство разведено на 4-х слойной печатной плате. В основном вся разводка выполнена на внутренних слоях, а значит почти у всех дорожек есть два переходных отверстия. Верхние два слоя залиты, насколько возможно, GND полигонами, два нижних слоя залиты VCC полигонами. Ещё есть такой момент, уже не касательно разводки ПП. Я заметил что всех отладочных платах от STM для тактирования МК используется кварц на 25 МГц, я же использую 10 МГц, при этом скорректировав все делители и умножители так, чтобы тактирование ядра и FMC совпадало с примерами, но вдруг всё же мистическим образом это не правильно и нужно использовать именно 25 МГц? Quote Share this post Link to post Share on other sites More sharing options...
Lmx2315 1 June 25, 2019 Posted June 25, 2019 · Report post Я не вижу ничего неправильного в разводке связей контроллера с sdram на этой плате. Переходные отверствия на этих частотах ни на что не повлияют. Единственно - не вижу блокировочных конденсаторов у памяти по питанию. И неизвестно правильно ли память принципиально подключена к контроллеру. Но что уж точно - вы должны были бы видеть сами сигналы на ножках адресса памяти ну и такты на неё , при любом виде разводки. Сомневаюсь что можно так коряво развести плату чтобы МК не завёлся. Тут уж точно такого нет - это по разводке. з.ы. Давайте схему подключения микроконтроллера и код инициализации частот. Quote Share this post Link to post Share on other sites More sharing options...
Nowsan 0 June 25, 2019 Posted June 25, 2019 · Report post 3 минуты назад, Lmx2315 сказал: Я не вижу ничего неправильного в разводке связей контроллера с sdram на этой плате. Переходные отверствия на этих частотах ни на что не повлияют. Единственно - не вижу блокировочных конденсаторов у памяти по питанию. И не известно правильно ли память принципиально подключена к контроллеру. С блокировочными конденсаторами, по питанию sdram действительно всё не так хорошо, как должно быть. Там есть две штуки 0805 под ней. Quote Share this post Link to post Share on other sites More sharing options...
Lmx2315 1 June 25, 2019 Posted June 25, 2019 · Report post 14 минут назад, Nowsan сказал: С блокировочными конденсаторами, по питанию sdram действительно всё не так хорошо, как должно быть. Там есть две штуки 0805 под ней. Этого достаточно. Вы когда ногодрыгом проверяли МК убедились что у вас частоты адекватные? Quote Share this post Link to post Share on other sites More sharing options...
AlexandrY 2 June 25, 2019 Posted June 25, 2019 · Report post 38 minutes ago, Lmx2315 said: Этого достаточно. Вы когда ногодрыгом проверяли МК убедились что у вас частоты адекватные? Да скорее всего непропай. Шелкография поверх площадок за себя говорит. Quote Share this post Link to post Share on other sites More sharing options...
Nowsan 0 June 25, 2019 Posted June 25, 2019 · Report post 31 минуту назад, Lmx2315 сказал: Этого достаточно. Вы когда ногодрыгом проверяли МК убедились что у вас частоты адекватные? Сейчас решил всё ещё раз проверить и заметил несколько особенностей, которые не заметил ранее. Программа проверки sdram состоит в следующем: всевозможная инициализация, затем каждые две секунды буфер Tx (размер каждого элемента 2 байта) заполняется новыми значениями, потом этот массив отправляется на sdram и тут же считывается обратно в Rx буфер (размер каждого элемента 2 байта). Не знаю как я мерил вчера, но сейчас увидел активность на ножках WE и CS (рис. 1 и 2), правда непонятно почему на ножке CS активность постоянная. В режиме отладки проверил содержимое Rx буфера, и оказалось, что в нём значения равны последнему элементу Tx буфера, но если между записью и считыванием добавить задержку, скажем, 100 мс (рис. 3), то содержимое Rx буфера по нулям. Насчёт ногодрыга, с ним всё в порядке в плане частот. 13 минут назад, AlexandrY сказал: Да скорее всего непропай. Шелкография поверх площадок за себя говорит. Мультиметром в режиме прозвонки проверил наличие сигнала от ножки МК до ножки sdram, с этим всё в порядке. Quote Share this post Link to post Share on other sites More sharing options...
Lmx2315 1 June 25, 2019 Posted June 25, 2019 · Report post Вы свою прошивку в рабочем виде видели на отладке какой-нибудь? Сначала нужно убедиться осцилографом что есть все сигналы на шине и они правильные. Что есть запись, чтение , рефреши и т.д. з.ы. У вас из приборов только мультиметр и тормозной логический анализатор? От осцилографа на 200 Мгц было бы больше пользы. Quote Share this post Link to post Share on other sites More sharing options...
Aner 0 June 25, 2019 Posted June 25, 2019 · Report post Тут много непонятно, начиная со схемы, которую не выложили, может там ошибка. Да разводка никакая с точки зрения правил разводки, но вполне может что то и работать. И таки ничего по вашей проге не написали, как конфигурили, как делители и тд. Для 10 мег тоже нужно все пересчитать правильно, учитывая всю структуру внутренних и наружных интерфейсов. Как то пересчитывал с 25 на 12 мгц, не все так хорошо получилось с Ethrenet10/100. Quote Share this post Link to post Share on other sites More sharing options...
Lmx2315 1 June 25, 2019 Posted June 25, 2019 · Report post 9 минут назад, Aner сказал: Да разводка никакая с точки зрения правил разводки. И что же там не так, в этой разводке для частоты на которой может работать контролер sdram от этого мк ? Плейны питания и земли - есть , блокировочные кондёры на ножках - есть, соединения короткие и прямые. Микрухи стоят вплотную к друг другу. Обвинять в данном случае разводку в неработоспособности это всё равно что искать ключи не там где потерял, а там где светло. Quote Share this post Link to post Share on other sites More sharing options...
Aner 0 June 25, 2019 Posted June 25, 2019 · Report post В той разводке все через Ж... , если правила знать или хотябы немного картинок посмореть их семинаров по разводке плат. Да и ТС похоже понимает это. Quote Share this post Link to post Share on other sites More sharing options...
Nowsan 0 June 25, 2019 Posted June 25, 2019 · Report post 1 час назад, Lmx2315 сказал: Вы свою прошивку в рабочем виде видели на отладке какой-нибудь? Сначала нужно убедиться осцилографом что есть все сигналы на шине и они правильные. Что есть запись, чтение , рефреши и т.д. з.ы. У вас из приборов только мультиметр и тормозной логический анализатор? От осцилографа на 200 Мгц было бы больше пользы. В качестве основы я брал код для отладочной платы STM32F769I_EVAL (если у Вас есть на компе CobeMX и все библиотеки обновлены, то этот пример Вы можете найти тут ...\CubeMxRepository\STM32Cube_FW_F7_V1.15.0\Projects\STM32F769I_EVAL\Examples\FMC\FMC_SDRAM). МК на отладочной плате почти такой же как и на моей, только корпус разный. Также на платах разные микросхемы sdram, но, судя по даташитам, тайминги совпадают. Из осциллографов есть только Hantek 6074BC с полосой пропускания 70 МГц. И то ли у меня руки из одного места, то ли действительно ПО для данного осцилограффа не позволяет нормально снимать и сохранять данные с него для дальнейшего анализа. Quote Share this post Link to post Share on other sites More sharing options...
Lmx2315 1 June 25, 2019 Posted June 25, 2019 · Report post 49 минут назад, Nowsan сказал: В качестве основы я брал код для отладочной платы STM32F769I_EVAL .. Я может куда не туда посмотрел конечно, но на STM32F769I_EVAL стоит 32 битная память , а у вас 16 битная и размер страницы разный - вы это учли в прошивке? 49 минут назад, Nowsan сказал: Из осциллографов есть только Hantek 6074BC с полосой пропускания 70 МГц. С такой полосой можно смотреть цифровые сигналы частотой примерно до 20 МГц. И длительностью больше 40 нС. Quote Share this post Link to post Share on other sites More sharing options...
Nowsan 0 June 25, 2019 Posted June 25, 2019 · Report post 6 минут назад, Lmx2315 сказал: Я может куда не туда посмотрел конечно, но на STM32F769I_EVAL стоит 32 битная память , а у вас 16 битная и размер страницы разный - вы это учли в прошивке? Всё верно. На отладочной плате стоит 32-х разрядная sdram, а у меня 16. Да я это учёл. Я использую библиотеку HAL, так что вполне возможно она где-то косячит. Quote Share this post Link to post Share on other sites More sharing options...
Lmx2315 1 June 25, 2019 Posted June 25, 2019 · Report post 6 минут назад, Nowsan сказал: Всё верно. На отладочной плате стоит 32-х разрядная sdram, а у меня 16. Да я это учёл. Я использую библиотеку HAL, так что вполне возможно она где-то косячит. Если проверить прошивку негде , то я советую сначала разобраться с сигналами . Убедитесь что они все есть и правильные - для этого нужен осцилограф. Один раз записать в память что-то простое , 0xffff чередуя c 0x0000 , а потом поставить на последовательное чтение и проверить осцилом что у вас данные считываются. Quote Share this post Link to post Share on other sites More sharing options...
Nowsan 0 June 25, 2019 Posted June 25, 2019 · Report post 1 минуту назад, Lmx2315 сказал: Если проверить прошивку не где , то я советую сначала разобраться с сигналами . Убедитесь что они все есть и правильные - для этого нужен осцилограф. Один раз записать в память что-то простое , 0xffff чередуя c 0x0000 , а потом поставить на последовательное чтение и проверить осцилом что у вас данные считываются. Спасибо большое за советы, проверю ещё разочек все настройки инициализации, после чего буду искать осцилографф. Будем думать, будем смотреть. Когда (если) решу проблему, обязательно напишу. Quote Share this post Link to post Share on other sites More sharing options...