Но главная новинка на этой плате — это видеовыход. До этого, как правило, использовался графический дисплей (монохром, 320 х 240). Но у этого подхода есть свои недостатки:
1. При переходе на цветной дисплей приличного размера > 5" с встроенным контроллером цена становится достаточной большой.
2. Использовать приходиться только один тип дисплея, так как интерфейсы, как правило несовместимы.
Но тут пришла мысль использовать стандартные автомобильные мониторы, цена которых, достаточно демократична, существует большое количество производителей и есть разные размеры.
Для этого пришлось реализовать видео выход.

После поисков на просторах Интернета был обнаружен графический контроллер S1D13746F01, который имеет встроенную память 321 кБ и композитный видеовыход.Конечно есть и S-Video, но он не планировался использоваться. Так же был обнаружен и даташит на Evaluation Board с подробной схемой подключения, правда на корпус, который имеет 100 выводов.
После прочтения даташита на микросхему выяснилась некоторая особенность организации доступа к внутренней памяти, а именно невозможность записи по определенным адресам. То есть видеобуфер необходимо переписывать весь. Эта особенность заставляет организовать хранение видеобуфера в памяти микроконтроллера и производить его перезапись с необходимой частотой.
Для организации видеобуфера потребуется 320 * 240 = 76800 байт. Количество цветов при этом будет равным 256. Такой формат кодирования цвета обозначен в документации на видеоконтроллер, как RGB 3:3:2. То есть 3 бита на красный, 3 бита на зеленый и 2 бита на синий цвет. Итого 8 красных цветов различного уровня, 8 зеленых и 4 синих.
Запись в видеочип осуществляется программным способом через порт. Вот программка на Си.
void refresh_display(void) { unsigned long h, s; unsigned short out_port; for (s = 0; s < Height_window; s++) //строки { for (h= 0; h < Width_window; h++) //столбцы { out_port = gLCD_port->ODR; out_port &= 0xFF00; out_port |= video_buffer[h] [s]; //данные gLCD_port->ODR = out_port; gLCD_color_WE_low; //запись gLCD_color_WE_high; } } }
Время записи всего видеобуфера составляет примерно 20мсек. При желании можно выводить видео 50 кадров / сек, но контроллер будет заниматься только выводом. :) В реальных задачах необходимо осуществлять перезапись экрана от 3 до 10 раз в секунду.
И вот картинка на подключенном автомобильном мониторе, купленном в ближайшем магазине. Размер монитора — 7".

Это управление высоковольтным тестирующим устройством. Кроме видеовыхода на плате контроллера остался разъем для подключения монохромного дисплея Winstar WG320240C0.
Краткая характеристика основных узлов на плате контроллера:
- 6 разъемов с комплементарными ШИМ выходами для управления полумостами
- USB Host реализован на микросхеме VNC1L, в основном используется для записи информации на флешки.
- USB Device — микросхема FT232RL, используется для программирования микроконтроллера с компьютера через USB
- изолированный RS485 для связи с устройствами по MODBUS
- Wi-Fi на базе модуля ESP8266
- RTC — DS1307 с литиевой батарейкой, подключен по I2C
- 2 микросхемы флеш памяти, одна используется для хранения конфигурации устройства, другая для архивных данных
- ИОН на базе REF192
- 2 разъема расширения на 20 пин каждый, один для аналоговых сигналов, другой для цифровых.
Вот такой контроллер получился.

