По роду своей работы часто приходится проектировать различные виды управляющих и измерительных систем. Разумеется на базе микроконтроллеров. Сначала использовали AVR, потом следующее семейство ATxMega, в конце концов остановились на семействе STM32. Несмотря на разные функционал проектируемых устройств, масса функций остается неизменной: интерфейс с пользователем и внешними устройствами, сохранение данных, часы реального времени и т. п. Поэтому появилась идея сделать универсальную плату контроллера содержащую основные узлы, а дополнительные подключаемые платы будут расширять функционал до необходимого. Сначала это был контроллер на STM32F103, потом на 207, потом на 429. И вот на 746 кристалле.
Но главная новинка на этой плате — это видеовыход. До этого, как правило, использовался графический дисплей (монохром, 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 пин каждый, один для аналоговых сигналов, другой для цифровых.
Вот такой контроллер получился.
ссылка на оригинал статьи https://habrahabr.ru/post/281451/
Добавить комментарий