8-900-374-94-44
[email protected]
Slide Image
Меню

Vga stm32: Превращаем VGA-монитор в «большой OLED-экранчик» с помощью iCEstick

OV7670 VGA CMOS Камеры Модуль борту AL422 FIFO Камера STM32 RGB Драйвер Модуль SCCB Совместимый I2C Diy Kit

Сайт не поддерживает ваш браузер. Пожалуйста, обновите браузер, или скачайте другой

Выберите язык

Текущая цена

Цена

23 €

Исходная цена

включая НДС

Fitness-02

Цена 4 €

Батарейка для часов Arduino AVR ARM PIC SMD

Цена 3 €

1 PCS LM2596s DC-DC Buck Регулируемый понижаемый модуль питания преобразователя питания

Цена 16 €

AD9833 Последовательный интерфейсный модуль Синусоидальный квадратный волна DDS Генератор сигналов

Цена 23 €

TDA7492P Приемник Усилитель Аудио Плата для 4/6/8/16 Ом Динамики Модуль Части Компонент

Цена 8 €

MQ2 Пропан Этанол I-бутан Метановый спирт Газовый датчик Обнаружения модуль MQ-2 Газовый датчик

Цена 7 €

Aokin 2шт MT8870 DTMF Голосовой декодер Декодирование Модуль Телефон Голос Модуль для Arduino

Цена 7 €

Модуль питания постоянного тока LM2576HV Преобразователь платы DIY

Это большой модуль камеры для DIY. Этот модуль камеры поставляется с высококачественным объективом.

Особенности:

Высокая чувствительность для работы при слабом освещении Низкое рабочее напряжение для встраиваемых систем Стандартный интерфейс ГТК, совместимый с интерфейсом I2C С AL422 3 М-битами FIFO Сырье RGB, RGB (GRB4:2:2, RGB565/555/444), YUV (4:2:2) и YCbCr (4:2:2) формат выходного Поддержка VGA, CIF и от CIF в формате 40 x 30 Vario Pixel метод подвыборки Автоматического управления Image: АЭС, AGC, AWB, ABF, ABLC Средства контроля качества изображения: Цвет, оттенок, насыщенность, резкость, гамма и анти цветущих ISP включает в себя исправление дефектов и снижение шума Поддержка масштабирования изображений Коррекция затенения линз Автоматическое обнаружение мерцание 50/60 Гц Цвет насыщенность уровне Автонастройка Автоматическая регулировка уровня улучшения края Де-шум уровня автоматической настройки

Параметр:

Фоточувствительные массива: 640 x 480 IO напряжение: 2. 5V до 3.0V Рабочая мощность: 60 МВт/15fpsVGAYUV Режим сна: 20 A Рабочая температура: -30 до 70 градусов C Формат вывода: YUV / YCbCr4:2:2 RGB565/555/444 GRB4:2:2 сырые данные RGB (8 цифр) Размер объектива: 1/6» Угол зрения: 25 градусов Макс. Частота кадров: 30fps VGA Чувствительность: 1.3V / (Lux-sec) Соотношение сигнал-шум: 46 дБ Динамический диапазон: 52 дБ Режим просмотра: по строкам Электронные экспозиции: строки 1 до 510 Пиксельное покрытие: 3,6 м х 3,6 м Утиное течение: 12 мВ/с при 60 Размер ПХБ (L x W): Приблизительно 1,4 x 1,4 дюйма / 3,5 x 3,5 см

Пакет включает в себя:

1 модуль камеры x OV7670

Нашли неточность?

VGA выход на Cubieboard | Radiotech.kz

Несмотря на то, что на плате Cubieboard 1 и 2 присутствует лишь HDMI видео выход возможно получить VGA сигнал непосредственно с выводов GPIO Cubieboard.

Схема

Если у вас уже куплена дочерняя плата с VGA коннектором, можете смело пропускать этот раздел и листать к следующему. Если же нет то, то смотрим как сделать собственную схему подключения.

