Программирование ARM MAX7456: микросхема OSD Wed, May 28 2025  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


MAX7456: микросхема OSD Печать
Добавил(а) microsin   

MAX7456 представляет собой одноканальный монохромный генератор для наложения на видеосигнал какой-либо информации (псевдографика, текст, это так называемая технология on-screen display, OSD). Применение этой микросхемы устраняет необходимость во внешних схемах драйвера видео, выделения синхросигнала, коммутатора видеосигнала, EEPROM. MAX7456 поддерживает программируемую таблицу 256 символов пользователя, стандарты NTSC и PAL. MAX7456 позволяет просто отображать такую информацию, как логотип компании, произвольную графику (составленную из символов псевдографики), время и дату с любыми символами. В MAX7456 уже загружено 256 символов и пиктограмм, которые можно перепрограммировать непосредственно в схеме через порт SPITM. MAX7456 доступна в 28-выводном корпусе TSSOP и она может использоваться в диапазоне температур -40°C .. +85°C.

Примечание: это перевод даташита [1]. Расшифровку некоторых терминов и сокращений см. в Словарике, в конце статьи.

Основные функциональные возможности:

♦ 256 программируемых пользователем символов или пиктограмм во встроенном EEPROM
♦ Размер символа 12 x 18 точек
♦ Атрибуты символа: мигание (Blinking), инверсия (Inverse), управление фоном символа (Background Control Character)
♦ Выбираемая построчно яркость
♦ Отображает до 16 строк по 30 символов
♦ Компенсация провисания на выходе видеодрайвера
♦ Выходы LOS, VSYNC, HSYNC и Clock
♦ Внутренний генератор синхронизации
♦ Совместимость с NTSC и PAL
♦ SPI-совместимый последовательный интерфейс
♦ Поставляется с заранее запрограммированным набором символов

Области применения:

Камеры и системы безопасности
FPV системы управления дронами
Промышленные приложения
Пользовательская электроника

Упрощенная функциональная диаграмма:

MAX7456 Functional Diagram

Цоколевка корпуса TSSOP28 микросхемы, вид сверху:

MAX7456 TSSOP28 pinout

Описание выводов:

№ выв. Имя Функция
1, 2, 13–16, 27, 28 N.C. No Connection, эти выводы ни к чему не подключены внутри микросхемы.
3 DVDD Вход для цифрового питания. Подключите между этим выводом и DGND конденсатор 0.1µF.
4 DGND Цифровая земля.
5 CLKIN Crystal Connection 1. В случае автономной организации тактирования подключается к кварцевому резонатору параллельного резонанса между выводами CLKIN и XFB, или может использоваться как вход, на который подается внешний опорный тактовый сигнал 27 МГц.
6 XFB Crystal Connection 2. В случае автономной организации тактирования подключается к кварцевому резонатору параллельного резонанса между выводами CLKIN и XFB, или, или XFB остается не подключенным, когда на CLKIN подается внешнее тактирование 27 МГц.
7 CLKOUT Выход тактов 27 МГц с уровнями логики.
8 ~CS Вход выборки (Chip-Select) с активным уровнем лог. 0. Когда на CS подается лог. 1, выход SDOUT переходит в состояние высокого сопротивления.
9 SDIN Последовательный вход данных. Данные вдвигаются по фронту нарастания уровня SCLK.
10 SCLK Вход тактового сигнала последовательного интерфейса. Данные вдвигаются через SDIN и выдвигаются через SDOUT. Скважность тактов должна быть между 40% и 60%.
11 SDOUT Выход последовательных данных. Данные выдвигаются по спаду уровня SCLK. Переходит в состояние "отключено", когда на CS лог. 1.
12 LOS Выход, сигнализирующий о потере синхронизации (Loss-of-Sync Output), с открытым стоком. LOS перейдет в лог. 1, когда импульс синхронизации VIN потерян на 32 последовательных строках. LOS перейдет в лог. 0, когда получено 32 последовательных корректных синхроимпульсов. Подключите этот вывод к 1 кОм pullup резистору, второй вывод которого подключен к DVDD или другому положительному напряжению, соответствующему получателю этого сигнала.
17 ~VSYNC Выход сигнала вертикальной синхронизации (Vertical Sync Output), открытый сток. VSYNC перейдет в лог. 0 за обнаружением на видеовходе импульса вертикальной синхронизации. VSYNC либо восстанавливается из VIN, или генерируется внутри микросхемы, когда действует режим внутренней синхронизации. Подключите этот вывод к 1 кОм pullup резистору, второй вывод которого подключен к DVDD или другому положительному напряжению, соответствующему получателю этого сигнала.
18 ~HSYNC Выход сигнала горизонтальной синхронизации (Horizontal Sync Output), открытый сток. HSYNC перейдет в лог. 0 за обнаружением на видеовходе импульса горизонтальной синхронизации. HSYNC либо восстанавливается из VIN, или генерируется внутри микросхемы, когда действует режим внутренней синхронизации. Подключите этот вывод к 1 кОм pullup резистору, второй вывод которого подключен к DVDD или другому положительному напряжению, соответствующему получателю этого сигнала.
19 ~RESET Вход системного сброса, минимальная длительность лог. 0 для сброса 50 мс. Все SPI-регистры сбрасываются в свое состояние по умолчанию через 100 мкс после фронта нарастания RESET. В течение этого времени регистры недоступны для чтения или записи. Память экрана сбрасывается в свое состояние по умолчанию на фронте нарастания RESET.
20 AGND Аналоговая земля.
21 AVDD Вход для аналогового питания. Подключите между этим выводом и AGND конденсатор 0.1µF.
22 VIN Вход композитного видеосигнала (CVBS) PAL или NTSC.
23 PGND Земля драйвера. Соедините с AGND в одной точке.
24 PVDD Вход питания драйвера. Подключите между этим выводом и PGND конденсатор 0.1µF.
25 SAG Вход коррекции провисания видеосигнала (Sag Correction Input). Если он не используется, то подключите его к VOUT, см. рис. 1b.

MAX7456 standard test circuits fig01

Рис. 1. Стандартные схемы тестирования.

MAX7456 typical operating circuit fig02

Рис. 2. Типовая рабочая схема подключения.

[Подробное описание MAX7456]

MAX7456 это одноканальный монохромный генератор OSD-графики (on-screen display), который интегрирует в себе все необходимые функции для генерации пользовательской OSD и вставке её в выходной видеосигнал. MAX7456 принимает композитный видеосигнал NTSC или PAL. Устройство включает схему восстановления постоянной составляющей входного сигнала (input clamp), схему выделения синхроимпульсов (sync separator), генератор синхронизации видеосигнала (video timing generator), мультиплексор добавления графики (OSD insertion mux), энергонезависиму память графики символов (nonvolatile character memory), память экрана (display memory), генератор OSD, кварцевый генератор, SPI-совместимый интерфейс для чтения/записи данных OSD и видеодрайвер (см. выше упрощенную функциональную диаграмму). Дополнительно MAX7456 предоставляет выходные синхроимпульсы вертикальной синхронизации (~VSYNC), горизонтальной синхронизации (~HSYNC) и выходной сигнал потери синхронизации (LOS). Выходной синхросигнал (CLKOUT) обеспечивает последовательное подключение нескольких устройств MAX7456.

Микросхема поставляется с предварительно загруженными 256 символами 12 x 18 точек, графику которых может перепрограммировать пользователь (данные символов сохраняются в энергонезависимой памяти NVM). Эти символы и произвольная графика может быть выведена в выходной композитный видеосигнал (CVBS). В режиме NTSC могут быть отображены 13 строк по 30 символов. В режиме PAL могут быть отображены 16 строк по 30 символов. Когда входной видеосигнал отсутствует, образ OSD все еще может отображаться на выдеовыходе благодаря встроенному в MAX7456 внутреннему генератору видеосигнала и синхронизации.

Видеовход. MAX7456 принимает на вход VIN стандартные композитные видеосигналы (CVBS) стандартов NTSC или PAL. Видеосигнал должен подаваться на вход через разделительный коденсатор 0.1 мкФ, это необходимо для обеспечения заданного времени строчного искажения (line-time distortion, LTD) и работы схемы восстановления постоянной составляющей по синхроимпульсам видеосигнала (video clamp settling time). Время video clamp меняется пропорционально входной разделительной емкости, и LTD меняется в обратной пропорциональности этой емкости.

MAX7456 definition of terms fig03

Рис. 3. Терминология композитного видесигнала.

