Jump to content

    

AVI-crak

Участник
  • Content Count

    224
  • Joined

  • Last visited

Everything posted by AVI-crak


  1. STM32CubeIDE

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

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

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

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

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

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

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

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

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

    В дма есть своё FIFO, использовать порог 1/2 и 4 удара на чтение из памяти для 16 бит данных, или 8 ударов на 8бит данных. Память при этом будет читаться два раза по 32бита. Арбитр шины допускает работу дма в режиме последовательного чтения без пропусков 2 или 4 полных такта. Два полных такта предпочтительнее, fifo в любом случае заполняется под крышку, порог - это когда количество данных уменьшилось. В этом случае есть ещё два запасных такта на борьбу с арбитром памяти. Можно поиграться с порогом 3/4, но это очень специфично. И да, дма не может читать данные из памяти быстрее 1/2 частоты шины, чисто физически. Но может стабильно писать на той-же частоте в периферию.
  14. st32f767 QSPI

    Ну да, именно так. Хотя возможно они как-то иначе называются, не суть - главное что удобно. Двухсторонняя пайка только на стадии проектирования выглядит заманчивой, потом начинаются проблемы. Мало того что после установки модуля теряется доступ к нижней стороне платы, так оно ещё будет жить собственной жизнью - без возможности отладки. Физику можно и нужно ставить на модуль, если она конечно вообще нужна. Просто для использования проводного подключения - ваш девайс должен иметь увесистые габариты, или иметь крепление к более массивному девайсу/железу. Иначе хвост начнёт вилять собакой. Выводить линии физики до трансформатора через краевой разъём можно, там вообще длинна ничем не ограничена. Вот только до трансформатора должно идти 4 линии - две сигнальных, и две питания - с подключением на фильтрующую керамику возле физики. Без объединения линий питания на трансе - то-есть он должен иметь раздельные обмотки. Это дело нужно отдельно искать, у них там беда с контактами. И ещё насчёт физики - имеет смысл поиграться на готовой отладке. Там алгоритм обработки протокола достаточно ощутимо жрёт процессорное время. В случае хорошей нагрузки - почти только этим и занимается. Если нет жёстких требований к внешним интерфейсам связи, то лучше использовать esp8266/esp32 - пусть отдельно потеет. Насчёт бга - эти чипы дешевле, и занимают меньшую площадь. У вас не получится сделать красиво в домашних условиях двухслойную плату для lqfp чипа - там ноги разбросаны в режиме пьяного индуса. То-есть переходные отверстия будут, и их будет много. К тому-же для двухслойки все быстрые линии должны иметь барьер из линии земли или питания. Земля при этом приобретает вид сетки - горизонт на одной стороне и вертикаль на обратной, с огромным количеством контактов пересечения. Площадь ПП при этом растёт в квадратичной последовательности. Сделать можно - но это адский труд, ну его нафиг. 4 слоя разводятся в режиме обезьяны, и всегда в рабочем состоянии. И ещё насчёт s25fl128/256s - эти чипы реально быстрее винборда, да и всего остального тоже. Дело в том что тактовая частота - это только внешняя реклама серии. Собака зарыта в таймингах доступа. Они там ощутимо меньше всего что я раньше видел. В режиме работы Memory-mapped - arm чип может напрямую обращаться к внешней памяти, без программных прослоек. По любым доступным адресам - с максимальной скоростью в последовательном чтении данных. А вот когда адрес новый - arm ядро ждёт ответа в режиме стоп. Буквально останавливается. То-есть в случае с дешевой внешней qsp флешкой - от мегагерцев процессора мало чего остаётся.
  15. st32f767 QSPI

    После sdram памяти, qspi, кварцев, и полного выхлопа на экран - остаётся очень мало ног. Причём занятые ноги почти всегда имеют один вариант. Если sdram 32 бита - то остаток вообще мал. Для TFT есть альтернатива где нет дополнительных альт функций. Всё что осталось прекрасно помещается на краевые полигоны для пайки. Так можно сэкономить на площади 4-х слойки. А если сразу брать чип и память в бга корпусе - то в принципе можно будет торговать ПП, с неплохим выхлопом. Линии на периферию не требовательны к скорости, и им достаточно двухслойной платы. А если это будет макетка - то ещё дешевле.
  16. st32f767 QSPI

    S25FL256S qspi ddr 54мгц, наверное самый быстрый чип получается. Это чтобы графику хранить и использовать без предварительного копирования в память. А чтобы просто иметь размер - достаточно микро сд карту на пузико припаять, она выдержит - проверял.
  17. Секундочку, там-же вроде как программный юсб под миди протокол на выхлопе, только непонятно откуда данные появляются. То-есть переписывать вообще всё, имена файлов можно старые оставить, ради прикола.
  18. Всё верно, ARM ядру пофиг откуда читать код и данные, и под каким соусом. А вот системе защиты - нет. Не важно где располагаются ссылки и данные, важно чтобы код был только во флешь. Ну или как минимум - не выполнялся из рам, когда его не просят об этом.
  19. А вот это правильный вопрос. В линкере физическая память может иметь атрибуты: "x" - выполнение кода, "r" - чтение, "w" - запись. Разная память - разные сочетания атрибутов.
  20. Ну дык это основная фишка защиты ARM процессоров, они таким образом программный код от данных отличают.
  21. Обращение по адресу кратному двойке - это всегда чтение данных. Выполнение кода всегда в фоновом режиме прибавляет 1 к адресу. По этому нельзя запрещать чтение всей флешь памяти. Её нужно явно поделить на секции: только для кода, и только для данных. Ну и ещё один прикол, код немного разбухает - потому как данные теперь находятся чуть дальше обычного.
  22. Двухканальные режим qspi в stm32f469

    Везде есть ошибки, даже там где их не видно. В любом случае CMSIS развивается, чего-то там добавляют,чего-то урезают. Кубик завис в версии CMSIS, компания даже не пыталась его изменить под свои мк. https://github.com/ARM-software/CMSIS_5 Насчёт двух флешек - частоту придётся понизить. А для quad-spi прескаллер будет плясать между 2 и 3, там нет промежутка. Гораздо выгоднее использовать быстрый чип в DDR режиме, например S25FL256SAGMFI000.
  23. STM32F722 и Cache Coherency

    // ?????? HF Dream Receiver (?? ??????? ?????) Там наверное что-то важное было... До автоматической смены кодировки.
  24. Кубик обновился, появилась серия STM32MPxxx, с возможностью подключения DDR3 памяти. Вроде как можно победить, наверное.
  25. STM32H750 + Ethernet + веб-загрузчик

    Ну, возможно он не знает про младший бит адреса для данных и команд.