Не используйте пины 33 и 35 коннектора U15. Это HSYNC и VSYNC для LVDS, а не VGA. Потому что HSYNC и VSYNC сигналы имеют уровень 3,3В и должны быть преобразованы в 5В для соответствия спецификации VGA.
Каждый из VGA сигналов (красный, зеленый и синий) должны быть нагружены на номинальное сопротивление VGA. Это значит что резисторы 75Ом должны быть подключены между сигналом цвета и землей. Без этого аналоговый сигнал очень зашумлен и картинка на мониторе просто ужасна.
Итак минимальная схема будет выглядеть так:

Более правильная схема выглядит так:

5В можно взять с пина 1 коннектора U15.

Настройка VGA выхода

Сперва сделаем бэкап script.bin

cp /boot/script.bin /boot/script.bin.bck

Сконвертируем script.bin в .fex файл

./bin2fex /boot/script.bin /boot/script.fex

Открываем файл script.fex в любом текстовом редакторе (можно воспользоваться Sublime Text из этого туториала) или открыть nano

nano /boot/script. fex

Найдите блок, начинающийся с „[disp_init]“ и измените строки до следующих значений
disp_init_enable: 0 выкл; 1 вкл
disp_mode: Используемый режим дисплея:

screen0_output_type: Тип выхода для screen0:

screen1_output_type: Тип выхода для screen1: то же что и предыдущее
screen0_output_mode: Режим выхода для screen0:

screen1_output_mode: Режим выхода для screen1: то же что и предыдущее

fb0_framebuffer_num: fb0 число буферов, используйте 2 для двойной буферизации
fb1_framebuffer_num: fb1 число буферов, используйте 2 для двойной буферизации

fb0_format: формат пикселей для fb0:

fb1_format: формат пикселей для fb1: то же что и предыдущее

fb0_pixel_sequence: fb0 пиксельная последовательность (0 общий для Linux, 2 для android):

fb1_pixel_sequence: fb1 пиксельная последовательность (0 общий для Linux, 2 для android): то же что и предыдущее

fb0_scaler_mode_enable: 0 выкл; 1 вкл
fb0_scaler_mode_enable: 0 выкл; 1 вкл

Таким образом часть . fex файла будет выглядеть так:

[disp_init] disp_init_enable = 1 screen0_output_type = 4 screen1_output_type = 2 screen1_output_mode = 14 fb0_framebuffer_num = 2 fb0_format = 10 fb0_pixel_sequence = 0 fb0_scaler_mode_enable = 1 fb1_framebuffer_num = 2 fb1_format = 10 fb1_pixel_sequence = 0 fb1_scaler_mode_enable = 1

Файл сконфигурирован на VGA выход с разрешением 1024х768 на screen0 с двойной буферизацией. screen1 выключен и его параметры игнорированы.

Далее конвертируем script.fex обратно в .bin файл

./fex2bin /boot/script.fex /boot/script.bin

Выключаем cubieboard

shutdown –h now

И отключаем коннектор питания на несколько секунд, включаем его обратно. Теперь можно увидеть картинку на VGA мониторе.

Перевод статьи VGA output github.com/cubieplayer/Cubian/wiki/VGA-output

Еще ссылки по теме:
Fex руководство: linux-sunxi.

org/Fex_Guide#.5Bdisp_init.5D
Sunxi-tools: linux-sunxi.org/Sunxi-tools#Building
Другие vga туториалы: taqlim.blogspot.de/2013/04/vga-out-for-cubieboard.html

Выход

VGA с использованием 36-контактного разъема STM32

Размышляя о старых игровых консолях и аркадных автоматах (очень старых, таких как те, что были в 70-80-х годах), мы подумали, что можно сделать сегодня, используя очень недорогие микропроцессоры. Как правило, эти микропроцессоры даже не были созданы для выполнения этой задачи, поэтому начались проблемы, и мы начали думать, как вывести видео на экран с небольшим количеством внешних компонентов или вообще без них.

