суббота, 23 ноября 2013 г.

Подключение монитора VGA к Cubieboard



Есть три варианта подключения VGA монитора к одноплатному компьютеру Cubieboard:
  1. Конвертер HDMI→VGA (у нас под рукой такого не оказалось, искать было не спортивно);
  2. Baseboard - дороговато!
  3. Использовать выведенные ножки микроконтроллера и небольшую схему - так мы и поступили.

Схема

Мы использовали следующую схему:

Микросхема 74AHCT04 - это четыре инвертирующих буфера. Соединив их по два последовательно, получаем два неинвертирующих буфера. Буферы нужны для конверсии логических уровней TTL в CMOS.

Добавлено 2014-05-04: Позже выяснилось, что начиная с версии Cubieboard 2012-09-09, буферы не требуется. То есть для корректной работы VGA достаточно трёх резисторов на 75 Ом. Однако сами мы это не проверяли. Далее описано создание платы с микросхемой.

Изготовление

Разводку печатной платы произвели в DesignSpark, вот исходники. Размер платы подобрали таким образом, чтобы она поместилась в корпус для VGA-гнезда. Изготовили плату по лазерно-утюжной технологии.


Немного фотографий процесса сборки изделия:





Подключение

К плате Cubieboard необходимо подключить 7 проводов: VGA-R, VGA-G, VGA-B, LCD‑HSYNC, LCD‑VSYNC, VCC и GND. В соответствии с блок-схемой, на одноплатнике есть две группы вилок: Ext Port 1 и Ext Port 2. Мы произвели коммутацию так:

Ext Port 1  Ext Port 2
LCD‑VSYNC 27         GND 25
LCD‑HSYNC 30 VGA-R 27
VCC 43 VGA-G 29
VGA-B 31


Выходы подключаем к VGA-разъёму в соответствии со схемой выше.

Начальная проверка

После сборки и подключения схемы к Cubieboard мы проверили, что всё сделано правильно, загрузив ОС Android, предустановленную на внутреннюю Flash-память одноплатника. В процессе загрузки на подключенном мониторе появился логотип Android. После этого экран погас, но увиденного было достаточно, чтобы убедиться в работоспособности платы. Можно завершить сборку в корпусе.


Настройка Linux

На нашем Cubieboard установлен Linux. За настройку параметров устройств отвечает файл script.bin. Но файл бинарный и напрямую не редактируется. Необходимо с помощью программы bin2fex преобразовать его в текстовый:
sudo bin2fex /boot/script.bin /boot/script.fex
Редактировать файл не имея графической оболочки можно в любом консольном текстовом редакторе. На Cubieboard по умолчанию установлен vim, но если вы не умеете им пользоваться, поставьте nano, он один из самых интуитивно понятных.
Доступно подробное описание всех параметров файла script.fex (script.bin).
Нас интересует раздел [disp_init]. Параметр screen0_output_mode отвечает за разрешение экрана. Следует обратить внимание на то, что нельзя поставить произвольное разрешение, нужно выбрать один из вариантов из списка доступных.
Для монитора 1024*768 у нас получились такие настройки:
[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 4
screen0_output_mode = 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
После изменения файла script.fex необходимо сконвертировать его обратно в бинарный с помощью fex2bin:
sudo fex2bin /boot/script.fex /boot/script.bin
Для применения параметров потребуется перезагрузка Cubieboard:
reboot

Результат

Подключив монитор с мышкой и клавиатурой к cubieboard через USB и установив lxde, мы получили из одноплатника полноценный настольный компьютер.