Stm32f746g disco как выводить изображение

от admin

Stm32f746g disco как выводить изображение

Разработка графических устройств на STM32. Выбираем графическую библиотеку

Начатую еще в прошлом году серию статей под условным названием «STM32 + периферия = LOVE» [1, 2, 3] продолжает обзор графических библиотек, позволяющих упростить и ускорить вывод на рынок готового изделия. Рассмотрены универсальная библиотека STemWin и более сложные, но предназначенные для топовых серий STM32 библиотеки Embedded wizard и TouchGFX.

Микроконтроллеры STM32 популярны среди отечественных разработчиков благодаря хорошему сочетанию цены, производительности, набора периферийных устройств и интерфейсов. Тенденции рынка встраиваемых устройств таковы, что во многих случаях требуется наличие графического пользовательского интерфейса или, как минимум, интуитивно понятное отображение данных или визуализации процессов. С аппаратной точки зрения в семействе STM32 представлены микроконтроллеры со специализированными периферийными блоками, которые используются для работы с TFT-дисплеями: FSMC, LTDC, DSIHOST, Chrom-ART Accelerator, Chrom-GRC и JPEG-кодек. Во многих случаях они позволяют существенно разгрузить процессорное ядро [3].

При разработке устройств с графическим интерфейсом перед разработчиком встает проблема выбора между реализацией собственных графических примитивов и библиотек, и применением готовых библиотек. Первый путь приведет к необходимости написания кода для отрисовки двух-/трехмерных объектов, реализации функций прозрачного слоя, решению вопросов наложения объектов в трехмерных сценах и многому другому, не считая необходимости реализации низкоуровневых драйверов. Применение готовых библиотек потребует от разработчика перехода к определенному стилю кода, характерному для целевой библиотеки. Дополнительно разработчику необходимо будет изучить специфику работы с готовой библиотекой – порядок инициализации функций и структур данных, наличие callback-функций, задействованные ресурсы контроллера.

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

Библиотека STemWin

Графическая библиотека для встраиваемых устройств STemWin, представленная компанией Segger, может работать и в однозадачном, и в многозадачном окружениях с проприетарной операционной системой или с любой из коммерческих RTOS. Библиотека может быть настроена для работы с любым устройством отображения – дисплеем или экраном, – вне зависимости от типа контроллера дисплея и целевого контроллера [4]. Пробная полнофункциональная версия библиотеки доступна на сайте производителя после регистрации.

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

При разработке программного обеспечения обычно возникает выбор между подключением к проекту набора внешних файлов и созданием библиотеки. Если используемый инструментарий поддерживает так называемую «умную» сборку (smart linking), при которой в исполняемый код попадают только структуры и функции, реально задействованные в коде проекта, то особой необходимости в формировании специализированной библиотеки нет. В противном случае все прикрепленные к проекту файлы и функции в них будут скомпилированы и собраны в бинарном коде проекта, который в итоге будет иметь неоправданно большой размер.

В общем случае процедура включения STemWin в проект следующая: подключаются файлы ядра библиотеки, драйвер экрана, используемые шрифты и все дополнительные модули STemWin, которые планируется использовать.

Следующим шагом является конфигурирование STemWin. Задаются следующие параметры:

  • размер памяти, отводимый под STemWin;
  • драйвер экрана;
  • процедуры преобразования цветов;
  • процедуры инициализации контроллера экрана;
  • использование аппаратных ускорителей;
  • прикладные задачи, работающие с графикой.

STemWin поставляется с набором примеров и руководств по применению, которые помогают начать работать с библиотекой.

Партнерство с Segger Microcontroller GmbH & Co. KG позволяет компании STMicroelectronics предоставить потребителям своих микроконтроллеров библиотеку STemWin [5].

Библиотека STemWin представляет собой комплексное решение для работы с графикой, обладающее богатым набором функций, таких как декодирование форматов JPG, GIF и PNG, поддержка виджетов (флажки, кнопки и прочее) и сервера VNC. Это позволяет реализовывать функционал удаленного дисплея. Предлагается также инструментарий (например, GUIBuilder) для создания диалоговых окон по принципу drag-and-drop. Эта графическая библиотека полностью интегрирована в пакеты прошивки STM32Cube, например, STM32CubeF2, STM32CubeF3 и STM32CubeF4).

Последние версии библиотеки можно найти, скачав ПО STM32Cube.

Структура библиотеки STemWin представлена на рисунке 1.

Рис. 1. Структура библиотеки STemWin

Рис. 1. Структура библиотеки STemWin

Библиотека содержит два драйвера дисплеев (таблица 1):

  • драйвер с прямым доступом LIN-драйвер;
  • драйвер с косвенным доступом – FlexColor-драйвер для работы с экранами с последовательной или параллельной шиной управления.

Список поддерживаемых отладочных плат приведен в таблице 2.

Таблица 1. Возможности драйверов библиотеки STemWin

Драйвер Поддерживаемые контроллеры экранов Поддерживаемое количество бит цветности
LIN-драйвер Драйвер поддерживает любой контроллер дисплея с линейным адресным пространством и шинным интерфейсом. Видеопамять напрямую адресуется адресными линиями процессора. Это означает, что видеопамять напрямую направляется по адресу линий ЦП. 1, 2, 4, 8, 16, 24, 32
FlexColor-драйвер Epson: S1D19122
FocalTech: FT1509
Himax: HX8353, HX8325A, HX8357, HX8340, HX8347, HX8352A, HX8352B, HX8301
Hitachi: HD66772
Ilitek: ILI9320, ILI9325, ILI9328, ILI9335, ILI9338, ILI9340, ILI9341, ILI9342, ILI9163, ILI9481, ILI9486, ILI9488, ILI9220, ILI9221
LG Electronics: LGDP4531, LGDP4551, GDP4525
Novatek: NT39122
OriseTech: SPFD5408, SPFD54124C, SPFD5414D
Raio: RA8870, RA8875
Renesas: R61505, R61516, R61526, R61580
Samsung: S6E63D6, S6D0117
Sitronix: ST7628, ST7637, ST7687, ST7735, ST7712
Solomon: SSD1284, SSD1289, SSD1298, SSD1355, SSD2119, SSD1963, SSD1961, SSD1351
Syncoam: SEPS525
16, 18

Таблица 2. Список отладочных плат, поддерживаемых STemWin

Наименование МК Отладочная плата Интерфейс дисплея Драйвер
STM32F0 STM32091C-EVAL SPI FlexColor
STM32F1 STM3210C-EVAL
STM3210E-EVAL
SPI
FSMC
FlexColor
STM32F2 STM322xG-EVAL FSMC FlexColor
STM32F3 STM32303C-EVALSPI
STM32303E-EVALSPI
STM32373C-EVAL
SPI FlexColor
STM32F4 STM32F412G-DISCO
STM32F413G-DISCO
STM32F429I-DISCO
STM32F4x9I-EVAL
STM32F4xG-EVAL
STM32F446E-EVAL
STM32F469I-EVAL
STM32F469I-DISCO
FMC
FMC
LTDC
LTDC
FSMC
FMC
LTDC/DSI
LTDC/DSI
FlexColor
FlexColor
Lin
Lin
FlexColor
FlexColor
Lin
Lin
STM32F7 STM32F723E-DISCO
STM32F769I-EVAL
STM32F769I-DISCO
STM32F746G-DISCO
STM32F756G-EVAL
FMC
LTDC/DSI
LTDC/DSI
LTDC
LTDC
FlexColor
Lin
Lin
Lin
Lin
STM32H7 STM32H743I-EVAL LTDC Lin
STM32L1 STM32L152D-EVAL FSMC FlexColor
STM32L4 STM32L49I-EVAL-MB1314
STM32L49I-EVAL-MB1315
STM32L49I-DISCO
STM32L476G-EVAL
STM32L496G-DISCO
GFXMMU/LTDC/DSI
LTDC
GFXMMU/LTDC/DSI
FMC
FMC
Lin
Lin
Lin
FlexColor
FlexColor

Пример вывода строки «Hello World!» на экран с использованием средств библиотеки:

Некоторые этапы разработки графического интерфейса при помощи GUIBuilder представлены на рисунке 2 [6].

Рис. 2. Этапы разработки графического интерфейса при помощи GUIBuilder