Мы выбрали 36-контактный 72-мегагерцовый STM32 (STM32F103T8U6), достаточно быстрый для генерации монохромного видеосинхронизма и точечных сигналов. Мы используем пару таймеров и SPI (таким образом, обновление кадрового буфера выполняется автоматически). И конечный результат — вполне приличный монохромный VGA-выход с разрешением 400 x 200 точек.

Щелкните здесь, чтобы загрузить полный исходный код.

Проект в формате KEIL uVision. Оценочную версию KEIL uVision можно загрузить по адресу www.keil.com

Список материалов:

  • Плата с STM32F103T8U6 или аналогичная. Мы используем AK-STM32-LKIT.
  • Гнездовой разъем VGA (DB15).

Даже если длина буфера кадров составляет 400×200 пикселей, выходное разрешение составляет 800×600 при частоте 56 Гц. Каждую горизонтальную точку мы будем рисовать дважды, а каждую линию повторять 3 раза. Таким образом мы заполняем весь экран.

Еще одна причина, по которой мы выбрали 800×600 при 56 Гц, связана с тактовой частотой пикселей: в этом разрешении используется тактовая частота пикселей 36 МГц, что кратно 72 МГц, частоте STM32. Поскольку мы будем генерировать сигнал пикселей с помощью SPI, мы можем разделить тактовую частоту STM32 с помощью предварительного масштабирования SPI, чтобы получить тактовую частоту пикселя 18 МГц, и закрасить каждый пиксель дважды. Линия SPI MOSI будет оставаться высокой или низкой в ​​два раза больше времени, необходимого для вывода одного пикселя для горизонтального разрешения 800 пикселей.

Буфер кадра состоит из массива 52×200 байт. 50 x 8 = 400 пикселей (каждый бит — это пиксель). Два оставшихся байта будут имитировать интервал гашения для каждой строки.

# определить VID_VSIZE 200
# определить VID_HSIZE 50

__align(4) u8 fb[VID_VSIZE][VID_HSIZE+2];

 

Все, что мы пишем в этот кусок ОЗУ, будет выводиться прямо на экран без вмешательства приложения: DMA настроен на автоматическое чтение из кадрового буфера и вывод значений на вывод SPI MOSI.

Горизонтальный синхронизм

Сигнал горизонтального синхронизма и обратное время формируются с помощью таймера TIM1, каналы 1 и 2 (соответственно). Канал 1 TIM1 подключен к контакту PA8.

Таймер H-SYNC 1, канал 1 (вывод PA8) будет фактически генерировать горизонтальный синхронизм, который будет принимать монитор.

Сигнал канала 2 таймера 1 H-BACKPORCH вычисляется из суммы времени горизонтального синхронизма и времени обратного крыльца. Этот таймер сгенерирует прерывание, которое будет использоваться для запуска запроса DMA, чтобы начать отправку пикселей через SPI.

Это повторяется для каждой строки в кадровом буфере.

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

Вертикальный синхронизм генерируется с помощью таймера TIM2, но в ведомом режиме. Таймер TIM2 подсчитывает импульсы H-SYNC, генерируемые его мастером, таймером TIM1.

 

Канал 2 таймера TIM2 выводит импульс V-SYNC через контакт PA1.

Канал 3 таймера TIM2 инициирует прерывание, когда счетчик таймера достигает суммы времени V-SYNC и вертикального заднего крыльца. Это прерывание установит переменную, указывающую, что сканирование находится в пределах допустимого кадра, и DMA может начать отправлять пиксели на экран.

 

Генерация пикселей

Пиксели генерируются с помощью контакта SPI MOSI (PA7). Канал 2 таймера TIM1 генерирует прерывание, которое разрешает запросы DMA TX к SPI. DMA прочитает строку из кадрового буфера и поместит значения в регистр SPI DR.

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

Когда все строки отправлены, цикл DMA отключается до следующего допустимого прерывания кадра (канал 3 TIM2).

Соединения

Для использования этого примера вам понадобятся только несколько проводов и гнездовой разъем VGA.