SYNC TIP LEVEL уровень синхроимпульса.
COLOR BURST вспышка сигнала цветовой синхронизации.
BLACK LEVEL уровень черного в видеосигнале.
WHITE LEVEL уровень белого в видеосигнале.
MINIMUM VIDEO SWING минимальный уровень размаха видеосигнала.
MAXIMUM VIDEO SWING максимальный уровень размаха видеосигнала.
INPUT VOLTAGE входное напряжение сигнала.

Input Clamp. MAX7456 содержит схему восстановления постоянной составляющей видеосигнала, работающую на базе выделения строк. Она работает таким образом, что уровень нижней полки синхроимпульса SYNC TIP LEVEL равен 550 mV. Это восстановление постоянной составляющей необходимо для корректной работы выделения синхроимпульсов и обработки видео. Эта схема также устраняет низкочастотный шум, такой как 60 Гц, или другие дополнительные низкочастотные шумы.

Sync Separator. Схема выделения синхроимпульсов (sync separator) детектирует в композитном видеосигнале синхронизацию, и генерирует из этого импульсы ~HSYNC и ~VSYNC. Это также используется для интернациональной синхронизации OSD и детектирования потери синхронизации (loss-of-sync, LOS). LOS перейдет в уровень лог. 1, если не был детектирован синхросигнал на VIN для 32 последовательных строк, и перейдет в лог. 0, если были определены 32 последовательных горизонтальных синхроимпульса. Во время потери синхронизации (LOS condition), когда VM0[5] = 0 (Video Mode 0 регистр, бит 5), на VOUT отображается только графика OSD. В этом состоянии входной образ для VOUT устанавливается на уровень серого, определяемый битами VM1[6:4]. Поведение всех режимов синхронизации показано в таблице 1.

Таблица 1. Режимы синхронизации видеосигнала (Video Sync Modes).

Режим видео VIN ~VSYNC ~HSYNC LOS VOUT
Auto Sync Select Mode
VM0[5, 4] = 0X
Видеосигнал Активен Активен лог. 0 VIN + OSD
Нет сигнала Активен Активен лог. 1 Только OSD
External Sync Select
VM0[5, 4] = 10
Видеосигнал Активен Активен лог. 0 VIN + OSD
Нет сигнала Неактивен
(лог. 1)
Неактивен
(лог. 1)
лог. 1 DC
Internal Sync Select
VM0[5, 4] = 11
Видеосигнал Активен Активен лог. 1 Только OSD
Нет сигнала Активен Активен лог. 1 Только OSD

X = не имеет значения

Video Timing Generator. Это цифровой генератор интервалов времени видеосигнала (video timing generator, VTG), который генерирует все внутренние и внешние сигналы (VSYNC и HSYNC) тайминга видео. VSYNC и HSYNC могут быть синхронизированы с сигналом VIN, или формироваться независимо, когда действует режим внутренней синхронизации. VTG может генерировать сигналы интервалов времени стандартов NTSC или PAL, используя один и тот же кварцевый резонатор 27 МГц (см. рис. 4 .. 9).

MAX7456 VOUT VSYNC HSYNC timing NTSC External Sync Mode fig04

Рис. 4. Тайминг VOUT, VSYNC и HSYNC (NTSC, External Sync Mode).

MAX7456 VOUT VSYNC HSYNC timing NTSC Internal Sync Mode fig05

Рис. 5. Тайминг VOUT, VSYNC и HSYNC (NTSC, Internal Sync Mode).

MAX7456 VOUT VSYNC HSYNC timing PAL External Sync Mode fig06

Рис. 6. Тайминг VOUT, VSYNC и HSYNC (PAL, External Sync Mode).

MAX7456 VOUT VSYNC HSYNC timing PAL Internal Sync Mode fig07

Рис. 7. Тайминг VOUT, VSYNC и HSYNC (PAL, Internal Sync Mode).

MAX7456 VOUT HSYNC horizontal sync timing NTSC PAL External Sync Mode fig08

Рис. 8. VOUT и горизонтальная синхронизация HSYNC (NTSC и PAL, External Sync Mode)

MAX7456 VOUT HSYNC horizontal sync timing NTSC PAL Internal Sync Mode fig09

Рис. 9. VOUT и горизонтальная синхронизация HSYNC (NTSC и PAL, Internal Sync Mode)

Кварцевый генератор. Внутренняя схема кварцевого генератора формирует системную тактовую частоту, которую использует VTG. Генератор использует внешний кварц на 27 МГц, или может быть подана тактовая частота 27 МГц от внешнего источника на вход CLKIN с уровнями TTL. Когда используется тактирование от внешнего источника, выход кварцевого генератора XFB остается неподключенным.

Display Memory (SRAM). Память экрана хранит 480 адресов символов, указывающих на символы, сохраненные в памяти символов NVM. Содержимое памяти экрана программируется пользователем через SPI-совместимый последовательный интерфейс. Адрес в памяти экрана соответствует фиксированной позиции на экране монитора (см. рис. 10). Мгновенное нарушение отображаемой картинки OSD можно предотвратить, если записывать в память экрана во время действия импульса вертикальной синхронизации VSYNC. Этот сигнал может использоваться для генерации сигнала прерывания, чтобы инициировать запись в память экрана.

MAX7456 parameter definitions fig10

Рис. 10. Определение различных параметров.

Память символов (NVM). Здесь хранится графика, организованная в 256 строк по 64 байта, каждая строка содержит графику одного символа. Заводская запрограммированная таблица символов показа на рис. 12. Содержимое памяти символов программируется через SPI-совместимый последовательный интерфейс. Каждая строка содержит описание одного символа OSD. Каждый символ состоит из 12 горизонтальных и 18 вертикальных точек, где каждая точка представлена 2 битами: программирующими 3 состояния белый цвет (white), черный цвет (black) или прозрачная точка (transparent). Таким образом, каждый символ требует 54 байта данных графики (рис. 11).

MAX7456 Character Pixel Map fig11

Рис. 11. Графика одного символа (карта точек).

MAX7456 Character Address Map default character set fig12

Рис. 12. Заводская таблица символов.

NVM требует чтения и записи всех данных символа целиком (64 байт) за одну операцию. Это реализовано благодаря дополнительной строке памяти, которая называется теневой (shadow RAM). 64 байта shadow RAM содержит все данные точек выбранного (значением регистра CMAH[7:0]) символа, и используется как буфер для операций чтения и записи NVM (рис. 13). Доступ к NVM всегда осуществляется через shadow RAM, и это требует выполнения процесса из двух шагов. Чтобы записать символ в NVM, пользователь сначала заполняет shadow RAM, используя 54 восьмибитные операции записи SPI, и затем выполняет команду записи одного символа (single shadow RAM write). Подобным образом чтение значений точек требует чтения данных выбранного символа из shadow RAM через порт SPI.

MAX7456 NVM structure fig13

Рис. 13. Структура NVM.

Генератор OSD. Генератор графики OSD установит амплитуду каждой точки на основе содержимого памяти символов и регистров яркости строк (Row Brightness, RB0 .. RB15).

OSD Insertion Mux. Мультиплексор вставки OSD осуществляет выбор между точкой из видеосигнала и точкой OSD. Четкость образа OSD определяется битами OSD Rise Time и Fall Time, и битами OSD Insertion Mux Switching Time, которые находятся в регистре OSD Insertion Mux (OSDM). Этот регистр управляет компромиссом между четкостью изображения OSD и цветовыми артефактами (crosscolor/crossluma). Уменьшенное время формирует более четкие точки для OSD, но потенциально вызывает появление большего количеств crosscolor/crossluma артефактов. Оптимальная настройка зависит от требований приложения, чем может управлять пользователь.

Драйвер видеовыхода. В MAX7456 встроен видеодрайвер выхода с усилением 2. На выходе драйвера формируется сигнал с максимальным размахом от пика до пика 2.4V и полосой частот 6 МГц (по уровню ослабления ≤ 0.2 dB на верхней частоте). Драйвер выхода может быть нагружен двумя стандартными нагрузками видеосигнала 150 Ом.

Sag Correction. Sag correction (дословный перевод "коррекция провисания") означает средство уменьшения электрического и физического размера выходного разделительного конденсатора при достижении приемлемого искажения времени строки. Sag correction относиться к низкочастотной компенсации фильтра верхних частот, образованного нагрузкой 150 Ом на обратной стороне коаксиального кабеля и выходным разделительным конденсатором. Срез фильтра должен быть достаточно низкий по частоте, чтобы пропустить интервал вертикальной синхронизации (< 25 Гц для PAL и < 30 Гц для NTSC), чтобы избежать наклона поля. Традиционно срез делается < 5 Гц, и для этого разделительный конденсатор должен быть очень большим, > 330 мкФ. MAX7456 уменьшает требования к величине емкости этого конденсатора путем его замены на два конденсатора меньшей величины (COUT и CSAG), что непосредственно уменьшает размер и цену разделительных конденсаторов с сохранением допустимого искажения сигнала (таблица 2). Если это не используется, то соедините SAG с VOUT.

