Pull to refresh

Comments 42

Я пока что на ARM не перешел, но в курсе, что в них есть DMA — почему обновлением видеобуфера не занимается DMA?
Потому что авторы даже FSMC поленились/не получилось/не подходит прикрутить.
И стробируют запись программным дерганьем ножки порта, как ардуинисты…

В таком варианте DMA «не работает».

Хотя казалось… пишут что раньше использовали дисплеи… неужели так же через порт!?
Хотя может зря наговариваю и FSMC уже у них используется а мультиплексор ставить лень/некуда.
В этом контроллере [STM32F746] имеется целый интерфейс для подключения LCD и всяких разных дисплеев и микросхем типа VGA, DVI, LVDS и любых других совместимых с интерфейсами 8080/6800 и RGB. правда для этого интерфейса очень было бы здорово иметь дополнительный внешний SDRAM.
Вы, абсолютно правы, но видеосигнал с проца не получить. А именно аналоговый видеосигнал и был целью.
Тут же на хабре была статейка про это решение http://hackaday.com/2016/01/31/tv-transmitter-uses-esp8266/
Я знаю.
Но я в данном случае критиковал еще большие частность — посылку данных через порт с программным стробом :)

LVDS (стоит на всех матрицах большой (>10") диагонали) в микроконтроллерах нет и никогда не было.

Странно, что Вы не задались этим вопросом перед разводкой платы.

Дисплеи и раньше использовали с DMA через FSMC (ныне FMC).

FMC для того и создан, чтобы работать с внешними микросхемами через параллельную шину. Аппаратная выдача строба в нём должна быть обязательно.
FSMC (ныне FMC).

Несколько некорректное утверждение. Существует и то, и то. Но на младших контроллерах нет поддержки DRAM (собственно Flexible Static Memory Controller), а на старших уже полноценный FMC с поддержкой DRAM.

Согласен с замечанием, в следующей версии платы и планирую использовать FMC & DMA
В следующей версии платы планирую переразвести под FMC и использовать DMA.
Получилась система, которая позволяет использовать в качестве средства отображения любой видеомонитор.
Забавно… с формированием и видеосигнала для телевизора из части основной адресной памяти проца вполне справлялся древний «Спектрум» на Z80. Там телевизор как монитор — был штатным решением.
Ну да… специализированная микросхема со своим буфером (заливаемым через порт… однако) вместо варианта как в «Спектрум»… это конечно круто.

А чем смысл статьи то? В том что нашли специализированную микросхему?
В Спектруме Z80 не занимался формированием видеосигнала. 1 такт Z80 это 2 пикселя.

А вот мелкие AVR-ки вполне справляются.
http://www.linusakesson.net/scene/craft/index.php
А я где то написал что это делалось программно? Я сказал в «Спектруме». А «спектрум» это не только Z80, а еще горсть микросхем.

Да я невнимательно прочитал ваш коммент =)
До вас пытаются донести мысль, что разработка 35-ти летней давности. Стоимость которой дешевле любого чипа, в этом «хайтеке». Даёт примерно схожий функционал)

И кстати автор по вашей ссылке не только не оригинален но и вообще, сильно отстал от жизни)
www.youtube.com/watch?v=y_d2hWXyykI
Смотрел я на эту микросхему, которая AD725. В ней нет видео буфера.
В том, что с этой платой в качестве устройства отображения можно использовать видеомонитор любого производителя и размера.
С какими трудностями столкнулись при разработке? Как исправляли ошибки или сложные моменты из документации? В чем посыл статьи то? Ну платка как платка, стандартные микросхемы и решения.
Вы правы, решения стандартны. Особых проблем не было. Все заработало практически сразу.
Вдогонку…

Время записи всего видеобуфера составляет примерно 20мсек. При желании можно выводить видео 50 кадров / сек, но контроллер будет заниматься только выводом. :) В реальных задачах необходимо осуществлять перезапись экрана от 3 до 10 раз в секунду.


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

Google: «формирование видеосигнала stm32»

сразу нахожу…

http://we.easyelectronics.ru/STM32/generator-video-na-stm32f407-recept-bystrogo-prigotovleniya.html

8 выводов порта + 11 резисторов + использование DMA вместо специализированной микросхемы и запихивания в нее данных из буфера.
.
Приведенная статья описывает получение RGB сигнала, а не композитного видео. RGB вход есть далего не на всех мониторах.
Ну если идет речь именно от таком ограничении… монитор только с S входом…
тогда да. одними резисторами и простым ЦАП не обойтись.

Хотя, если не требуется цветность и достаточно ЧБ изображения, то композитного выхода делается все просто.
Вы правы. В свое время делал ЧБ видеогенератор на рассыпухе для 580ИК80А :)
Либо плата в 6 слоёв, либо 4 слоя и дороги во внутренних слоях когда внешние пустые, и то и другое странно.
Плата в 4 слоя, сигнальные проводники только на 1 и 4, один внутрений слой полностью залит полигоном GND, на втором внутреннем расположены только проводники питания — 5В, 3,3В и 1,5В и соответственно все свободное место залито полигоном GND. Сигнальных проводников на внутренних слоях нет.
Лучше сделать внутри плейн для GND и комбинированный плейн для питания без земли. На этой плате я бы все компоненты поставил с одной стороны — технологичнее.
Полностью с Вами согласен, но у микросхемы видеоконтроллера, половина цепей аналоговые, требуют своей аналоговой земли и довольно большого количества конденсаторов. Поэтому пришлось часть фильтрующих конденсаторов переносить на другую сторону. И если делать питание полигонами пришлось бы вводить еще 2 слоя, что я посчитал избыточным. И, в принципе, моя стандартная практика, фильтрующие кондесаторы по питанию, размещать на противоположной стороне, максимально близко от вывода.
Моя жена, глядя на платы, сравнивает с планом города :)
А вы внутренние слои не сплошной заливкой делаете?
На приведенной картинке заливка выключена, иначе все было бы одного цвета. :) Все слои залиты полигоном GND.
А почему не использовали встроенный в STM32F7 RTC? Сам делаю устройство на STM32F0 и планировал использовать встроенный, но может есть какие подводные камни?
Просто старое и обкатанное решение, переходит по инерции из проекта в проект. :) Может стоит и попробовать в новых проектах. Пока RTC процессора не использовал, про подводные камни не скажу.
Конечно можно было бы использовать DMA, или на крайний случай BSRR. Но видимо это не нужно было.
Для формирования строба используется именно BSRR.

gLCD_color_WE_low; //запись
gLCD_color_WE_high;

#define gLCD_color_WE_high GPIOI->BSRR = GPIO_BSRR_BS_3; //Port I Set bit 3
#define gLCD_color_WE_low GPIOI->BSRR = GPIO_BSRR_BR_3; //Port I Reset bit 3

Посмотрел DS — по описанию всё должно работать через FSMC и с чтением и без. Интересный кодер — только ждать долго. Тоже сделаю себе на нем раскладной дисплей — 1 х 2 или 2 x 2. Мониторы действительно сильно дешевле с аналоговым входом.
Спасибо за наводку на чип!
Если по срокам доставки — составила 2 недели. :) На здоровье, рад, что помог :)
Sign up to leave a comment.

Articles