Рис. 2. Этапы разработки графического интерфейса при помощи GUIBuilder

Библиотека TouchGFX

TouchGFX — это программная среда, принадлежащая компании Draupner Graphics. В июле 2018 года компания STMicroelectronics приобрела эту компанию. В ближайшем будущем появится полностью бесплатный релиз библиотеки TouchGFX для микроконтроллеров STM32. Но уже сейчас можно скачать библиотеку и попробовать ее возможности.

Библиотека позволяет создавать встроенные графические интерфейсы с высококачественной графикой и плавной анимацией. TouchGFX включает в себя простой в использовании графический редактор TouchGFX Designer с поддержкой технологии drag & drop [7].

TouchGFX включает в себя алгоритмы рендеринга и новые усовершенствованные механизмы рисования, оптимизированные для встраиваемых контроллеров, начиная с серий ARM Cortex M. В итоге достигается высокая производительность графического интерфейса и плавная анимация с частотой кадров 25 и более при типовой загрузке процессорного ядра менее 15%. Поддерживаются разрешения экранов вплоть до WSVGA 1024×600. Список отладочных плат, поддерживаемых TouchGFX, приведен в таблице 3.

На текущий момент поддерживаются следующие контроллеры [8]:

    /439; /479; /756; /769; .

Таблица 3. Список отладочных плат, поддерживаемых TouchGFX

Отладочная плата Микроконтроллер Дисплей, ″ Сенсор
STM32F429-DISCO STM32F429 ARM Cortex M4, 180 MHz 2,4 Резистивный
STM324x9I-EVAL STM32F429 ARM Cortex M4, 180 MHz 4,3 Резистивный
STM324x9I-EVAL STM32F439 ARM Cortex M4, 180 MHz 5,7 Емкостной
STM32469I-EVAL STM32F469I ARM Cortex M4, 180 MHz 4,0 (800×480) Емкостной
STM32F469I-DISCO STM32F469I ARM Cortex M4, 180 MHz 4,0 (800×480) Емкостной
STM32F746G-DISCO STM32F746 ARM Cortex M7, 200 MHz 4,3 Емкостной
STM32746G-EVAL ST STM32F746 ARM Cortex M7, 200 MHz 5,7 Емкостной
STM32756G-EVAL STM32F756 ARM Cortex M7, 200 MHz 5,7 Емкостной
STM32F769I-DISCO Hex file available here STM32F769 ARM Cortex M7, 200 MHz 4,0 Емкостной
STM32769I-EVAL STM32F769 ARM Cortex M7, 200MHz 4,0 Емкостной

TouchGFX отлично работает с системами, где TFT-контроллер интегрирован в MCU с кадровыми буферами во внешней памяти или с системами, которые используют ЖК-дисплей со встроенным буфером и контроллером экрана. Требования к ресурсам TouchGFX зависят от размера и сложности конкретного приложения. Типичные требования к реализации GUI:

  • Внутренняя память:
    • 10…20 кбайт (фреймворк и стек);
    • 1…15 кбайт (виджеты).
    • 20 кбайт (фреймворк);
    • 1…100 кбайт (определения экрана, логика графического интерфейса).
    • 320×240 QVGA-дисплеев с двумя кадрами = 307 кбайт;
    • 480×272 WQVGA-дисплеев с двумя кадрами = 522 кбайт;
    • 800×480 WVGA-дисплеев с двумя кадрами = 1,5 Мбайт.

    TouchGFX может работать с ОС (требуется одна выделенная задача и два семафора) или без нее.

    Работа с дизайнером графического интерфейса TouchGFX Designer достаточно проста, но вместе с тем позволяет создавать красочные и элегантные интерфейсы (рисунок 3 [9]).

    Рис. 3. Работа TouchGFX Designer

    Рис. 3. Работа TouchGFX Designer

    Инструментарий Embedded wizard

    Embedded wizard [10] является кроссплатформенным инструментом для разработки и создания графических интерфейсов, работающим даже на не очень мощных встраиваемых контроллерах. Embedded Wizard поддерживают серии контроллеров STM32 – F4, F7, F1 и L4 [11, 12]. Разработчикам предлагаются свободная версия библиотеки с ограниченным набором шрифтов, опций, предварительно скомпилированными файлами и ограниченной функциональностью, версия для малого бизнеса – с полной функциональностью, и профессиональная версия с исходными текстами, техподдержкой и возможностью работы с более чем 60 типами контроллеров.

    Библиотека упрощает разработку графического интерфейса пользователя и позволяет создавать высокопроизводительные графические интерфейсы с минимальными усилиями. Инструментарий поддерживает применение 2D-графического ускорителя ST Chrom-ART™ в тех микроконтроллерах, в которых он доступен.

    С помощью встроенного мастера GUI Builder разработчик может быстро и легко разрабатывать и развертывать HMI. Предлагается набор готовых к использованию и настраиваемых виджетов, таких как кнопки, слайдеры и текстовые представления практически на любой вкус. Возможна настройка их анимации и привязка требуемой функциональности. На основе полученного шаблона генерируется исходный код, который может быть в дальнейшем скомпилирован и загружен в целевой контроллер (рисунок 4 [13]).

    Рис. 4. Встроенный мастер GUIbuilder

    Рис. 4. Встроенный мастер GUIbuilder

    Предлагается достаточно много готовых примеров графических интерфейсов для плат Discovery (серий F4, F7).

    Заключение

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

    Рассмотренные программные продукты для контроллеров STM32 похожи по функционалу, но несколько отличаются по предлагаемым возможностям. STemWin – самая «демократичная», она позволяет без проблем работать со многими сериями контроллеров, включая бюджетные, но может показаться, что создаваемые с ее помощью интерфейсы несколько простоваты по дизайну (по крайней мере, из типовых примеров и набора элементов).

    Embedded wizard и TouchGFX предлагают более комплексные и яркие элементы и шаблоны интерфейсов. Однако они поддерживают, в основном, более мощные серии контроллеров STM32, и для создания более продвинутых интерфейсов требуется приобретение полной версии библиотеки.

    Как мы запускали стандартные примеры из библиотеки STM32Cube

    Добрый день! Не секрет, что стандартные примеры, работающие из коробки, — штука неплохая: загрузил на плату и наслаждайся. Это удобно для быстрого ознакомления. Но затем, если мы намерены сами что-то создать, нужно разбирать код примера, читать документацию, писать свой код, долго отлаживаться… Хочется этот этап как-то упростить. По этой причине, я хотел бы рассказать о том, как мы сделали интеграцию стандартных примеров из библиотеки STM32Cube в Embox.

    Итак, Embox, как и любая ОС, предоставляет много приятных вещей, таких как потоки, управление памятью и т.д. STM32Cube, в свою очередь, обладает множеством примеров по использованию аппаратуры. Каждый пример представляет собой самодостаточный набор исходников с проектными файлами для MDK ARM, EWARM и SW4STM32 (что-то поверх Eclipse, вроде бы), т.е. нажал кнопку — все само собралось, на плату загрузилось и запустилось. Теперь вопрос: как же интегрировать такой пример в инфраструктуру операционной системы? Посмотрим более детально как устроены примеры.

    Для желающих сразу посмотреть на то, что вышло, и пропустить технические подробности, прыгать сюда ��

    Я буду опираться на пример для LCD-экрана и BSP для отладочной платы STM32F746G-Discovery. Рассмотрим пример для экрана. Помимо проектных файлов в дереве исходников находятся readme.txt, Inc/ и Src/. Они-то нам и нужны, переходим в папку с исходниками и смотрим, что там лежит:

    Файл system_stm32f7xx.c имеется во всех примерах, в нем содержится инициализация встроенной флэш памяти, PLL, а также устанавливается SystemFrequency. Эти функции вызываются еще до main(). В Embox эти же настройки производятся при старте системы, поэтому этот файл мы просто не будем использовать. Идем далее, в файле stm32f7xx_hal_msp.c содержатся функции инициализации аппаратуры, специфичные для конкретной задачи. Это функции вида *_MspInit, которые определены изначально как WEAK, что позволяет их переопределить. Этот файл берем с собой в Embox. Далее, stm32f7xx_it.c — тут переопределяются обработчики аппаратных прерываний и исключений. И наконец, main.c — здесь все понятно — основная логика + некая инициализация, которую мы потом выбросим.

    Перенос примера в Embox происходит с помощью скрипта import_stm32_cube_example.py.
    После его запуска первым делом копируется в дерево исходников readme.txt, Inc/ и Src/. Теперь нужно сгенерить файл системы сборки Embox. Для этой цели используется шаблон, в который подставляется название примера, исходники, платформа (f7 или f4) и необходимые зависимости.

    Модули third_party.bsp.stmf7cube.stm32f7_discovery_bsp и third_party.bsp.stmf7cube.stm32f7_discovery_components содержат библиотеку BSP из Cube и разные вспомогательные библиотеки. Обычно в проектных файлах Cube эти исходники явно перечисляются, но у нас в системе они общие и подключаются одинаковым образом для любого примера все сразу. Эти библиотеки и все исходники примера будут скомпилированы в некоторую статическую библиотеку внутри Embox (в противном случае, нарушится линковка команд Embox с weak функциями Cube), поэтому для запуска примера будет сгенерирован файлик с одной лишь функцией main().

    С системой сборки разобрались, теперь нужно как-то переделать обработчики прерываний из Cube, чтобы ОС их приняла. Формат обработчика прерываний в Cube void (*handler)(void), в то время как в Embox сигнатура другая. На примере обработчика DMA2_Stream7_IRQHandler в Embox это можно реализовать так:

    А затем зарегистрируем эту обертку:

    Можно видеть, что названия обработчиков прерываний в Cube имеют вполне определенную структуру — *_IRQHandler (как и названия номеров прерываний — *_IRQn). Поэтому чтобы автоматически найти все обработчики прерываний для данного примера, мы сначала проходимся по файлу препроцессором cpp, и в полученном файле находим все *_IRQHandler. А далее, import_stm32_cube_example.py сгенерирует файл Src/embox_stm32f7xx_it_lib.c, в котором будут все необходимые обработчики прерываний и глобальная функция embox_stm32_setup_irq_handlers, вызов которой регистрирует обработчики прерываний.

    Помимо прерываний от периферии нужно еще не забыть про аппаратный таймер, так как в обработчике таймера Cube (называется он SysTick_Handler) могут происходить действия типа заполнения аудио буферов. Поэтому обработчик первого уровня — это обработчик в Embox, который в конце уже вызовет SysTick_Handler.

    Наконец, нужно исправить Src/main.c. Во-первых, функция main в примерах Cube всегда содержит 3 стандартных вызова — CPU_CACHE_Enable(), HAL_Init(), SystemClock_Config(). Эти функции и так вызываются при старте Embox, поэтому в примере они крайне вредны, поэтому автоматически оказываются закомментированы. И последнее, добавляется регистрация обработчиков прерываний, т.е. вызов вида

    В итоге получается полноценный модуль ОС, который можно сразу же включить в конфиг, залить Embox на плату, и запускать как обычную команду из командной строки.

    Для демонстрации всего вышеперечисленного я выбрал, как уже говорил, два примера — 1) Экран LCD 2) Пример с записью звука из BSP.

    Для желающих поиграться с STMкой ниже даю ссылки и рецепты. Вероятно, тут пригодится статья о том, как собрать и запустить Embox.

    Пример LCD на STM32F746G-Discovery

    Переходим в папку с Embox, и добавляем пример:

    # ./scripts/stm32/import_stm32_cube_example.py f7 ./build/extbld/third_party/bsp/stmf7cube/core/STM32Cube_FW_F7_V1.5.0/Projects/STM32746G-Discovery/Examples/LTDC/LTDC_Display_1Layer

    Эта директория с длинным названием появится после того как вы первый раз соберете Embox, при сборке скачается архив с STM32Cube под F7 и cкопируется куда нужно.

    Теперь в папке platform/stm32f7/cmds/ появится пример LTDC_Display_1Layer. Можете сами зайти в папку и убедиться если не верите ��

    worklog: STM32 LTDC, первые шаги.

    Сначала прикидываем, какая нам нужна пиксельная частота. Исходим из предположения, что кадровая частота будет порядка 60..70 герц, плюс-минус. Полный размер кадра — 928*525 = 487200 пикселей (видимых и невидимых, считать нужно все), соотв., такое количество пиксельных синхроимпульсов приходится на один кадр. Умножаем сие на 60 герц, получаем 29232000 герц пиксельной частоты. Число неудобное, некруглое, корявое. Подгоняем его туда-сюда, оставаясь в пределах рекомендуемых значений — останавливаемся на 36 МГц. Очень удобно для канала PLLSAI, конкретные настройки тут не затрагиваются (ибо вариантов больше одного).

    Далее определимся с форматом и организацией видеоданных. Контроллер поддерживает т.н. «слои», числом до двух штук — это абстракция, позволяющая логически разделить массив данных в памяти и отображение на экране. Слой может быть равен по размерам или меньше, чем физический экран (я пока не понял, может ли он быть больше — но это тоже отдельная тема). Контроллер читает данные из обоих слоёв, преобразует (при необходимости) формат пикселей, компонует их при помощи альфа-блендинга, подмешивает дизер (если надо) и выдаёт по физическому интерфейсу в панель. Цвет может задаваться непосредственно компонентами или же, как в старые добрые времена, палитрой — в памяти при этом лежат ИНДЕКСЫ цвета. Формат пикселей может иметь альфа-компоненту. Слой так же имеет свою альфа-компоненту. Схема блендинга довольно запутанная, я пока в ней не разбирался.

    Важно тут то, что чем шырше пиксел, тем шустрее должна работать память, чтобы успевать прокачивать данные. Т.е. если у нас 32-битные пикселы (8 бит альфа + RGB), то скорость их извлечения из памяти должна быть не меньше, чем пиксельная частота. С одной стороны, говно вопрос — 108 мегагерц на шине как бы дают почти трёхкратный запас. С другой стороны, не стоит забывать, что видеоконтроллер это не единственный потребитель полосы пропускания, плюс к тому есть всякие оверхеды и прочие задержки. Так что 36 МГц пиксельной это уже близко к пределу, если использовать широкий цвет. Для фоторамки, которая ничем особым больше не занята и всю SDRAM использует лишь под картинки, это вполне терпимо. Но естественным образом возникает вопрос, можно ли схалтурить?

    Можно! я не зря упомянул палитровый цвет — в таком случае 24-битные пикселы получаются из 8-битных индексов посредством отображения их на Color Look-Up Table. К счастью, этот CLUT находится в совершенно отдельном адресном пространстве и обращение к нему не занимает пропускную способность памяти вовсе. Просто заносим через специальный регистр 256 записей, сопоставляя номер цвета с его фактическим значением, и включаем (потом) режим 8-битного индексированного цвета, и вуаля — для моей задачи этого будет более чем достаточно.

    Слоёв два, CLUT у каждого свой, плюс в этом формате так же можно использовать альфа-блендинг. Это круче, чем VGA!

    Так вот, настраиваем тайминги, идя прям по порядку регистров, как они в референс-мануале: LTDC->SSCR, LTDC->BPCR и так далее (без STM32CubeMx — вместо помощи он всё только сильнее запутывает, а понять, как всё это хозяйство работает, можно лишь читая мануалы и документацию на чип). Не забываем, что в эти регистры заносятся не величины всех этих импульсов, а абсолютная «пиксельная координата», т.е. если пишем в регистр, задающий ширину видимой зоны, то заносим туда суммарное значение «синхроимпульс + porch + ширина видимой зоны» (минус 1 пиксель), это т.н. accumulated value. Так же не забываем настроить полярность синхроимпульсов — есть панели, у которых эти сигналы могут иметь инверсию.

    Включаем контроллер: LTDC->GCR |= LTDC_GCR_LTDCEN
    Не забываем ещё физически включить дисплей (некоторые модели — в частности, используемый мной — требуют дополнительного сигнала разрешения работы) и подсветку.
    Если мы настроили всё верно и прописали цвет фона, то дисплей включится, на управляющих пинах появятся синхроимпульсы и поверхность засветится равномерной заливкой — контроллер начал что-то выводить. Ура!
    DSCN2160
    Тут заливка не очень-то равномерная — у дисплейчка довольно-таки печально всё с углами обзора. Зато дёшево!

    Теперь надо прикинуть, собсно, какие слои мы будем использовать и куда их запихнуть.
    Сейчас мне представляется так: слой 1 (физически он всегда внизу, под слоем 2) будет использоваться под GUI. Формат пикселей 8 бит CLUT без альфы (L8), размер совпадает с отображаемой зоной на дисплее, т.е. 800*480. Т.е. требуется один байт на пиксель.
    Слой 2, который наверху, будет использоваться под активно обновляемое изображение — спектр, панорамный индикатор, осциллограмма или что-то ещё. Формат пикселей 8-бит CLUT с альфа-каналом (AL88) — два байта на пиксель. Размер этого «окна» будет меньше физического дисплея. Скажем, 500*200. За счёт альфа-блендинга можно будет под этот слой подложить условно-статичный фон, например, с какой-нибудь шкалой.

    Прикидываем требуемые объёмы памяти. Вспоминаем, что есть такая штука, как двойная буферизация — пока рисуется один фреймбуффер, процессор занят работой с другим (если надо) и наоборот. Подменять их удобно, когда идёт период «обратного луча» (тот самый porch), для чего предусмотрено прерывание по номеру строки: записываем в регистр LTDC->LIPCR строчку, которая находится в «тёмной» зоне, влючаем прерывание Line interrupt и вуаля, соответствующий обработчик может жонглировать адресом фреймбуффера.

    Исходя из нужных нам объёмов и зная, по каким адресам у нас сидит память, совершенно произвольно назначаем стартовый адрес фреймбуфера.
    Заносим параметры его логической геометрии в соответвующие регистры слоя. Там есть масса нюансов, связанных с кэшированием и предсказывающим чтением из памяти, так же с 64-байтовым бурстом чтения и read boundary — это пока не важно, можно подкрутить потом.

    В регистр WHPCR (Window Horizontal Start Position) заносим значение (Horz.SyncWidth + Horz.BackPorch) в поле WHSTPOS и (Horz.SyncWidth + Horz.BackPorch + Horz.DisplayArea — 1) в поле WHSPPOS, аналогично для регистра WVPCR (только вертикальное измерение). Первое значение задаёт нулевой ЛОГИЧЕСКИЙ пиксел окна относительно ФИЗИЧЕСКОГО пиксела на дисплее по соответвующей оси, второе значение задаёт последний логический пиксел. Таким образом, когда мы пишем в слой по координатам , электроника преобразует это в , то есть этот «нулевой» пиксел попадёт прям в самое начало видимой зоны — туда, где уже закончились синхроимпульсы.

    Так же настраиваем альфу для всего слоя (0 — полностью прозрачный, 255 — полностью непрозрачный), задаём цвет заливки ЗА пределами слоя (т.е. если он занимает лишь часть площади экрана, то вокруг него будет эта заливка), специальные константы, устанавливающие режим блендинга, а так же ОТСТУП строки (параметр, определяющий промежуток между началом одной строки и началом следующей) и ДЛИНУ строки. Это две разные, хоть и очень тесно связанные, сущности — нужные как раз для преодоления сложностей с read boundary и т.п. В простейшем случае эти тонкости можно проигнорировать и записать отступ строки (в байтах), равный, собсно, длине строки. Длина строки заносится с поправкой +3 байта (т.е. если у нас 800 пикселей и 1 байт на пиксел, то надо записать 803).
    Записываем количество строк. Я не знаю, почему это сделано так, ведь количество строк уже как бы известно из содержимого регистра WVPCR — достаточно от координаты последней строки отнять координату первой.. ну да ладно, надо так надо.
    Записываем физический адрес начала рабочего фреймбуфера (как уже написал, более-менее произвольная вещь и его можно переписывать прям во время работы, подменяя один буфер другим): LTDC_Layer1->CFBAR = (uint32_t)FB1_Start;
    Включаем слой и, одновременно, работу с CLUT: LTDC_Layer1->CR = LTDC_LxCR_CLUTEN | LTDC_LxCR_LEN;

    А самое главное — указываем, что обновление регистров должно сработать во время vertical blanking: LTDC->SRCR = LTDC_SRCR_VBR

    Если этого не сделать, то все вышеобозначенные значения останутся сидеть в т.н. «теневых регистрах» (они нужны для синхронизации между сверхбыстрой внутренней шиной микроконтроллера и довольно-таки тормозными структурами внутри видеоблока).

    Всё, теперь можно навалить пикселей во фреймбуфер и наслаждаться результатом (если на дисплее вы видите кашу из цветных пикселов, то вспомните, что содержимое оперативной памяти, даже SDRAM, при рестарте процессора само не обнуляется!)

    Русские Блоги

    STM32F746G-DISCO официальное рутинное программирование

    1. Сначала установите STM32 ST-LINK Utility v3.9.0.exe, которая должна быть версии V3.9 (официально заявлена).

    2. Откройте программное обеспечение, выберите Внешний загрузчик, выберите N25Q128A_STM32F746G-DISCO, в первый раз, когда вам нужно добавить внешний загрузчик, чтобы его найти, похоже, это для записи внешней QSPI FLASH, предположительно для сохранения ресурсов изображения, используемых в проекте. , конкретный См. статью 5 для объяснения причин.

    3. Подключите плату, File-> Open files, выберите \ STM32Cube_FW_F7_V1.4.0 \ Projects \ STM32746G-Discovery \ Demonstration \ Binaries \ STM32746G-DISCO_Demo_V1.1.2.hex

    4. Щелкните Target-> program, программирование завершено, перезапустите OK.

    5. Если вы используете проект IAR для записи напрямую (или KEIL), \ STM32Cube_FW_F7_V1.4.0 \ Projects \ STM32746G-Discovery \ Demonstration \ EWARM, то изображение на ЖК-интерфейсе отсутствует или изображение нечеткое, просто нажмите Little немного.

    Как мы запускали стандартные примеры из библиотеки STM32Cube

    Добрый день! Не секрет, что стандартные примеры, работающие из коробки, — штука неплохая: загрузил на плату и наслаждайся. Это удобно для быстрого ознакомления. Но затем, если мы намерены сами что-то создать, нужно разбирать код примера, читать документацию, писать свой код, долго отлаживаться… Хочется этот этап как-то упростить. По этой причине, я хотел бы рассказать о том, как мы сделали интеграцию стандартных примеров из библиотеки STM32Cube в Embox.

    Итак, Embox, как и любая ОС, предоставляет много приятных вещей, таких как потоки, управление памятью и т.д. STM32Cube, в свою очередь, обладает множеством примеров по использованию аппаратуры. Каждый пример представляет собой самодостаточный набор исходников с проектными файлами для MDK ARM, EWARM и SW4STM32 (что-то поверх Eclipse, вроде бы), т.е. нажал кнопку — все само собралось, на плату загрузилось и запустилось. Теперь вопрос: как же интегрировать такой пример в инфраструктуру операционной системы? Посмотрим более детально как устроены примеры.

    Для желающих сразу посмотреть на то, что вышло, и пропустить технические подробности, прыгать сюда 🙂

    Я буду опираться на пример для LCD-экрана и BSP для отладочной платы STM32F746G-Discovery. Рассмотрим пример для экрана. Помимо проектных файлов в дереве исходников находятся readme.txt, Inc/ и Src/. Они-то нам и нужны, переходим в папку с исходниками и смотрим, что там лежит:

    Файл system_stm32f7xx.c имеется во всех примерах, в нем содержится инициализация встроенной флэш памяти, PLL, а также устанавливается SystemFrequency. Эти функции вызываются еще до main(). В Embox эти же настройки производятся при старте системы, поэтому этот файл мы просто не будем использовать. Идем далее, в файле stm32f7xx_hal_msp.c содержатся функции инициализации аппаратуры, специфичные для конкретной задачи. Это функции вида *_MspInit, которые определены изначально как WEAK, что позволяет их переопределить. Этот файл берем с собой в Embox. Далее, stm32f7xx_it.c — тут переопределяются обработчики аппаратных прерываний и исключений. И наконец, main.c — здесь все понятно — основная логика + некая инициализация, которую мы потом выбросим.

    Перенос примера в Embox происходит с помощью скрипта import_stm32_cube_example.py.
    После его запуска первым делом копируется в дерево исходников readme.txt, Inc/ и Src/. Теперь нужно сгенерить файл системы сборки Embox. Для этой цели используется шаблон, в который подставляется название примера, исходники, платформа (f7 или f4) и необходимые зависимости.

    Модули third_party.bsp.stmf7cube.stm32f7_discovery_bsp и third_party.bsp.stmf7cube.stm32f7_discovery_components содержат библиотеку BSP из Cube и разные вспомогательные библиотеки. Обычно в проектных файлах Cube эти исходники явно перечисляются, но у нас в системе они общие и подключаются одинаковым образом для любого примера все сразу. Эти библиотеки и все исходники примера будут скомпилированы в некоторую статическую библиотеку внутри Embox (в противном случае, нарушится линковка команд Embox с weak функциями Cube), поэтому для запуска примера будет сгенерирован файлик с одной лишь функцией main().

    С системой сборки разобрались, теперь нужно как-то переделать обработчики прерываний из Cube, чтобы ОС их приняла. Формат обработчика прерываний в Cube void (*handler)(void), в то время как в Embox сигнатура другая. На примере обработчика DMA2_Stream7_IRQHandler в Embox это можно реализовать так:

    А затем зарегистрируем эту обертку:

    Можно видеть, что названия обработчиков прерываний в Cube имеют вполне определенную структуру — *_IRQHandler (как и названия номеров прерываний — *_IRQn). Поэтому чтобы автоматически найти все обработчики прерываний для данного примера, мы сначала проходимся по файлу препроцессором cpp, и в полученном файле находим все *_IRQHandler. А далее, import_stm32_cube_example.py сгенерирует файл Src/embox_stm32f7xx_it_lib.c, в котором будут все необходимые обработчики прерываний и глобальная функция embox_stm32_setup_irq_handlers, вызов которой регистрирует обработчики прерываний.

    Помимо прерываний от периферии нужно еще не забыть про аппаратный таймер, так как в обработчике таймера Cube (называется он SysTick_Handler) могут происходить действия типа заполнения аудио буферов. Поэтому обработчик первого уровня — это обработчик в Embox, который в конце уже вызовет SysTick_Handler.

    Наконец, нужно исправить Src/main.c. Во-первых, функция main в примерах Cube всегда содержит 3 стандартных вызова — CPU_CACHE_Enable(), HAL_Init(), SystemClock_Config(). Эти функции и так вызываются при старте Embox, поэтому в примере они крайне вредны, поэтому автоматически оказываются закомментированы. И последнее, добавляется регистрация обработчиков прерываний, т.е. вызов вида

    В итоге получается полноценный модуль ОС, который можно сразу же включить в конфиг, залить Embox на плату, и запускать как обычную команду из командной строки.

    Для демонстрации всего вышеперечисленного я выбрал, как уже говорил, два примера — 1) Экран LCD 2) Пример с записью звука из BSP.

    Для желающих поиграться с STMкой ниже даю ссылки и рецепты. Вероятно, тут пригодится статья о том, как собрать и запустить Embox.

    Пример LCD на STM32F746G-Discovery

    Переходим в папку с Embox, и добавляем пример:

    # ./scripts/stm32/import_stm32_cube_example.py f7 ./build/extbld/third_party/bsp/stmf7cube/core/STM32Cube_FW_F7_V1.5.0/Projects/STM32746G-Discovery/Examples/LTDC/LTDC_Display_1Layer

    Эта директория с длинным названием появится после того как вы первый раз соберете Embox, при сборке скачается архив с STM32Cube под F7 и cкопируется куда нужно.

    Теперь в папке platform/stm32f7/cmds/ появится пример LTDC_Display_1Layer. Можете сами зайти в папку и убедиться если не верите 🙂

    STM32 и FSMC. Часть 2. Вывод изображения на дисплей.

    Совсем недавно мы познакомились с работой FSMC в STM32, подключили дисплей и раскрасили его разными цветами (вот). И пока еще не забыли все, что обсуждали в прошлой статье, давайте выведем на дисплей, что-нибудь поинтереснее, а именно какую-нибудь картинку.

    Что же нам для этого понадобится?

    Ну во-первых сама картинка. Находим какое-нибудь изображение размером 320*240. Я секунд за 20 нагуглил подходящую картинку — кадр из фильма Железный Человек, реклама которого, кстати, последние пару недель находится абсолютно везде что в интернете, что на улице )

    Время традиционной вставки: поскольку компания STMicroelectronics прекратила поддержку библиотеки SPL, которая использовалась в этом курсе, я создал новый, посвященный работе уже с новыми инструментами, так что буду рад видеть вас там — STM32CubeMx. Кроме того, вот глобальная рубрика по STM32, а также небольшая подборка на смежную тему из нового курса:

    Итак, мы подготовили то, что надо загрузить в память дисплея. Необходимо как-то преобразовать готовую картинку в массив чисел, соответствующих каждому отдельному пикселю. Но для начала конвертируем наш файл в формат bmp, это нам понадобится для дальнейших махинаций. Для того, чтобы получить необходимые данные из bmp файла воспользуемся отличнейшей утилитой от Segger под названием Segger Bitmap Converter. Дружно скачиваем ее, устанавливаем и запускаем.

    Запуск программы

    Давайте разбираться как с помощью этой программы конвертировать изображение в нужный нам вид. А довольно-таки просто. Заходим в меню File->Open и первым делом загрузим нашу картинку. Кстати, ее необходимо еще повернуть на 90 градусов, чтобы она легла на дисплей как надо. Получаем вот что:

    Изображение для конвертирования

    В меню Image видим интересный пункт Convert To. Но я, честно говоря, не понял практического смысла этой кнопки, поскольку даже при адском тыкании на разные выходные форматы ничего так и не произошло ) Поэтому идем снова в меню File и жмем на Save As. В появившемся диалоговом окне задаем имя файла, а в поле тип файла выбираем ”C” bitmap file:

    Сохраняем результат

    Появляется еще одно окно и вот тут то уже мы можем выбрать требуемый формат. Выбираем High Color (565), red and blue swapped и, нажав ОК, получаем готовый .с файл с сохраненным массивом данных для нашего изображения.

    Формат файла в Segger Bitmap Converter

    Далее я последовал следующий путем. В проект из предыдущей статьи (ссылка была в начале) я добавил еще один файл fsmc.h, в котором объявил массив и просто скопировал в него значения, которые выдала утилита Segger Bitmap Converter. Получилось вот что:

    Теперь еще пара небольших правок в функции main():

    И вот, в принципе, все готово. Заливаем программу в контроллер и получаем результат:

    Вывод изображения на дисплей при помощи STM32.

    В дальнейшем думаю еще что-нибудь замутим с STM32 и дисплеем, что-то мне понравилось это дело )

    Stm32f746g disco как выводить изображение

    • />1 марта
    • Тема:Работа сайта и сервера
    • От:makc
    • />1 марта
    • Тема:Работа сайта и сервера
    • От:makc

    —>

    Другие известные форумы и сайты по электронике

    все что посвящено электронике и общению специалистов. реклама других ресурсов.

    • Магазины
    • Форумы и конференции
    • Производители
    • Информационные ресурсы
    • Поисковики
    • FTP-серверы
    • />8 февраля
    • Тема:Куда пропал доступ к www.ti.com
    • От:jcxz
    • />8 февраля
    • Тема:Куда пропал доступ к www.ti.com
    • От:jcxz

    —>

    В помощь начинающему

    вопросы начального уровня

    Модераторы раздела VAI aosp SergM fill vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus

    • ARM, 32bit
    • MCS51, AVR, PIC, STM8, 8bit
    • Программирование
    • Схемотехника
    • Интерфейсы
    • />5 часов назад
    • Тема:Калибровка датчика тока на эффекте Холла
    • От:Vasil_Riabko
    • />5 часов назад
    • Тема:Калибровка датчика тока на эффекте Холла
    • От:Vasil_Riabko

    —>

    International Forum

    This is a special forum for English spoken people, read it first.

    • />25 февраля
    • От:HardEgor
    • />25 февраля
    • От:HardEgor

    —>

    Образование в области электроники

    все что касается образования, процесса обучения, студентам, преподавателям.

    Модераторы раздела des00

    • />10 часов назад
    • Тема:Курсы на тему СВЧ-электроники
    • От:Vasil_Riabko
    • />10 часов назад
    • Тема:Курсы на тему СВЧ-электроники
    • От:Vasil_Riabko

    —>

    Обучающие видео-материалы и обмен опытом

    Обсуждение вопросов создания видео-материалов

    Модераторы раздела iosifk

    • />17 февраля
    • Тема:Dilduino
    • От:k155la3
    • />17 февраля
    • Тема:Dilduino
    • От:k155la3

    Cистемный уровень проектирования

      Последнее сообщение

    —>

    Вопросы системного уровня проектирования

    Применение MATLAB, Simulink, CoCentric, SPW, SystemC ESL, SoC

    Модераторы раздела Rst7

    • />Четверг в 10:11
    • Тема:Снова о z-преобразовании
    • От:_sda
    • />Четверг в 10:11
    • Тема:Снова о z-преобразовании
    • От:_sda

    —>

    Математика и Физика

    Модераторы раздела Rst7

    • />7 марта
    • Тема:Предикат или квантор?
    • От:ch_19
    • />7 марта
    • Тема:Предикат или квантор?
    • От:ch_19

    —>

    Операционные системы

    Linux, Win, DOS, QNX, uCOS, eCOS, RTEMS и другие

    Модераторы раздела Rst7

    • Программирование
    • Linux
    • uC/OS-II
    • scmRTOS
    • FreeRTOS
    • Android
    • />Вторник в 20:21
    • Тема:Установка Windows XP на современный ПК 2020 года
    • От:Zoltrix
    • />Вторник в 20:21
    • Тема:Установка Windows XP на современный ПК 2020 года
    • От:Zoltrix

    —>

    Документация

    оформление документации и все что с ней связано

    Модераторы раздела Rst7

    • />18 часов назад
    • Тема:Как делают документацию для микроконтроллеров их…
    • От:Yra
    • />18 часов назад
    • Тема:Как делают документацию для микроконтроллеров их…
    • От:Yra

    —>

    Системы CAD/CAM/CAE/PLM

    обсуждение САПР AutoCAD, Компас, SolidWorks и др.

    • />5 февраля
    • Тема:Ошибка установки Solidworks
    • От:baumanets
    • />5 февраля
    • Тема:Ошибка установки Solidworks
    • От:baumanets

    —>

    Разработка цифровых, аналоговых, аналого-цифровых ИС

    Модераторы раздела Rst7

    • />Суббота в 17:12
    • Тема:Reference designs
    • От:nikitaborodenkov
    • />Суббота в 17:12
    • Тема:Reference designs
    • От:nikitaborodenkov

    —>

    Электробезопасность и ЭМС

    Обсуждение вопросов электробезопасности и целостности сигналов

    Модераторы раздела Rst7

    • ЭМС
    • Электробезопасность
    • />3 марта
    • Тема:Типовые схемы защиты от микросекундных помех
    • От:HardEgor
    • />3 марта
    • Тема:Типовые схемы защиты от микросекундных помех
    • От:HardEgor

    —>

    Управление проектами

    Управление жизненным циклом проектов, системы контроля версий и т.п.

    Модераторы раздела Rst7

    • />30 октября, 2022
    • Тема:Как тестировать разработанную электронику и встр…
    • От:KBH
    • />30 октября, 2022
    • Тема:Как тестировать разработанную электронику и встр…
    • От:KBH

    —>

    Нейронные сети и машинное обучение (NN/ML)

    Форум для обсуждения вопросов машинного обучения и нейронных сетей

    Модераторы раздела Rst7

    • />4 марта
    • Тема:Модуль на VHDL кусочно-линейной (семь участков) …
    • От:Мур
    • />4 марта
    • Тема:Модуль на VHDL кусочно-линейной (семь участков) …
    • От:Мур

    Программируемая логика ПЛИС (FPGA,CPLD, PLD)

      Последнее сообщение

    —>

    Среды разработки — обсуждаем САПРы

    Quartus, MAX, Foundation, ISE, DXP, ActiveHDL и прочие.
    возможности, удобства.

    Модераторы раздела vetal />des00 />

    • />19 часов назад
    • Тема:Gowin EDA — релизы и общие вопросы
    • От:Zversky
    • />19 часов назад
    • Тема:Gowin EDA — релизы и общие вопросы
    • От:Zversky

    —>

    Работаем с ПЛИС, области применения, выбор

    на чем сделать? почему не работает? кто подскажет?

    Модераторы раздела vetal />des00 />

    • />Суббота в 21:45
    • Тема:PLD Altera EPMxxxx+генератор 100МГц: как организ…
    • От:tegumay
    • />Суббота в 21:45
    • Тема:PLD Altera EPMxxxx+генератор 100МГц: как организ…
    • От:tegumay

    —>

    Языки проектирования на ПЛИС (FPGA)

    Verilog, VHDL, AHDL, SystemC, SystemVerilog и др.

    Модераторы раздела aosp vetal des00

    • />2 часа назад
    • Тема:Verilog, переменные в индексах массивов
    • От:Jackov
    • />2 часа назад
    • Тема:Verilog, переменные в индексах массивов
    • От:Jackov

    —>

    Системы на ПЛИС — System on a Programmable Chip (SoPC)

    разработка встраиваемых процессоров и периферии для ПЛИС

    Модераторы раздела vetal des00 Omen_13

    • />11 часов назад
    • Тема:Плата zcu102. Проблема "pcie link is down"
    • От:Lom
    • />11 часов назад
    • Тема:Плата zcu102. Проблема "pcie link is down"
    • От:Lom

    Цифровая обработка сигналов — ЦОС (DSP)

      Последнее сообщение

    —>

    Сигнальные процессоры и их программирование — DSP

    Обсуждение различных сигнальных (DSP) процессоров, возможностей, совместимости и связанных с этим тем.

    Модераторы раздела des00

    • />Четверг в 17:09
    • Тема:SAU510USB Iso-Plus
    • От:Alex11
    • />Четверг в 17:09
    • Тема:SAU510USB Iso-Plus
    • От:Alex11

    —>

    Алгоритмы ЦОС (DSP)

    Обсуждение вопросов разработки и применения (программирования) алгоритмов цифровой обработки сигналов.

    Модераторы раздела des00

    • />Суббота в 18:47
    • Тема:организация семплирования
    • От:thermit
    • />Суббота в 18:47
    • Тема:организация семплирования
    • От:thermit

    Микроконтроллеры (MCU)

      Последнее сообщение

    —>

    Cредства разработки для МК

    FAQ, How-to, тонкости работы со средствами разработки

    Модераторы раздела haker_fox

    • IAR
    • Keil
    • GNU/OpenSource средства разработки
    • />18 часов назад
    • Тема:Not a genuine ST Device! Abort connection
    • От:zheka
    • />18 часов назад
    • Тема:Not a genuine ST Device! Abort connection
    • От:zheka

    —>
    Модераторы раздела haker_fox

    • STM
    • NXP
    • Microchip (Atmel)
    • TI, Allwinner, GigaDevice, Nordic, Espressif и другие
    • />1 час назад
    • Тема:Allwinner V3s BareMetal -попытки
    • От:Ozelot
    • />1 час назад
    • Тема:Allwinner V3s BareMetal -попытки
    • От:Ozelot

    —>

    RISC-V

    Микроконтроллеры на базе ядер RISC-V, RISC-X

    Модераторы раздела haker_fox

    • />2 марта
    • Тема:Тайминги интерфейсов CH569/CH565
    • От:makc
    • />2 марта
    • Тема:Тайминги интерфейсов CH569/CH565
    • От:makc

    —>
    Модераторы раздела haker_fox

    • />28 февраля
    • Тема:DS1302 не тикает
    • От:borodach
    • />28 февраля
    • Тема:DS1302 не тикает
    • От:borodach

    —>

    MSP430

    Модераторы раздела VAI />haker_fox />

    • />5 часов назад
    • Тема:Реверс прошивки MSP430F67791A
    • От:Aries
    • />5 часов назад
    • Тема:Реверс прошивки MSP430F67791A
    • От:Aries

    —>

    Все остальные микроконтроллеры

    и все что с ними связано

    Модераторы раздела haker_fox

    • PIC
    • MCS51
    • PowerQUICC
    • HC(S)08
    • AVR32
    • STM8
    • MIPS
    • />10 часов назад
    • Тема:Чем считать прошивку upsd3212cv-24u6 от ST?
    • От:tiretrak
    • />10 часов назад
    • Тема:Чем считать прошивку upsd3212cv-24u6 от ST?
    • От:tiretrak

    —>

    Отладочные платы

    Вопросы, связанные с отладочными платами на базе МК: заказ, сборка, запуск

    Модераторы раздела haker_fox

    • Arduino
    • Raspberry Pi
    • Rainbow
    • Siberia
    • EVMxxxx
    • />11 часов назад
    • Тема:China-Link, Вариант отладчика из Китая
    • От:Akakiy
    • />11 часов назад
    • Тема:China-Link, Вариант отладчика из Китая
    • От:Akakiy

    Печатные платы (PCB)

      Последнее сообщение

    —>

    Разрабатываем ПП в САПР — PCB development

    FAQ, вопросы проектирования в ORCAD, PCAD, Protel, Allegro, Spectra, DXP, SDD, WG и др.

    Модераторы раздела SergM />fill />

    • Библиотеки компонентов
    • Altium Designer, DXP, Protel
    • P-CAD 200x howto
    • Эремекс, Delta Design
    • Cadence
    • Примеры
    • Zuken CADSTAR
    • Siemens EDA — Xpedition, PADS (ex. Mentor)
    • Бесплатные САПР: KiCAD, EasyEDA, EAGLE и др.
    • />10 часов назад
    • Тема:Автоматизация действий в Xpedition/PADS и редакт…
    • От:uzzzer
    • />10 часов назад
    • Тема:Автоматизация действий в Xpedition/PADS и редакт…
    • От:uzzzer

    —>

    Работаем с трассировкой

    тонкости PCB дизайна, от Spectra и далее.

    Модераторы раздела fill

    • />17 февраля
    • Тема:Как правильно перевести скоростную дифф. пару с …
    • От:DSIoffe
    • />17 февраля
    • Тема:Как правильно перевести скоростную дифф. пару с …
    • От:DSIoffe

    —>

    Изготовление ПП — PCB manufacturing

    Фирмы, занимающиеся изготовлением, качество, цены, сроки

    Модераторы раздела fill

    • ПСБ Технолоджи
    • ТеПро
    • PS-Electro
    • Резонит
    • PCB Professional
    • Абрис
    • ОАО "НИЦЭВТ"
    • ООО "М-Плата"
    • в домашних условиях
    • />Пятница в 07:43
    • Тема:Новости Резонита
    • От:anton.pushkov
    • />Пятница в 07:43
    • Тема:Новости Резонита
    • От:anton.pushkov

    Сборка РЭУ

      Последнее сообщение

    —>

    Пайка и монтаж

    вопросы сборки ПП, готовых изделий, а также устранения производственных дефектов

    • />13 часов назад
    • Тема:Sn64 Ag1 Bi35 как RoHS нормально паяет?
    • От:iiv
    • />13 часов назад
    • Тема:Sn64 Ag1 Bi35 как RoHS нормально паяет?
    • От:iiv

    —>

    Корпуса

    обсуждаем какие есть копруса, где делать и прочее

    • />28 февраля
    • Тема:Моделирование силы продавливания платы
    • От:destroit
    • />28 февраля
    • Тема:Моделирование силы продавливания платы
    • От:destroit

    —>

    Вопросы надежности и испытаний

    расчеты, методики, подбор компонентов

    • />Пятница в 09:15
    • Тема:Поверка контрольно-измерительного оборудования
    • От:borodach
    • />Пятница в 09:15
    • Тема:Поверка контрольно-измерительного оборудования
    • От:borodach

    Аналоговая и цифровая техника, прикладная электроника

      Последнее сообщение

    —>

    Вопросы аналоговой техники

    разработка аналоговых схем, моделирование схем в SPICE, расчёты и анализ, выбор элементной базы

    Модераторы раздела Alexandr ViKo Tanya Егоров

    • />8 часов назад
    • Тема:Измерительный 16-24 разрядный АЦП российского пр…
    • От:nbn
    • />8 часов назад
    • Тема:Измерительный 16-24 разрядный АЦП российского пр…
    • От:nbn

    —>

    Цифровые схемы, высокоскоростные ЦС

    High Speed Digital Design

    • />21 февраля
    • Тема:Влияние положительных и отрицательных выбросов (…
    • От:Plain
    • />21 февраля
    • Тема:Влияние положительных и отрицательных выбросов (…
    • От:Plain

    —>

    RF & Microwave Design

    wireless технологии и не только

    Модераторы раздела l1l1l1

    • />Суббота в 21:36
    • Тема:Вопросы по HFSS
    • От:nicaraguanec
    • />Суббота в 21:36
    • Тема:Вопросы по HFSS
    • От:nicaraguanec

    —>

    Метрология, датчики, измерительная техника

    Все что связано с измерениями: измерительные приборы (осциллографы, анализаторы спектра и пр.), датчики, обработка результатов измерений, калибровка, технологии измерений и др.

    Модераторы раздела ViKo />Tanya />

    • />Вторник в 10:19
    • Тема:Неблокирующее чтение из R&S ZNB? Кто-нибудь знае…
    • От:khach
    • />Вторник в 10:19
    • Тема:Неблокирующее чтение из R&S ZNB? Кто-нибудь знае…
    • От:khach

    —>

    АВТО электроника

    особенности электроники любых транспортных средств: автомашин и мотоциклов, поездов, судов и самолетов, космических кораблей и летающих тарелок.

    Модераторы раздела Vasily_

    • />4 марта
    • Тема:Провод для автомобильного компрессора
    • От:byRAM
    • />4 марта
    • Тема:Провод для автомобильного компрессора
    • От:byRAM

    —>

    Умный дом
    • />26 февраля
    • Тема:Как контролировать большое количество реле с пом…
    • От:mitya1698
    • />26 февраля
    • Тема:Как контролировать большое количество реле с пом…
    • От:mitya1698

    —>

    3D печать

    3D принтеры, наборы, аксессуары, ПО

    • />21 декабря, 2022
    • Тема:slicer для 3d принтера
    • От:Variant99
    • />21 декабря, 2022
    • Тема:slicer для 3d принтера
    • От:Variant99

    —>

    Робототехника

    Модели, классификация, решения, научные исследования, варианты применения

    • />31 марта, 2022
    • Тема:Подключение дисплея 3.2inch 320×240 Touch LCD (А…
    • От:Aaronli
    • />31 марта, 2022
    • Тема:Подключение дисплея 3.2inch 320×240 Touch LCD (А…
    • От:Aaronli

    —>

    Ремонт и отладка

    обсуждение вопросов ремонта и отладки различных устройств и готовых изделий

    Модераторы раздела Herz

    • />5 марта
    • Тема:Ремонт оссцилографа Hantek dso5102p — проблема с…
    • От:Zversky
    • />5 марта
    • Тема:Ремонт оссцилографа Hantek dso5102p — проблема с…
    • От:Zversky

    Силовая электроника — Power Electronics

      Последнее сообщение

    —>

    Силовая Преобразовательная Техника

    Источники питания электронной аппаратуры, импульсные и линейные регуляторы. Топологии AC-DC, DC-DC преобразователей (Forward, Flyback, Buck, Boost, Push-Pull, SEPIC, Cuk, Full-Bridge, Half-Bridge). Драйвера ключевых элементов, динамика, алгоритмы управления, защита. Синхронное выпрямление, коррекция коэффициента мощности (PFC)

    Модераторы раздела Herz />Егоров />

    • />Четверг в 23:24
    • Тема:Помогите рассчитать тор
    • От:Yuri7751
    • />Четверг в 23:24
    • Тема:Помогите рассчитать тор
    • От:Yuri7751

    —>

    Обратная Связь, Стабилизация, Регулирование, Компенсация

    Организация обратных связей в цепях регулирования, выбор топологии, обеспечение стабильности, схемотехника, расчёт

    Модераторы раздела Herz />Егоров />

    • />17 сентября, 2022
    • Тема:Ограничение скорости нарастания сигнала ШИМ на д…
    • От:Alex-lab
    • />17 сентября, 2022
    • Тема:Ограничение скорости нарастания сигнала ШИМ на д…
    • От:Alex-lab

    —>

    Первичные и Вторичные Химические Источники Питания

    Li-ion, Li-pol, литиевые, Ni-MH, Ni-Cd, свинцово-кислотные аккумуляторы. Солевые, щелочные (алкалиновые), литиевые первичные элементы. Применение, зарядные устройства, методы и алгоритмы заряда, условия эксплуатации. Системы бесперебойного и резервного питания

    Модераторы раздела Herz />Егоров />

    • />18 января
    • Тема:Температура Li-ion аккумуляторов
    • От:maksimdag0
    • />18 января
    • Тема:Температура Li-ion аккумуляторов
    • От:maksimdag0

    —>

    Высоковольтные Устройства — High-Voltage

    Высоковольтные выпрямители, умножители напряжения, делители напряжения, высоковольтная развязка, изоляция, электрическая прочность. Высоковольтная наносекундная импульсная техника

    Модераторы раздела Herz

    • />7 февраля
    • Тема:Маломощный трансформатор 220В -> 6000
    • От:sanya221
    • />7 февраля
    • Тема:Маломощный трансформатор 220В -> 6000
    • От:sanya221

    —>

    Электрические машины, Электропривод и Управление

    Электропривод постоянного тока, асинхронный электропривод, шаговый электропривод, сервопривод. Синхронные, асинхронные, вентильные электродвигатели, генераторы

    Модераторы раздела Herz

    • />17 февраля
    • Тема:ABB DCS550-S02-0680-05 F508
    • От:Oleg_Gordzei
    • />17 февраля
    • Тема:ABB DCS550-S02-0680-05 F508
    • От:Oleg_Gordzei

    —>

    Индукционный Нагрев — Induction Heating

    Технологии, теория и практика индукционного нагрева

    Модераторы раздела Herz

    • />10 января
    • Тема:Тиристорный инвертор
    • От:Слесарь
    • />10 января
    • Тема:Тиристорный инвертор
    • От:Слесарь

    —>

    Системы Охлаждения, Тепловой Расчет – Cooling Systems

    Охлаждение компонентов, систем, корпусов, расчёт параметров охладителей

    Модераторы раздела Herz

    • />23 февраля
    • Тема:Тепловой расчет для КТ827А
    • От:Valery-m
    • />23 февраля
    • Тема:Тепловой расчет для КТ827А
    • От:Valery-m

    —>

    Моделирование и Анализ Силовых Устройств – Power Supply Simulation

    Моделирование силовых устройств в популярных САПР, самостоятельных симуляторах и специализированных программах. Анализ устойчивости источников питания, непрерывные модели устройств, модели компонентов

    Модераторы раздела Herz />Егоров />

    • />8 февраля
    • Тема:Micro-Cap
    • От:Lnd
    • />8 февраля
    • Тема:Micro-Cap
    • От:Lnd

    —>

    Компоненты Силовой Электроники — Parts for Power Supply Design

    Силовые полупроводниковые приборы (MOSFET, BJT, IGBT, SCR, GTO, диоды). Силовые трансформаторы, дроссели, фильтры (проектирование, экранирование, изготовление), конденсаторы, разъемы, электромеханические изделия, датчики, микросхемы для ИП. Электротехнические и изоляционные материалы.

    Модераторы раздела Herz />Егоров />

    • />5 минут назад
    • Тема:есть ли Российские драйверы двигателей?
    • От:xabbal
    • />5 минут назад
    • Тема:есть ли Российские драйверы двигателей?
    • От:xabbal

    Интерфейсы

      Последнее сообщение

    —>

    Форумы по интерфейсам

    все интерфейсы здесь

    • ISDN/G.703/E1
    • ISA/PCI/PCI-X/PCI Express
    • Wireless/Optic
    • RS232/LPT/USB/PCMCIA/FireWire
    • Fast Ethernet/Gigabit Ethernet/FibreChannel
    • Интерфейсы для "интеллектуального дома"
    • от ТТЛ до LVDS здесь
    • IDE/ATA/SATA/SAS/SCSI/CF
    • Аудио/Видео интерфейсы
    • Сотовая связь и ее приложения
    • FAQ по XPort/WiPort
    • Controller Area Network (CAN)
    • />Среда в 10:15
    • Тема:SIM800 RTC установить и узнать время
    • От:jcxz
    • />Среда в 10:15
    • Тема:SIM800 RTC установить и узнать время
    • От:jcxz

    Поставщики компонентов для электроники

      Последнее сообщение

    —>

    Поставщики всего остального

    от транзисторов до проводов

    • />27 февраля
    • Тема:Shenzhen BLS electronics
    • От:Миша Чжу
    • />27 февраля
    • Тема:Shenzhen BLS electronics
    • От:Миша Чжу

    —>

    Компоненты

    Закачка тех. документации, обмен опытом, прочие вопросы.

    • Тех. документация
    • Микросхемы
    • Транзисторы
    • Диоды
    • Резисторы
    • Средства индикации
    • />Вторник в 17:50
    • Тема:Документация Hi3516EV300
    • От:MaxBMSTU
    • />Вторник в 17:50
    • Тема:Документация Hi3516EV300
    • От:MaxBMSTU

    Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир

      Последнее сообщение

    —>

    Обсуждение Майнеров, их поставки и производства

    наблюдается очень большой спрос на данные устройства.

    • />16 июля, 2021
    • Тема:Материнские платы для майнинга
    • От:Doka
    • />16 июля, 2021
    • Тема:Материнские платы для майнинга
    • От:Doka

    Дополнительные разделы — Additional sections

      Последнее сообщение

    —>

    Встречи и поздравления

    Предложения встретиться, поздравления участников форума и обсуждение мест и поводов для встреч.

    Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus

    • />5 марта
    • Тема:TIMTOS 2023: кто-то собирается?
    • От:Ruslan1
    • />5 марта
    • Тема:TIMTOS 2023: кто-то собирается?
    • От:Ruslan1

    —>

    Ищу работу

    ищу работу, выполню заказ, нужны клиенты — все это сюда

    Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus

    • />Четверг в 08:43
    • Тема:Группа инженеров разработает почти любую электро…
    • От:iBredihin
    • />Четверг в 08:43
    • Тема:Группа инженеров разработает почти любую электро…
    • От:iBredihin

    —>

    Предлагаю работу

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

    Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus

    • />7 часов назад
    • Тема:Ищу программиста STM32, CH32V307 на удаленную ра…
    • От:x893
    • />7 часов назад
    • Тема:Ищу программиста STM32, CH32V307 на удаленную ра…
    • От:x893

    —>

    Куплю

    микросхему; устройство; то, что предложишь ты 🙂

    Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus

    • />Пятница в 21:05
    • Тема:Куплю ЖКИ от Tektronix TDS 2022 KCS057QV1AJ-G39
    • От:Zversky
    • />Пятница в 21:05
    • Тема:Куплю ЖКИ от Tektronix TDS 2022 KCS057QV1AJ-G39
    • От:Zversky

    —>

    Продам

    есть что продать за деньги, пиво, даром ?
    Реклама товаров и сайтов также здесь.

    Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus

    • />8 часов назад
    • Тема:Продам MOSFETs STB43N65M5 1000 шт.
    • От:TAutomatic
    • />8 часов назад
    • Тема:Продам MOSFETs STB43N65M5 1000 шт.
    • От:TAutomatic

    —>

    Объявления пользователей

    Тренинги, семинары, анонсы и прочие события

    Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus

    • />Четверг в 11:38
    • Тема:Макро Групп – поставщик твердотельных СВЧ-усилит…
    • От:МакроГрупп
    • />Четверг в 11:38
    • Тема:Макро Групп – поставщик твердотельных СВЧ-усилит…
    • От:МакроГрупп

    —>

    Общение заказчиков и потребителей электронных разработок

    Обсуждение проектов, исполнителей и конкурсов

    Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 haker_fox iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus

    • />18 декабря, 2022
    • Тема:Как купить если ты не юрлицо?
    • От:Dejmos
    • />18 декабря, 2022
    • Тема:Как купить если ты не юрлицо?
    • От:Dejmos
    Читать:
    Как сохранить файл на рабочий стол на компьютере

Похожие статьи