Таблица 2. Значения конденсатора SAG-коррекции.

COUT (мкФ) CSAG (мкФ) Искажение времени строки
(LINE-TIME DISTORTION, %, типовое значение)
470 - 0.2
100 - 0.4
100 22 0.3
47 47 0.3
22 22 0.4
10 10 0.6

Последовательный интерфейс. SPI-совместимый последовательный интерфейс программирует рабочие режимы и данные OSD. Возможность чтения обеспечивает верификацию записи и чтение регистров состояния (STAT), Display Memory Data Out (DMDO) и Character Memory Data Out (CMDO).

MAX7456 detailed serial interface timing fig14

Рис. 14. Диаграмма сигналов последовательного интерфейса.

MAX7456 поддерживает тактирование интерфейса частотой SCLK до 10 МГц. Рис. 15 иллюстрирует запись данных, а рис. 16 чтение данных MAX7456. Перевод ~CS в лог. 0 разрешает работу последовательного интерфейса. Данные вдвигаются в SDIN по фронту нарастания SCLK. Когда ~CS переходит в лог. 1, данные защелкиваются во входной регистр. Если ~CS перейдет в лог. 1 посередине передачи, то последовательность передачи данных обрывается (т. е. данные не записываются в регистры). После того, как ~CS перешел в лог. 0, устройство ждет первого байта, вдвигаемого в SDIN, чтобы идентифицировать тип выполняемой транзакции данных.

Команды SPI имеют длину 16 бит, где 8 самых старших значащих бит (most significant bits, MSB) представляют адрес регистра, и 8 младших бит (least significant bits, LSB) представляют данные (рис. 15 и 16). Из этого правила есть два исключения:

1) Режим записи с автоинкрементом, который используется для доступа к памяти экрана, является одиночной 8-битной операцией (рис. 21). Когда выполняется запись в память экрана с автоинкрементом, 8-битный адрес генерируется внутренне, и для последовательного интерфейса требуются только 8-разрядные данные.

2) Чтение данных символа из памяти экрана, когда действует 16-битный рабочий режим, является 24-разрядной операцией (8 бит адреса плюс 16 бит данных). См. рис. 20.

MAX7456 write operation fig15

Рис. 15. Операция записи.

MAX7456 read operation fig16

Рис. 16. Операция чтения.

MAX7456 writing character attribute byte 8 bit operation fig17

Рис. 17. Запись байта атрибута символа (Character Attribute Byte) в 8-битном режиме.

MAX7456 reading character attribute byte 8 bit operation fig18

Рис. 18. Чтение байта атрибута символа (Character Attribute Byte) в 8-битном режиме.

MAX7456 writing character address byte 8 bit and 16 bit operation fig19

Рис. 19. Запись байта атрибута символа (Character Attribute Byte) в 8-битном режиме и 16-битном режимах.

MAX7456 reading character address and character attribute bytes 16 bit operation fig20

Рис. 20. Чтение байт адреса символа и атрибута символа в 16-битном режиме.

MAX7456 write operation in Auto Increment Mode fig21

Рис. 21. Операция записи в режиме автоинкремента.

[Варианты сброса]

Power-On Reset, POR. Схема сброса по питанию MAX7456 (power-on reset, POR) обеспечивает формирование внутреннего сигнала сброса после того, как напряжение питания достигнет номинального значения и стабилизируется. Внутренний сигнал сброса сбросит все регистры в их значения по умолчанию и очистит память экрана. Процесс сброса регистров требует 100 мкс, и чтобы избежать нежелательных результатов, в течение этого времени не должно быть никакой активности чтения/записи. Память экрана сбрасывается, и OSD разрешается приблизительно через 50 мс после стабилизации напряжения питания и получения стабильной частоты тактов 27 МГц. Пользователь должен избегать операций SPI в течение этого времени, чтобы избежать нежелательных результатов. После интервала 50 мс (типовое значение) бит STAT[6] может быть опрошен, чтобы проверить, что последовательность сброса завершена (рис. 22).

MAX7456 POR sequence fig22

Рис. 22. Последовательность сброса по питанию (Power-On Reset, POR).

Software Reset. MAX7456 имеет бит программного сброса (Software Reset bit VM0[1]): когда он установлен в лог. 1, это очистит память экрана и сбросит все регистры в их значения по умолчанию, кроме регистра OSD Black Level (OSDBL). После 100 мкс (типовое значение) бит STAT[6] может быть опрошен, чтобы проверить, что процесс сброса завершен.

Hardware Reset. MAX7456 предоставляет возможность аппаратного сброса сигналом на входе ~RESET, который функционирует так же, как и сброс по питанию POR. Все регистры сбросятся в их значения по умолчанию и будут недоступны для чтения/записи, когда ~RESET находится в лог. 0. Процесс сброса требует ≥ 50 мс импульса ~RESET, и во время этого интервала не разрешена никакая активность интерфейса. Все регистры SPI сбросятся в свои значения по умолчанию через 100 мкс после нарастания уровня ~RESET. Память экрана сбросится в свое значение по умолчанию 00H во всех ячейках через 20 мкс после фронта нарастания ~RESET. Сигнал ~RESET имеет преимущество надо битом Software Reset. После того, как сигнал ~RESET снят, бит STAT[6] может быть опрошен, чтобы проверить, что последовательность сброса завершена.

[Описание регистров MAX7456]

Доступ ко всем операциям MAX7456, включая память экрана и память символов NVM, осуществляется через регистры SPI, перечисленные в таблице 3. Нет прямого доступа к дисплею и символьной памяти через порт SPI. Пошаговые описания операций SPI, необходимых для доступа к памяти, см. в разделе "Информация по применению MAX7456".

В этом даташите используется формат ИМЯ_РЕГИСТРА[НОМЕРА_БИТ]. Например, бит 1 в регистре Video Mode 0 записывается как VM0[1].

Таблица 3. Карта регистров.

Адрес записи (HEX) Адрес чтения (HEX) Имя регистра Описание регистра
00 80 VM0 Video Mode 0
01 81 VM1 Video Mode 1
02 82 HOS Horizontal Offset
03 83 VOS Vertical Offset
04 84 DMM Display Memory Mode
05 85 DMAH Display Memory Address High
06 86 DMAL Display Memory Address Low
07 87 DMDI Display Memory Data In
08 88 CMM Character Memory Mode
09 89 CMAH Character Memory Address High
0A 8A CMAL Character Memory Address Low
0B 8B CMDI Character Memory Data In
0C 8C OSDM OSD Insertion Mux
10 90 RB0 Row 0 Brightness
11 91 RB1 Row 1 Brightness
12 92 RB2 Row 2 Brightness
13 93 RB3 Row 3 Brightness
14 94 RB4 Row 4 Brightness
15 95 RB5 Row 5 Brightness
16 96 RB6 Row 6 Brightness
17 97 RB7 Row 7 Brightness
18 98 RB8 Row 8 Brightness
19 99 RB9 Row 9 Brightness
1A 9A RB10 Row 10 Brightness
1B 9B RB11 Row 11 Brightness
1C 9C RB12 Row 12 Brightness
1D 9D RB13 Row 13 Brightness
1E 9E RB14 Row 14 Brightness
1F 9F RB15 Row 15 Brightness
6C EC OSDBL OSD Black Level
- AX STAT Status
- BX DMDO Display Memory Data Out
- CX CMDO Character Memory Data Out

X = не имеет значения.

Video Mode 0 Register (VM0). Адрес записи = 00H, адрес чтения = 80H. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должны быть соблюдены следующие условия:

1) STAT[5] = 0, память символов (NVM) не в состоянии занятости.
2) DMM[2] = 0, память экрана (SRAM) не находится в процессе очистки.