Стандарт VGA говорит, что выходные сигналы должны быть от 0,7 В до 1 В, поэтому вы можете поместить делитель напряжения в линию пикселей (последовательный резистор 68 Ом и резистор 33 Ом на землю, лучше с 47 пФ параллельно с резистором 68 Ом). Мы протестировали пару ЖК-мониторов без разделителя, и все прошло отлично.

Обратите внимание, что расположение контактов относится к разъему расширения AK-STM32-LKIT, но имена контактов действительны для любого STM32. Проверьте выбранный вами лист данных STM32, чтобы убедиться, что таймеры и контакты SPI соответствуют дизайну.

Примечание: мы используем зеленый цвет (контакт 2 разъема VGA) для имитации старых мониторов с зеленым люминофором, но вы можете использовать другую комбинацию цветов, используя контакты DB15 КРАСНЫЙ/ЗЕЛЕНЫЙ/СИНИЙ. Можно создать до 8 цветовых комбинаций.

AK-STM32-LKIT контактный Контакт разъема VGA Описание
ПА1 Штифт 14 Вертикальная синхронизация
ПА7 Контакт 2 Зеленый
ПА8 Штифт 13 Горизонтальная синхронизация
Земля Контакт 5 Земля

Заключение

Мы создали контроллер VGA с использованием очень недорогого микропроцессора/отладочной платы. Используемый метод, конечно, не единственный, но здесь не используются никакие внешние компоненты, кроме разъема VGA.

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

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

В следующей записи блога мы будем реализовывать видеоигру, используя этот пример VGA.

Веселись!

Команда Артекита.

аналоговый — Декодирование сигналов VGA на микроконтроллере вызывает озабоченность

Хотя VGA действительно является устаревшей технологией, все еще существует множество специализированных ИС для оцифровки, особенно потому, что в течение двух десятилетий TFT-экраны должны были поддерживать аналоговый ввод. Так что, может быть, пойти с этим.

В качестве альтернативы, поскольку ваш ломер b или не дает RGB, а только значения интенсивности (т. е. вообще не VGA, не знаю, почему он называется VGA), скорее всего, вам будет удобнее просто достаточно быстрый АЦП срабатывает на тактах PSYNC.

Технически, многие АЦП могут это делать, запускаясь от внешнего тактового сигнала, но вам нужно убедиться, что вы потребляете сэмплы, которые они генерируют, с одинаковой частотой. Это действительно территория FPGA, в которую вы входите, а не материал микроконтроллера. Не обязательно должна быть сложная и дорогая ПЛИС; на самом деле, при этих низких разрешениях все, что вам нужно, это, возможно, несколько строк буфера и триггер на VSYNC для переключения между ними, а также один на PSYNC, задержанный задержкой преобразования АЦП.

Для приблизительного расчета: со строкой размером 640 пикселей и при условии, что вы используете 10-битный АЦП (используемый вами АЦП будет зависеть от потребностей и шума вашей системы — нет необходимости в шуме квантования, который намного ниже системного шума) , вы ничего не получите таким образом), это 6400 бит на строку.

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

Обратите внимание, потому что я не думаю, что вы понимаете: для 10-битного АЦП, дающего вам 640×480 пикселей 30 раз в секунду, вам нужно поддерживать скорость интерфейса около 100 Мбит/с; не так уж ясно, что вы найдете MCU, который сделает это. «Я могу предоставить MCU с> 1 МБ ОЗУ» не вызывает уверенности в том, что вы понимаете, что это может быть слишком много для большинства MCU и может быть глубоко на территории DSP или может быть сделано только с использованием вещей, которые обычно работают как процессоры приложений. (1 МБ едва покрывает одну треть кадра, так что, похоже, вы даже не выполнили предварительные расчеты!) Скорее всего, все, что вам нужно сделать, чтобы преобразовать ваши данные во что-то, что можно отобразить, также будет выполняется на FPGA или на процессоре класса смартфона или ноутбука.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *