Jump to content

    

AVI-crak

Участник
  • Content Count

    239
  • Joined

  • Last visited

Everything posted by AVI-crak


  1. Прошивка QSPI из Keil.

    Общается точно так-же как и с внутренней флеш памятью - грузит в рам свою прошивку, запускает её, и подкидывает/забирает данные через буфер обмена в той-же рам памяти. Это к вопросу о том где искать - дык оно там, рядом.
  2. Не могу подружить SDRAM и LTDC

    Есть простое решение, нужно снять дамп регистров периферии после всех операций инициализации. Для этого пригодится макрос преобразования имени переменной в строку. Просто печать в отладку, с сохранением в файл, и уже потом проверка. Решение не годится для поиска различий в реализации алгоритмов, но позволяет выявить место косяка, что значительно сокращает время на решение проблемы.
  3. Не могу подружить SDRAM и LTDC

    Не совсем корректный вопрос. Выдавать может много, всё зависит от того как к ней обращаются. Начнём с того что sdram бодро читается/пишется линейными блоками, равными размеру одной страницы. Максимальная скорость - чтение всей страницы. А вот на границе страниц, FMC уже спотыкается. Там есть небольшая задержка, которая в идеале полностью поглощается собственным FIFO. В реальности задержка накапливается, и обязательно проявится. При обращении к другому банку - задержка ещё выше. Те самые cas ras. К этим задержкам добавляется до четырёх тактов работы арбитра, он решает кого подключать/отключать от шины. Ещё - FIFO автоматически догоняется после чтения/записи, и если попадает на границу банка - то арбитр не в состоянии быстро подключить новый интерфейс связи. Всё вместе роняет скорость рандомного чтения до уровня плинтуса. Самая дикая задержка может быть следствием "оптимизации" программного обращения к sdram, когда читают линейно в сторону уменьшения адреса. Так умеет только кеш, и быстрая sram. Но GCC упорно "оптимизирует" на обратное чтение/запись вообще весь код, даже там где нельзя.
  4. Не могу подружить SDRAM и LTDC

    Что-то много всего написано, но ограничение очень простое - скорость интерфейса FMC.
  5. Проблема с записью в sdram.

    Возможно физическое повреждение чипа памяти. В частности серия MT имеет очень нежные контакты, +4в уже дохнут. Мой чип памяти на отладке сдох от болтающегося провода дежурки +5в. Для таких ситуаций существует система контроля версий, откатиться назад - посмотреть изменения. Для программного кода есть несколько бесплатных программ, лично мне нравится черепаха TortoiseHg.
  6. Это чтение одного блока сектора. Я уже не помню, но кажется размер блока тоже можно считать. Есть флешки, у которых стоит 2-4 чипа памяти - дык вот для них размер блока почти всегда выше в 2-4 раза.
  7. Ультразвуковая мойка! до пятнадцати вольт без нагрузки с ёмкости 10uF. Но есно киловольты могут появиться только там - где на плату приклеивают пьезокерамику пищалку.
  8. STM32MP1 - bare metal

    Это-же свихнуться можно, если все регистры самостоятельно лопатить.
  9. Ну это как считать, вдоль или поперёк. Если использовать несколько FFT отчётов: то получится динамика (уровень колебаний амплитуды), и средняя относительная энергия не превышающая единицы для каждого отчёта. В звуке энергия не зависит от средств измерения, хотя есть зависимость от рабочего диапазона. Любое колебание можно усилить/ослабить и получить желаемую мощность на выходе. Это как батарейка, без нагрузки мощность в цепи нулевая.
  10. Может я чего путаю... В моём представлении энергетический спектр не зависит от амплитуды сигнала и от фазы - это показатель приближения синуса к меандру на выбранной частоте. То-есть количество и точность совпадения чётных гармоник к выбранной частоте. Частоты гармоник могут (обязаны) складываться в общем FFT спектре. По этой причине посчитать энергию за один проход невозможно. Получается уравнение с бешеным количеством переменных. Проще всего выполнить приближение, когда коэффициенты будут плавно расти. Выбираем частоту, находим все её гармоники, сортируем их по минимальному значению от рассчитанной амплитуды, используем это значение как эталон для пересчёта всех гармоник по амплитуде, и вычитания их значения из основного FFT сектора - с дополнительным коэффициентом приближения примерно 1/10 . Если в процессе вычитания будут получаться отрицательные числа - то весь цикл сбрасывается, и по новой с меньшим коэффициентом приближения. В результате FFT сектор будет иметь минимальные значения на уровне ошибок, энергетический спектр будет содержать коэффициенты наличия гармоник для каждой частоты в отдельности. В результате получается индикация грязного сигнала - буквально. Использовать на музыкальном аналоге совершенно бесполезно - там уже давно ггг... В связи с чем вопрос - где внезапно понадобился подобный инструмент?
  11. Все будут перемножены, но по порядку. Для каждой новой частоты будут свои четные гармоники. Есть готовые решения - голосовые вокодеры.
  12. Перемножать уровень чётных гармоник, уже после бпф. БПФБПФ
  13. STM32H743 + SDRAM MT48LC32M16A2-75

    Без настроек mpu - оно вообще читаться не должно.
  14. STLINK-V3MINI Появился на алиэкспресс... Тот самый, который продать не могут.
  15. Я вот жду когда компания st изготовит STLINK-V3MINI в количестве больше чем 4 штуки ...
  16. STM32CubeIDE

    Для экономии времени нужно иногда сохранять старые проекты отдельно, в виде стартовой точки. Хотя лучшим выходом будет использование контроля версий, например черепахи.
  17. AllWinner H3 - нет тактового сигнала

    Ну а документацию кто будет читать? У этого чипа нет внутреннего генератора, всё зависит от внешнего. И jtag неверно разведён, он на pf0-pf5 в дефолте висит. Тестовая линия (насколько мне помнится), должна иметь подтяжку на землю... И с питанием там заморочки, чип сам должен командовать внешним питанием. В том случае если ему насильно его включить - он может обидится и сдохнуть.
  18. stm32 i2c

    Да кстати, к 2019 году можно было сделать полностью аппаратную физику i2c. Без этих вот дополнительных шестнадцати флагов переменной важности.
  19. FatFS и прерывания

    У всех современных sd карт есть дополнительные уникальные команды управления, которые делятся на базовые по стандарту, и то что придумал производитель. Базовые определяются переключением стандарта, это требует полной смены алгоритма общения с картой. То-есть недостаточно просто повысить скорость интерфейса и использовать те-же функции - нужно читать поддержку стандарта конкретной sd, и перенаправлять функции чтения/записи/проверки. Стандартный драйвер от st - использует базовые команды 1,0 , и выше прыгнуть чисто физически не может. Уникальные команды от производителя доступны с версии 2,0. Там конечно бардак и полный хаос, но общий принцип описания команд достаточно простой - в виде hml. Место где расположено описание, у каждого производителя уникальное. По этому нужно читать id карты и использовать свои таблицы. Уникальные команды позволяют достичь максимальной скорости общения с картой. Ради экспериментов можно распотрошить драйвер от современного кардридера, там это почти в текстовом варианте записано.
  20. STMF407 + SD

    Управление количеством транзакций дма со стороны sd, грубо говоря можно корректно обработать массив в 66кб (больше счётчика дма).
  21. Новые STM32H7 - два ядра (M7+M4), 480 МГц

    sdram, ddr, ddr2-3-4-5 - это все внешний интерфейс динамической памяти, и кстати самое узкое место. Если память уже на кристалле - то посредники там нафиг не нужны.
  22. инструкция BX

    http://badembed.ru/assembler-pereklyuchenie-konteksta/ Так будет проще
  23. инструкция BX

    Отображение этого бита зависит от используемой ID. У некоторых id этот бит автоматом прибавляется/удаляется, чтобы не мозолить глаза и не путать пользователя. Интересно другое - в какой такой хитрой задаче потребовалось менять адрес возврата, там-же за всегда каша получается.
  24. счетчик DWT - аритмия

    Адресация в sdram не кратна внешним данным, младший адрес равен всей ширине данных на интерфейсе чипа. А там может быть 2-4-8-16-32 бита. Чтение всегда выполняется в полном физическом варианте, и уже на мк обрезается лишнее. Для записи есть внешние сигналы nbl1-nbl4, которые "выключают" неиспользуемые данные - чтобы не изменить чего лишнего. С большой вероятностью они у вас не используются. Пакетное чтение включено по умолчанию, для выключения нужна магия из доков на чип памяти. Некоторые производители чипов инопланетяне, у них не так как у всех. Вся настройка производится через линию адреса, которая должна быть распаяна полностью, не смотря на якобы "лишние" линии. Потом их можно освободить если очень хочется. И да, первое обращение к произвольному адресу - самое длительное. Но потом оно ограничено только тактовой частотой чипа (в пределах одной страницы).
  25. Ну тогда и мыслить нужно иначе. Для аналоговых схем сдвиг фазы очень легко фиксировать. Он там может быть в долях градуса, и аналог может его усилить. Но у вас цифра и измерить это время просто так не получится - это буквально 1-5 единиц таймера + дребезг. А вот управлять аналоговым коммутатором через таймер - значит выкинуть много корпусов жёсткой логики из аналоговой схемы. Без усилителя один фиг не получится. Есть вариант измерять затухание в катушке, ну или её нагрузку. Без сдвига фаз, без колебательных контуров - жёсткий меандр с контролем тока по тому-же таймеру. Если сдвинуть входной диапазон ацп на рабочую область захвата напряжений - то 12 бит должно хватить с лихвой. Там естественно всё будет в попугаях, но важно не напряжение - а скорость его изменения. И да, без акселя и гироскопа это будет очередная 100500 версия металлодетектора с али.