№ бита DFLT Функция
7 0 Не имет значения
6 0 Video Standard Select (выбор стандарта видеосигнала).
0 = NTSC
1 = PAL
5, 4 00 Sync Select Mode (выбор режима синхронизации, таблица 1).
0x = Autosync (внешняя синхронизация, когда LOS = 0, и внутренняя, когда LOS = 1)
10 = внешняя синхронизация
11 = внутренняя синхронизация
3 0 Enable Display of OSD Image (разрешение отображения образа OSD).
0 = выключено
1 = включено
2 0 Vertical Synchronization of On-Screen Data (вертикальная синхронизация данных экрана).
0 = немедленное разрешение OSD
1 = разрешение OSD на следующем ~VSYNC
1 0 Software Reset Bit (бит активации программного сброса). Когда этот бит установлен, все регистры устанавливаются в свои значения по умолчанию (DFLT), и очищается память экрана. Когда присутствуют стабильные такты 27 МГц, этот бит автоматически очистится через 100 мкс (типовой интервал). Пользователю не нужно записывать 0 в этот бит. Операции SPI не должны выполняться в течение этого времени, иначе могут быть получены непредсказуемые результаты. Состояние этого бита может быть проверено его чтением через приблизительно 100 мкс. Этот регистр недоступен для записи, пока не завершится операция очистки экрана (обычно эта операция длится 20 мкс).
0 0 Video Buffer Enable (разрешение видеобуфера).
0 = разрешить
1 = запретить (VOUT переходит в состояние высокого сопротивления)

X = не имеет значения.

Video Mode 1 Register (VM1). Адрес записи = 01H, адрес чтения = 81H. Доступ на чтение/запись: неограниченный.

№ бита DFLT Функция
7 0 Background Mode, режим фона (см. таблицу 4).
0 = бит Local Background Control, локальное управление фоном (см. DMM[5] и DMDI[7]) установит состояние фона каждого символа.
1 = установка всех отображаемых точек фона в серый цвет. Серый цвет указывается битами VM1[6:4] (см. ниже). Этот бит отменяет бит Local Background Control.
Замечание: в режиме внутренней синхронизации бит режима фона устанавливается в 1.
6, 5, 4 100 Background Mode Brightness, яркость режима фона (% от уровня белого, OSD White Level).
000 = 0%
001 = 7%
010 = 14%
011 = 21%
100 = 28%
101 = 35%
110 = 42%
111 = 49%
3, 2 01 Blinking Time (BT), время мигания.
00 = 2 поля (33 мс в NTSC, 40 мс в PAL)
01 = 4 поля (67 мс в NTSC, 80 мс в PAL)
10 = 6 полей (100 мс в NTSC, 120 мс в PAL)
11 = 8 полей (133 мс в NTSC, 160 мс в PAL)
1, 0 11 Blinking Duty Cycle (On : Off), скважность цикла мигания
00 = BT : BT
01 = BT : (2 x BT)
10 = BT : (3 x BT)
11 = (3 x BT) : BT

Horizontal Offset Register (HOS). Адрес записи = 02H, адрес чтения = 82H. Доступ на чтение/запись: неограниченный (рис. 23).

№ бита DFLT Функция
7, 6 00 Не имеет значения
5 - 0 100000 Horizontal Position Offset (смещение горизонтальной позиции). Видео OSD не вставляется в интервал горизонтального гашения.
000000 = левее всего (-32 точки)
...
100000 = без горизонтального смещения
...
111111 = правее всего (+31 точка)

Vertical Offset Register (VOS). Адрес записи = 03H, адрес чтения = 83H. Доступ на чтение/запись: неограниченный (рис. 23).

№ бита DFLT Функция
7, 6, 5 000 Не имеет значения
4 - 0 10000 Vertical Position Offset (смещение вертикальной позиции). Видео OSD может быть смещено по вертикали за счет строк вертикального гашения.
00000 = выше всего (-16 точек)
...
10000 = без вертикального смещения
...
11111 = ниже всего (+15 точек)

MAX7456 Character Display Area fig23

Рис. 23. Область отображения символа (Character Display Area).

Display Memory Mode Register (DMM). Адрес записи = 04H, адрес чтения = 84H. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должно быть соблюдено условие: DMM[2] = 0, память экрана (SRAM) не находится в процессе очистки.

№ бита DFLT Функция
7 0 Не имеет значения
6 0 Operation Mode Selection (выбор рабочего режима).

0 = 16-битный рабочий режим. В этом режиме повышается скорость, с которой может быть обновлена память экрана. При записи в память экрана байт атрибута не передается через SPI, он берется автоматически из DMM[5:3] и копируется в байт атрибутов символа, когда записывается новый символ, чем уменьшается количество операций записи SPI (рис. 19). В этом режиме все записываемые символы получают одинаковый байт атрибутов. Этот режим полезен, посколько последовательно записываемые символы обычно должны иметь одинаковые атрибуты. Этот режим отличается от 8-битного режима, где байт атрибутов символа должен быть записа в память экрана (см. таблицу 5). Когда данные вычитываются из памяти экрана, оба байта Character Address и Character Attribute передаются через SPI (рис. 18).

1 = 8-битный рабочий режим. Этот режим предоставляет больше гибкости при записи символов в память экрана. Этот режим позволяет записывать индивидуально байты атрибутов символа (Character Attribute) для каждого символа (см. таблицу 5). При записи в память экрана DMAH[1] = 0 направляет данные в байт Character Address, и DMAH[1] = 1 направляет байт Character Attributes в данные. Этот режим отличается от 16-битного, где биты атрибутов автоматически копируются из DMM[5:3] при записи символа.
5 0 Local Background Control Bit, LBC (бит локального управления фоном, см. таблицу 4). Применяется к символам, записываемым в 16-битном режиме.

0 = установит точки фона символа в точку входа видео (VIN) при режиме внешней синхронизации
1 = установит точки фона символа в уровень яркости фона, определенный битами VM1[6:4] в режимах внешней или внутренней синхронизации.
Замечание: в режиме внутренней синхронизации бит локального управления фоном ведет себя как если бы он был установлен в 1.
4 0 Blink Bit, BLK (бит мигания). Применяется ко всем символам, записываемым в 16-битном режиме.
0 = мигание выключено
1 = мигание включено
Замечание: для управления миганием используются параметры частоты мигания и скважности цикла мигания в регистре Video Mode 1 (VM1).
3 0 Invert Bit, INV (бит инверсии). Применяется ко всем символам, записываемым в 16-битном режиме (см. рис. 24).
0 = нормальное отображеие (белые точки отображаются белыми, черные черными)
1 = инверсия (белые точки отображаются черными, черные точки белыми)
2 0 Clear Display Memory (бит очистки памяти экрана).
0 = нет активности
1 = очистка (вся память экрана заполняется нулями)
Замечание: этот бит автоматически очистится после завершения операции (на эту операцию требуется 20 мкс). Пользователю не нужно записывать 0 в этот бит. Состояние бита может быть проверено операцией чтения этого регистра.

Эта операция выполняется автоматически:
a) При включении питания.
b) Сразу после фронта нарастания ~RESET.
c) Сразу после фронта нарастания ~CS после того, как VM0[1] был установлен в 1.
1 0 Vertical Sync Clear (вертикальная синхронизация очистки). Действует только при бите очистки памяти экрана = 1 (DMM[2] = 1).
0 = команда очистки памяти экрана DMM[2] = 1 применяется немедленно
1 = команда очистки памяти экрана DMM[2] = 1 применяется на следующем интервале ~VSYNC
0 0 Auto-Increment Mode (режим автоинкремента). Этот режим повышает скорость, с которой может быть записана память экрана, благодаря автоматическому инкременту адреса символа CA для каждого последовательно записанного символа. Это уменьшает количество команд SPI, и уменьшает время, необходимое для записи строки соседних символов. Этот режим полезен, когда записываются строки символов, расположенные на экране слева-направо, сверху-вниз (см. таблицу 5).
0 = запрещено
1 = разрешено

Когда этот бит разрешен в первый раз, данные в регистрах Display Memory Address (DMAH[0] и DMAL[7:0]) используются как стартовая позиция, куда записываются данные. Когда выполняется запись с автоинкрементом для памяти экрана, 8-битный адрес формируется внутренне, и поэтому требуются только 8-битные данные, переданные через SPI (рис. 21). Содержимое этих данных интерпретируется как байт Character Address, если DMAH[1] = 0, или байт Character Attribute, если DMAH[1] = 1. Этот режим запрещается путем записи символа с кодом 11111111 (FFh). Если установлен бит очистки памяти экрана (Clear Display Memory), то этот бит сбросится внутренне.

 

Бит INV (DMM[3]) Режим внешней синхронизации и бит локального управления фоном (LBC) = 0 Режим внутренней синхронизации, или бит локального управления фоном (LBC) = 1
0 MAX7456 Character Attribute Bit examples INV LBC fig24 1 MAX7456 Character Attribute Bit examples INV LBC fig24 2 MAX7456 Character Attribute Bit examples INV LBC fig24 3 MAX7456 Character Attribute Bit examples INV LBC fig24 4
1 MAX7456 Character Attribute Bit examples INV LBC fig24 5 MAX7456 Character Attribute Bit examples INV LBC fig24 6 MAX7456 Character Attribute Bit examples INV LBC fig24 7 MAX7456 Character Attribute Bit examples INV LBC fig24 8

Рис. 24. Примеры бит атрибута символа: управление инверсией и локальным фоном (Invert and Local Background Control).

Таблица 4. Управление фоном символа (Character Background Control).

Синхронизация Режим фона, VM1[7] Бит локального управления фоном LBC DMM[5], DMDI[7] Точка фона символа
внешняя 0 0 Входное видео
  0 1 Серая
  1 X Серая
внутренняя X X Серая

X = не имеет значения.

Display Memory Address High Register (DMAH). Адрес записи = 05H, адрес чтения = 85H. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должно быть соблюдено условие: DMM[2] = 0, память экрана (SRAM) не находится в процессе очистки.

№ бита DFLT Функция
7-2 00000 Не имеет значения
1 0 Byte Selection Bit (бит выбора байта). Этот бит действует только в 8-битном режиме (DMM[6] = 1).

0 = записывается или считывается байт адреса символа (Character Address), DMDI[7:0] содержит байт адреса символа.
1 = записывается или считывается байт атрибутов символа (Character Attribute), DMDI[7:0] содержит байт атрибутов символа.
0 0 Display Memory Address Bit 8 (старший бит адреса памяти экрана).
Адрес памяти экрана определяет позицию, в которой отображается символ на экране (рис. 10). Младшие 8 бит адреса памяти экрана находятся в DMAL[7:0].

Display Memory Address Low Register (DMAL). Адрес записи = 06H, адрес чтения = 86H. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должно быть соблюдено условие: DMM[2] = 0, память экрана (SRAM) не находится в процессе очистки.

№ бита DFLT Функция
7-0 00000000 Display Memory Address Bits 7–0 (младшие биты адреса памяти экрана).
Адрес памяти экрана определяет позицию, в которой отображается символ на экране (рис. 10). Старший бит адреса памяти экрана находится в DMAH[0].

Display Memory Data In Register (DMDI). Адрес записи = 07H, адрес чтения = 87H. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должно быть соблюдено условие: DMM[2] = 0, память экрана (SRAM) не находится в процессе очистки.

№ бита DFLT Функция
7-0 00000000 Байт адреса символа (Character Address) или байт атрибутов символа (Character Attribute) для сохранения в память экрана.

8-битный режим (DMM[6] = 1)
Если DMAH[1] = 0, то содержимое этого регистра интерпретируется как байт Character Address, где биты 7–0 = биты Character Address, CA[7:0] (рис. 12). Если DMAH[1] = 1, то содержимое этого регистра интерпретируется как байт Character Attribute, где:
бит 7 = бит Local Background Control, LBC (локальное управление фоном, рис. 24 и таблица 4)
бит 6 = бит Blink, BLK (управление миганием)
бит 5 = бит INV (управление инверсией, рис. 24)
биты 4–0 = 0 (биты LBC, BLK и INV описаны в регистре Display Memory Mode, DMM)

16-битный режим (DMM[6] = 0)
Содержимое этого регистра всегда интерпретируется как байт Character Address, где биты 7–0 = CA[7:0] (рис. 12).

Режим автоинкремента (DMM[0] = 1)
Адрес символа CA[7:0] = FFH зарезервирован для завершения автоинкремента. Таким образом, символ по адресу FFH недоступен для записи в память экрана при действии режима автоинкремента. Во всех других режимах символ FFH доступен.

Character Memory Mode Register (CMM). Адрес записи = 08H, адрес чтения = 88H. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должны быть соблюдены следующие условия:

1) STAT[5] = 0, память символов (NVM) не в состоянии занятости.
2) VM0[3] = 0, OSD запрещено.

№ бита DFLT Функция
7-0 00000000 Только целые символы (54 байта) могут быть записаны в NVM или прочитаны из NVM единовременно. Это осуществляется через (64 байта) shadow RAM (рис. 13). К shadow RAM осуществляется доступ через SPI по одному байту. Shadow RAM записывается в NVM и считывается из NVM следующими процедурами:

Запись в NVM
1010XXXX = запись в массив NVM данными из shadow RAM. 64 байта из shadow RAM записываются в NVM по адресу памяти символа (CMAH, CMAL, рис. 13). Память символа занята приблизительно 12 мс во время этой операции. В это время STAT[5] автоматически устанавливается в 1. Регистр Character Memory Mode очищается, и STAT[5] сбрасывается в 0 после завершения операции записи. Пользователю не нужно это записывать нулями.

Чтение из NVM
0101XXXX = чтение из NVM в shadow RAM. 64 байта соответствующей области памяти символов (CMAH, CMAL) вычитываются из NVM в shadow RAM (рис. 13). Память символов занята приблизительно 0.5 мкс во время этой операции. Регистр CMM очищается после завершения операции. Пользователю не нужно записывать туда 0. Во время этой операции STAT[5] автоматически устанавливается в 1 и сбрасывается в 0 по завершению операции.

Если отображение разрешено (VM0[3] = 1) или память символов занята (STAT[5] = 1), то команды чтения/записи NVM игнорируются и соответствующие регистры не обновляются. Однако все регистры могут быть прочитаны в любой момент.

Для всех операций с памятью символов адрес символа формируется из бит регистров Character Memory Address High (CMAH[7:0]) и Character Memory Address Low (CMAL[7:0]), см. рис. 11, 12 и 13).

Character Memory Address High Register (CMAH). Адрес записи = 09H, адрес чтения = 89H. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должны быть соблюдены следующие условия:

1) STAT[5] = 0, память символов (NVM) не в состоянии занятости.
2) VM0[3] = 0, OSD запрещено.

№ бита DFLT Функция
7-0 00000000 Character Memory Address Bits (биты адреса памяти символов).

Эти 8 указывают на символ в памяти символов (всего 256 символов в NVM), рис. 10 и 12.

Character Memory Address Low Register (CMAL). Адрес записи = 0AH, адрес чтения = 8AH. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должны быть соблюдены следующие условия:

1) STAT[5] = 0, память символов (NVM) не в состоянии занятости.
2) VM0[3] = 0, OSD запрещено.

№ бита DFLT Функция
7, 6 00 Не имеет значения
5 - 0 100000 Character Memory Address Bits (биты адреса памяти символов).

Эти 6 бит указывают на один из 64 байт (используются только 54 байта), представляющих 4-пиксельную группу графики символа (рис. 10 и 11).

Character Memory Data In Register (CMDI). Адрес записи = 0BH, адрес чтения = 8BH. Доступ на чтение/запись: неограниченный. Для записи в этот регистр должны быть соблюдены следующие условия:

1) STAT[5] = 0, память символов (NVM) не в состоянии занятости.
2) VM0[3] = 0, OSD запрещено.

№ бита DFLT Функция
7, 6 NA Самая левая точка. 00 = Black (черный), 10 = White (белый), 01 или 11 = Transparent (прозрачный), см. рис. 11.
5, 4 NA Левая точка посередине. 00 = Black (черный), 10 = White (белый), 01 или 11 = Transparent (прозрачный), см. рис. 11.
3, 2 NA Правая точка посередине. 00 = Black (черный), 10 = White (белый), 01 или 11 = Transparent (прозрачный), см. рис. 11.
1, 0 NA Самая правая точка. 00 = Black (черный), 10 = White (белый), 01 или 11 = Transparent (прозрачный), см. рис. 11.

NA = Not Applicable, не применимо.

OSD Insertion Mux Register (OSDM). Адрес записи = 0CH, адрес чтения = 8CH. Доступ на чтение/запись: неограниченный.

№ бита DFLT Функция
7, 6 00 Не имеет значения
5, 4, 3 011 OSD Rise and Fall Time (время спада и нарастания графики OSD) - типовые интервалы времени перехода уровня между соседними точками OSD.

000: 20 нс (максимальная четкость, максимальное количество цветовых артефактов на изображении)
001: 30 нс
010: 35 нс
011: 60 нс
100: 80 нс
101: 110 нс (минимальная четкость, минимальное количество цветовых артефактов)
2, 1, 0 011 OSD Insertion Mux Switching Time (время переключения мультиплексора вставки графики OSD) - типовые интервалы времени переходов между входным видео и точками OSD.

000: 30 нс (максимальная четкость, максимальное количество crosscolor артефактов)
001: 35 нс
010: 50 нс
011: 75 нс
100: 100 нс
101: 120 нс (минимальная четкость, минимальное количество crosscolor артефактов)

Row N Brightness Register (RB0–RB15). Address = 10H + row number; Адрес записи = 10H through 1FH, адрес чтения = 90H through 9FH, Доступ на чтение/запись: неограниченный. Номер верхней строки 0. Номер нижней строки 13 в режиме NTSC и 15 в режиме PAL (см. рис 23).

№ бита DFLT Функция
7 - 4 0000 Не имеет значения
3, 2 00 Character Black Level (уровень черного для символа) - все символы строки N используют эти уровни яркости для своей черной точки, в % от уровня белого OSD.
00: 0%
01: 10%
10: 20%
11: 30%
1, 0 01 Character White Level (уровень белого для символа) - все символы строки N используют эти уровни яркости для своей белой точки, в % от уровня белого OSD.
00: 120%
01: 100%
10: 90%
11: 80%

OSD Black Level Register (OSDBL). Адрес записи = 6CH, адрес чтения = ECH. Доступ на чтение/запись: этот регистр содержит 4 предварительно установленные на заводе биты [3:0], которые не должны быть изменены. Таким образом, когда меняется бит 4, сначала считывается этот регистр, изменяется бит 4, и затем обновленный байт записывается обратно.

№ бита DFLT Функция
7 - 5 000 Не имеет значения
4 1 OSD Image Black Level Control (управление уровнем черного образа OSD). Этот бит позволяет выровнять уровень черного образа OSD с уровнем черного картинки видеосигнала на выходе VOUT. Всегда разрешайте этот бит после сброса по питанию, чтобы обеспечить корректную яркость образа OSD.
0 = разрешает автоматическое управления уровнем черного OSD
1 = запрещает автоматическое управления уровнем черного OSD
3 - 0 xxxx Эти биты содержат заводскую предустановку. Чтобы обеспечить правильное функционирование MAX7456, не меняйте значения этих бит.

xxxx = заводская предустановка - значение может быть любым из 16 возможных. Это значение постоянно сохранено в MAX7456 и будет всегда восстанавливаться в состояние заводской предустановки после сброса по питанию или аппаратного сброса.

Status Register (STAT). Адрес чтения = AxH (x = не имеет значения). Доступ на чтение/запись: только чтение.

№ бита DFLT Функция
7 NA Не имеет значения
6 NA Reset Mode (режим сброса).
0 = когда завершен процесс POR. Происходит приблизительно через 50 мс (типовое значение) после стабилизации VDD (рис. 22)
1 = когда активен режим POR
5 NA Character Memory Status (текущее состояние памяти символов)
0 = показывает доступность памяти для чтения или записи
1 = память недоступна для чтения или записи
4 NA VSYNC Output Level (выходной уровень ~VSYNC)
0 = активен интервал вертикальной синхронизации
1 = неактивен интервал вертикальной синхронизации
3 NA HSYNC Output Level (выходной уровень ~HSYNC)
0 = активен интервал горизонтальной синхронизации
1 = неактивен интервал горизонтальной синхронизации
2 NA Loss-of-Sync (LOS), информация о потере синхронизации по входному видеосигналу
0 = синхронизация активна. Устанавливается после 32 обнаруженных строк видеосигнала.
1 = нет синхронизации. Устанавливается после того, как не будет обнаружено 32 последовательных строки видеосигнала.
1 NA 0 = сигнал NTSC не обнаружен на VIN
1 = сигнал NTSC присутствует на VIN
0 NA 0 = сигнал PAL не обнаружен на VIN
1 = сигнал PAL присутствует на VIN

NA = Not Applicable, не применимо.

Display Memory Data Out Register (DMDO). Адрес чтения = BxH (x = не имеет значения). Доступ на чтение/запись: только чтение.

№ бита DFLT Функция
7 - 0 NA Байт адреса символа (Character Address) или атрибутов символа (Character Attribute) для чтения из памяти экрана.

8-битный режим (DMM[6] = 1):
Если DMAH[1] = 0, содержимое интерпретируется как байт Character Address, где биты 7–0 = биты Character Address, CA[7:0] (рис. 12).
Если DMAH[1] = 1, то содержимое интерпретируется как байт Character Attribute, где:
бит 7 = Local Background Control, LBC (см. рис. 24 и таблицу 4)
бит 6 = Blink, BLK
бит 5 = Invert, INV (см. рис. 24)
биты 4–0 = 0

16-битный режим (DMM[6] = 0): содержимое интерпретируется как байт Character Address, где биты 7–0 = биты Character Address, CA[7:0] (рис. 12). Далее идет байт Character Attribute, где:
бит 7 = Local Background Control, LBC (см. рис. 24 и таблицу 4)
бит 6 = Blink, BLK
бит 5 = Invert, INV (см. рис. 24)
биты 4–0 = 0

Биты LBC, BLK и INV описаны в секции регистра Display Memory Mode (DMM).

NA = Not Applicable, не применимо.

Character Memory Data Out Register (CMDO). Адрес чтения = CxH (x = не имеет значения). Доступ на чтение/запись: только чтение.

№ бита DFLT Функция
7, 6 NA Самая левая точка. 00 = Black (черный), 10 = White (белый), 01 или 11 = Transparent (прозрачный), см. рис. 11.
5, 4 NA Левая точка посередине. 00 = Black (черный), 10 = White (белый), 01 или 11 = Transparent (прозрачный), см. рис. 11.
3, 2 NA Правая точка посередине. 00 = Black (черный), 10 = White (белый), 01 или 11 = Transparent (прозрачный), см. рис. 11.
1, 0 NA Самая правая точка. 00 = Black (черный), 10 = White (белый), 01 или 11 = Transparent (прозрачный), см. рис. 11.

NA = Not Applicable, не применимо.

[Информация по применению MAX7456]

Работа памяти символов. Только все данные символа целиком (54 байта данных точек) могут быть записаны в NVM или прочитаны из NVM одной операцией. Это осуществляется через 64 байта shadow RAM (см. рис. 13). К shadow RAM осуществляется доступ через порт SPI по одному байту. Shadow RAM записывается в NVM и считывается из NVM одной командой SPI.

Ниже описаны шаги различных операций с символами в NVM.

Запись нового символа:

1) Запишите VM0[3] = 0 для запрета отображения образа OSD.
2) Запишите CMAH[7:0] = xxH для выбора нужного записываемого символа (0 .. 255), см. рис. 10 и 13.
3) Запишите CMAL[7:0] = xxH для выбора 4-точек байта (0–63) в записываемом символе (рис. 10 и 13).
4) Запишите CMDI[7:0] = xxH для установки значений точек выбранной части символа (рис. 10 и 13).
5) Повторяйте шаги 3 и 4, пока не будут установлены все 54 байта данных символа в shadow RAM.
6) Запишите CMM[7:0] = 1010xxxx, чтобы записать в NVM данные из shadow RAM (рис. 13). Память символов будет занята приблизительно 12 мс в течение этой операции. STAT[5] может быть прочитан для проверки, что процесс записи NVM завершен.
7) Запишите VM0[3] = 1, чтобы разрешить отображение образа OSD.

Модификация существующего символа:

1) Запишите VM0[3] = 0 для запрета отображения образа OSD.
2) Запишите CMAH[7:0] = xxH для выбора модифицируемого символа (0 .. 255), см. рис. 10 и 13.
3) Запишите CMM[7:0] = 0101xxxx для чтения данных символа из NVM в shadow RAM (рис. 13).
4) Запишите CMAL[7:0] = xxH для выбора 4-точек байта (0–63) в модифицируемом символе (рис. 10 и 13).
5) Прочитайте CMDO[7:0] = xxH для чтения модифицируемого байта данных 4-точек (рис. 10 и 13).
6) Измените данные байта 4-точек, как это необходимо.
7) Запишите CMDI[7:0] = xxH, чтобы записать измененный байт данных 4-точек обратно в shadow RAM (рис. 10 и 13).
8) Повторяйте шаги 4 .. 7, пока все необходимые точки не будут загружены в shadow RAM.
9) Запишите CMM[7:0] = 1010xxxx, чтобы данные shadow RAM записались в NVM (рис. 13). Память символов будет занята приблизительно 12 мс в течение этой операции. STAT[5] может быть прочитан для проверки, что процесс записи NVM завершен.
10) Запишите VM0[3] = 1, чтобы разрешить отображение образа OSD.

Шаги для чтения байт символа из NVM:

1) Запишите VM0[3] = 0 для запрета отображения образа OSD.
2) Запишите CMAH[7:0] = xxH для выбора читаемого символа 0 .. 255 (рис. 10 и 13).
3) Запишите CMM[7:0] = 0101xxxx для чтения данных символа из NVM в shadow RAM (рис. 13).
4) Запишите CMAL[7:0] = xxH для выбора байта 4-точек (0–63) в символе для чтения (рис. 10 и 13).
5) Прочитайте CMDO[7:0] = xxH для чтения данных выбранного байта 4-точек (рис. 10 и 13).
6) Повторяйте шаги 4 и 5, чтобы прочитать данные других байты 4-точек.
7) Запишите VM0[3] = 1, чтобы разрешить отображение образа OSD.

Работа памяти экрана. Следующие два шага разрешают отображение образа OSD. Эти шаги не требуются для чтения из памяти экрана или записи памяти экрана:

1) Запишите VM0[3] = 1, чтобы разрешить отображение образа OSD.
2) Запишите OSDBL[4] = 0, чтобы разрешить автоматическое управление уровнем черного (automatic OSD black level control). Это обеспечит корректную яркость образа OSD. Этот регистр содержит 4 предустановленные на заводе биты [3:0], которые не должны быть изменены. Таким образом, когда изменяете бит 4, сначала прочитайте OSDBL[7:0], измените бит 4, и затем запишите обновленный байт обратно.

Шаги по очистке памяти экрана. Запишите DMM[2] = 1 для запуска операции очистки памяти экрана. Эта операция занимает приблизительно 20 мкс. Регистр Display Memory Mode не может быть записан снова, пока не завершится операция очистки. DMM[2] автоматически сбросится в 0 после завершения операции.

Шаги для записи памяти экрана в 8-битном режиме. 8-битный рабочий режим предоставляет максимум гибкости при записи символов в память экрана. Этот режим позволяет индивидуально записать байты атрибута символа (Character Attribute) для каждого символа (см. таблицу 5). Этот режим отличается от 16-битного, в котором байт атрибута автоматически копируется из DMM[5:3], когда записывается символ (рис. 19). Запишите DMM[6] = 1 для выбора 8-битного режима.

Запись байта адреса символа (Character Address) в память экрана:

1) Запишите DMAH[1] = 0, чтобы записать байт Character Address.
2) Запишите DMAH[0] = x для выбора MSB и DMAL[7:0] = xxH для выбора младших бит адреса, куда записываются данные символа. Этот адрес определяет положение символа на экране (см. рис. 10).
3) Запишите байт Character Address (CA[7:0]) для записи в память экрана в DMDI[7:0] (см. рис. 10, 12 и 19).

Запись байта атрибута символа (Character Attribute Byte) в память экрана:

1) Запишите DMAH[1] = 1, чтобы записать байт Character Attribute.
2) Запишите DMAH[0] = x для выбора MSB и DMAL[7:0] = xxH для выбора младших бит адреса, куда записываются данные символа. Этот адрес определяет положение символа на экране (см. рис. 10).
3) Запишите байт Character Attribute, чтобы он записался в память экрана, в DMDI[7:0] (см. рис. 10 и 19).

Шаги для записи памяти экрана в 16-битном режиме. 16-битный режим увеличивает скорость, с которой может быть обновлена память экрана. Это происходит путем автоматического копирования DMM[5:3] в байт атрибута символа (Character Attribute), когда записывается новый символ, что уменьшает количество операций записи SPI на один символ с двух до одной (рис. 19). В этом режиме все записываемые символы получают одинаковый байт атрибута. Этот режим полезен, потому что последовательно размещенные символы обычно имеют один и тот же атрибут. Этот режим отличается от 8-битного режима, где байт Character Attribute должен каждый раз записываться при записи байта в память экрана по Character Address (см. таблицу 5).

1) Запишите DMM[6] = 0, чтобы выбрать 16-битный рабочий режим.
2) Запишите DMM[5:3] = xxx для установки бит атрибутов Local Background Control (LBC), Blink (BLK) и Invert (INV), которые будут применяться ко всем записываемым в память экрана символам в 16-битном режиме.
3) Запишите DMAH[0] = x для выбора MSB и DMAL[7:0] = xxH, чтобы выбрать младшие биты адреса, куда записываются данные символа. Этот адрес определяет положение символа на экране (см. рис. 10).
4) Запишите байт Character Address (CA[7:0]) для записи в память экрана в DMDI[7:0]. Это будет сохранено вместе с байтом Character Attribute, который будет взят из DMM[5:3] (рис. 12 и 19).

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

В 8-битном режиме:

1) Запишите DMAH[1] = 0 для выбора, если будет записываться байт Character Address, или DMAH[1] = 1 для выбора записи байта Character Attribute.
2) Запишите DMAH[0] = X для выбора MSB и DMAL[7:0] = XX для выбора младших бит начального адреса для операции автоинкремента. Этот адрес определит положение первого символа на экране (см. рис. 10 и 21).
3) Запишите DMM[0] = 1 для установки режима автоинкремента.
4) Запишите DMM[6] = 1 для установки 8-битного рабочего режима.
5) Запишите данные CA в требуемом порядке символов для отображения текста на экране. Это однобайтная операция. Адрес DMDI[7:0] автоматически установится в режим автоинкремента. Адрес памяти экрана автоматически инкрементируется последующей операцией записи, пока не будет достигнут конечный адрес памяти экрана.
6) Запишите CA = FFh для завершения режима автоинкремента.

Замечание: символ, сохраненный по адресу CA[7:0] = FFh, недоступен для использования в режиме автоинкремента. Операция чтения невозможна до завершения режима автоинкремента.

В 16-битном режиме:

1) Запишите DMAH[0] = X для выбора MSB и DMAL[7:0] = XX для выбора младших бит начального адреса для операции автоинкремента. Этот адрес определит положение первого символа на экране (см. рис. 10 и 21).
2) Запишите DMM[0] = 1 для выбора режима автоинкремента.
3) Запишите DMM[6] = 0 для выбора 16-битного рабочего режима.
4) Запишите DMM[5:3] = XXX для установки бит атрибутов Local Background Control (LBC), Blink (BLK) и Invert (INV), которые будут применены ко всем записываемым символам.
5) Запишите данные CA в требуемом порядке символов для отображения текста на экране. Это будет сохранено вместе с байтом Character Attribute, полученным из DMM[5:3], см. рис. 19. Это однобайтная операция. Адрес DMDI[7:0] автоматически установится в режиме автоинкремента. Адрес памяти экрана автоматически инкрементируется последующей операцией записи до тех пор, пока не будет достигнут последний адрес памяти экрана.
6) Запишите CA = FFh для завершения режима автоинкремента.

Замечание: символ, сохраненный по адресу CA[7:0] = FFh, недоступен для использования в режиме автоинкремента. Операция чтения невозможна до завершения режима автоинкремента.

Шаги для чтения из памяти экрана в 8-битном режиме:

1) Запишите DMM[6] = 1 для выбора 8-битного рабочего режима.
2) Запишите DMAH[1] = 0 для чтения байта Character Address или DMAH[1] = 1 для чтения Character Attribute.
3) Запишите DMAH[0] для выбора MSB адреса, по которому данные должны быть прочитаны (см. рис. 10).
4) Запишите DMAL[7:0] для выбора всех младших бит адреса, кроме MSB, по которому должны быть прочитаны данные (см. рис. 10).
5) Прочитайте DMDO[7:0] для чтения данных из выбранной позиции памяти экрана (см. рис. 10).

Шаги для чтения из памяти экрана в 16-битном режиме:

1) Запишите DMM[6] = 0 для выбора 16-битного рабочего режима.
2) Запишите DMAH[0] = x для выбора MSB и DMAL[7:0] = xxH для выбора младших бит адреса, откуда будут прочитаны данные. Этот адрес определяет место символа на экране (см. рис. 10).
3) Прочитайте DMDO[15:0] для чтения байта Character Address и байта Character Attribute из выбранной позиции в памяти экрана. Первый байт данных это Character Address (CA[7:0]), а второй байт содержит биты Character Attribute (рис. 20). Обратите внимание, что позиции бит в байте Character Attribute при чтении отличаются от позиций, когда они записываются. См. секцию Display Memory Data Out Register (DMDO) и рис. 20 для описания позиций бит для бит атрибутов при чтении.

Замечание: если запрос чтения памяти экрана произошел одновременно операцией SPI памяти экрана, то внутренний запрос на чтение игнорируется, и отображение этого символа в течение этого времени может оказаться мгновенно нарушены. См. секцию "Синхронное обновление OSD".

Синхронное обновление OSD. Отображение символа может быть мгновенно нарушенным, если внутренний запрос чтения памяти экрана произойдет одновременно с операцией SPI памяти экрана. Мгновенное нарушение образа OSD может быть предотвращено записью памяти экрана во время интервала вертикального гашения. Это может быть осуществлено с помощью импульса VSYNC, который будет сигналом прерывания для процессора хоста. Альтернативно образ OSD может быть синхронно запрещен перед записью в память экрана и затем синхронно разрешен (см. VM0[3:2]).

Таблица 5. Режимы доступа к памяти экрана и операции SPI.

Режим Автоинкремент запрещен DMM[0]=0 Количество операций чтения Количество операций записи Автоинкремент разрешен DMM[0]=1 Количество операций записи
16-битный
DMM[6]=0
Однократная настройка 2 1 Однократная настройка 6
На символ 3 3 На символ 1
8-битный
DMM[6]=1
Однократная настройка 1 1 Однократная настройка 6
На символ 6 6 На символ 1

[Тактирование нескольких OSD]

MAX7456 предоставляет выход тактов TTL (CLKOUT), который может поступать на вывод CLKIN другой микросхемы MAX7456. Две или большее количество MAX7456 могут тактироваться с помощью внешнего драйвера тактов. Такое решение уменьшает стоимость системы, поскольку нужен только один кварцевый резонатор, подключенный к одной MAX7456, для тактирования нескольких MAX7456 (рис. 25).

MAX7456 Multiple OSD with Daisy Chained Clock fig25

Рис. 25. Типовая схема подключения нескольких OSD с общим тактированием.

Выбор кварца. Необходим кварц 27 МГц фундаментального режима параллельного резонанса. Внешние конденсаторы нагрузки не нужны. Все конденсаторы, требуемые для генератора Пирса, уже содержатся в чипе.

Питание и блокировочные конденсаторы. MAX7456 работает от трех независимых шин питания. Каждое напряжение питания должно быть в диапазоне между +4.75V и +5.25V. Отдельное цифровое питание, независимое от аналогового, обеспечивает снижение высокочастотных цифровых помех на видеовыходе. Все три напряжения питания должны быть с одинаковым напряжением. Подключите блокировочные конденсаторы 0.1 мкФ каждой шины питания как можно ближе к соответствующим выводам микросхемы. Нет какого-то требования по последовательности включения шин питания.

Рекомендации по разводке печатной платы. Чтобы обеспечить лучшие параметры, сделайте провода сигналов VIN и VOUT как можно короче. Поместите все разделительные конденсаторы 75 Ом резисторы терминирования как можно ближе к микросхеме, и земляной вывод этих резисторов должен быть напрямую припаян к аналоговой заливке медью. Поскольку у корпуса MAX7456 TSSOP28 есть нижняя контактная площадка земли (exposed pad, EP), не делайте разводку проводников под корпусом микросхемы, чтобы не было коротких замыканий. См. MAX7456 EV kit для примера разводки PCB.

Для охлаждения площадка EP должна быть соединена с контактной площадкой меди подобного размера на стороне компонентов платы. Эта площадка меди должна соединяться со стороной пайки через несколько переходных отверстий, обеспечивающих рассеивание тепла от микросхемы. Размеры площадки металла на стороне пайки должны быть больше, чем размеры площадки EP. Рекомендуется, чтобы площадка EP соединялась с землей, но это необязательно. Не используйте EP как единственное подключение шины земли для устройства.

[Какие платки можно найти с MAX7456]

MICRO MinimOSD. Миниатюрная платка размером 15 мм x 15 мм, которая тем не менее обладает широким набором возможностей. Кроме входа и выхода видеосигнала и интерфейса UART, через который передается информация OSD, к ней можно подключить два напряжения от батарей, сенсор тока, сенсор RSSI.

MICRO MinimOSD board

Программируется платка MICRO MinimOSD через тот же UART, поскольку в ней присутствует загрузчик Arduino (сигналами RX, TX, DTR). Мне известно как минимум два открытых проекта, которые совместимы с этой платой MWOSD [4] и ArduCAM OSD [5]. И тот и другой это проекты Arduino, которые компилируются и прошиваются в среде Arduino IDE обычным образом. Эта платка очень популярна, и её можно купить на AliExpress.

Чтобы скомпилировать проект ArduCAM OSD, скачайте его репозиторий [5], откройте в среде Arduino IDE файл ArduCAM_OSD/ArduCAM_OSD.ino. После этого компилируйте и прошивайте его обычным образом. Замечание по поводу сигнала автосброса DTR платки MICRO MinimOSD - если у вас USB TTL переходничок на чипе FR232R, то на DTR подайте сигнал RTS# с микросхемы FR232R.

[Ошибка отсутствия библиотек]

ArduCAM_OSD:56:10: fatal error: FastSerial.h: No such file or directory

Такая ошибка говорит о том, что не установлены необходимые библиотеки в стандартных путях поиска Arduino IDE. Скопируйте все папки, которые находятся в каталоге libraries репозитория [5], в каталог ~/Arduino/libraries/. На примере библиотеки FastSerial:

$ cp -r libraries/FastSerial/ ~/Arduino/libraries/

Также нужно поступить и с другими каталогами библиотек, находящихся в папке libraries:

AP_Common
AP_Math
FastSerial
GCS_MAVLink
MemoryFree
PTPCamera
SimpleTimer
USBHOST

[Ошибка, связанная с prog_char]

In file included from ~/Arduino/libraries/FastSerial/BetterStream.h:16:0,
                 from ~/Arduino/libraries/FastSerial/FastSerial.h:56,
                 from ~/asm/arducam-osd/ArduCAM_OSD/ArduCAM_OSD.ino:56:
~/Arduino/libraries/FastSerial/../AP_Common/AP_Common.h:
In function ‘int strcasecmp_P(const char*, const prog_char_t*)’: ~/Arduino/libraries/FastSerial/../AP_Common/AP_Common.h:108:32:
error: expected primary-expression before ‘const’ return strcasecmp_P(str1, (const prog_char *)pstr); ^~~~~ ~/Arduino/libraries/FastSerial/../AP_Common/AP_Common.h:108:32:
error: expected ‘)’ before ‘const’ ~/Arduino/libraries/FastSerial/../AP_Common/AP_Common.h:
In function ‘int strcmp_P(const char*, const prog_char_t*)’: ~/Arduino/libraries/FastSerial/../AP_Common/AP_Common.h:113:28:
error: expected primary-expression before ‘const’ return strcmp_P(str1, (const prog_char *)pstr); ^~~~~

... и так далее ...

В файле ~/Arduino/libraries/AP_Common/AP_Common.h исправьте макрос PSTR(s), в нем prog_char надо заменить на char. Проще всего это сделать добавлением строчки перед определением этого макроса:

#define prog_char char
# define PSTR(s) (__extension__({static char __c[] PROGMEM = (s); \ (prog_char_t *)&__c[0];}))

То же самое нужно сделать для макроса printf_P в ~/Arduino/libraries/FastSerial/BetterStream.h:

#define prog_char char
#define printf_P(fmt, ...) _printf_P((const prog_char *)fmt, ## __VA_ARGS__)

Исправленный репозиторий можно скачать по ссылке [6].

MinimOSD. Плата, на которую был изначально рассчитан проект ArduCAM OSD [5].

MinimOSD board top MinimOSD board bottom

Функционально плата не отличается от MICRO MinimOSD. У MinimOSD размер больше, детали расположены на одной стороне, все сигналы имеют удобную и понятную маркировку.

[Словарик]

CVBS Color Video Blank Sync, композитный видеосигнал.

NVM Non-Volatile Memory, энергонезависимая память (EEPROM).

OSD On-Screen Display, вставляемая в видеосигнал графика.

VTG Video Timing Generator, генератор интервалов времени для видеосигнала.

[Ссылки]

1. MAX7456 Single-Channel Monochrome On-Screen Display with Integrated EEPROM.
2. Avamander / max7456, библиотека интерфейса MAX7456.
3. rgorosito / OSD, обновление шрифта MAX7456.
4. MWOSD.
5. sandrobenigno / arducam-osd.
6. 250527arducam-osd-fixed.zip - ArduCAM OSD с исправлением ошибки prog_char.

 

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


Защитный код
Обновить

Top of Page