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 системы управления дронами Промышленные приложения Пользовательская электроника
Упрощенная функциональная диаграмма:
Цоколевка корпуса TSSOP28 микросхемы, вид сверху:
Описание выводов:
№ выв.
Имя
Функция
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.
Рис. 1. Стандартные схемы тестирования.
Рис. 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 меняется в обратной пропорциональности этой емкости.
Рис. 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.
Video Timing Generator. Это цифровой генератор интервалов времени видеосигнала (video timing generator, VTG), который генерирует все внутренние и внешние сигналы (VSYNC и HSYNC) тайминга видео. VSYNC и HSYNC могут быть синхронизированы с сигналом VIN, или формироваться независимо, когда действует режим внутренней синхронизации. VTG может генерировать сигналы интервалов времени стандартов NTSC или PAL, используя один и тот же кварцевый резонатор 27 МГц (см. рис. 4 .. 9).
Рис. 8. VOUT и горизонтальная синхронизация HSYNC (NTSC и PAL, External Sync Mode)
Рис. 9. VOUT и горизонтальная синхронизация HSYNC (NTSC и PAL, Internal Sync Mode)
Кварцевый генератор. Внутренняя схема кварцевого генератора формирует системную тактовую частоту, которую использует VTG. Генератор использует внешний кварц на 27 МГц, или может быть подана тактовая частота 27 МГц от внешнего источника на вход CLKIN с уровнями TTL. Когда используется тактирование от внешнего источника, выход кварцевого генератора XFB остается неподключенным.
Display Memory (SRAM). Память экрана хранит 480 адресов символов, указывающих на символы, сохраненные в памяти символов NVM. Содержимое памяти экрана программируется пользователем через SPI-совместимый последовательный интерфейс. Адрес в памяти экрана соответствует фиксированной позиции на экране монитора (см. рис. 10). Мгновенное нарушение отображаемой картинки OSD можно предотвратить, если записывать в память экрана во время действия импульса вертикальной синхронизации VSYNC. Этот сигнал может использоваться для генерации сигнала прерывания, чтобы инициировать запись в память экрана.
Рис. 10. Определение различных параметров.
Память символов (NVM). Здесь хранится графика, организованная в 256 строк по 64 байта, каждая строка содержит графику одного символа. Заводская запрограммированная таблица символов показа на рис. 12. Содержимое памяти символов программируется через SPI-совместимый последовательный интерфейс. Каждая строка содержит описание одного символа OSD. Каждый символ состоит из 12 горизонтальных и 18 вертикальных точек, где каждая точка представлена 2 битами: программирующими 3 состояния белый цвет (white), черный цвет (black) или прозрачная точка (transparent). Таким образом, каждый символ требует 54 байта данных графики (рис. 11).
Рис. 11. Графика одного символа (карта точек).
Рис. 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.
Рис. 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 поддерживает тактирование интерфейса частотой 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.
Рис. 15. Операция записи.
Рис. 16. Операция чтения.
Рис. 17. Запись байта атрибута символа (Character Attribute Byte) в 8-битном режиме.
Рис. 19. Запись байта атрибута символа (Character Attribute Byte) в 8-битном режиме и 16-битном режимах.
Рис. 20. Чтение байт адреса символа и атрибута символа в 16-битном режиме.
Рис. 21. Операция записи в режиме автоинкремента.
[Варианты сброса]
Power-On Reset, POR. Схема сброса по питанию MAX7456 (power-on reset, POR) обеспечивает формирование внутреннего сигнала сброса после того, как напряжение питания достигнет номинального значения и стабилизируется. Внутренний сигнал сброса сбросит все регистры в их значения по умолчанию и очистит память экрана. Процесс сброса регистров требует 100 мкс, и чтобы избежать нежелательных результатов, в течение этого времени не должно быть никакой активности чтения/записи. Память экрана сбрасывается, и OSD разрешается приблизительно через 50 мс после стабилизации напряжения питания и получения стабильной частоты тактов 27 МГц. Пользователь должен избегать операций SPI в течение этого времени, чтобы избежать нежелательных результатов. После интервала 50 мс (типовое значение) бит STAT[6] может быть опрошен, чтобы проверить, что последовательность сброса завершена (рис. 22).
Рис. 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 = внутренняя синхронизация
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 точек)
Рис. 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
1
Рис. 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.
OSD Insertion Mux Switching Time (время переключения мультиплексора вставки графики OSD) - типовые интервалы времени переходов между входным видео и точками OSD.
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 = память недоступна для чтения или записи
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).
Рис. 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 через тот же 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:
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. Проще всего это сделать добавлением строчки перед определением этого макроса:
Исправленный репозиторий можно скачать по ссылке [6].
MinimOSD. Плата, на которую был изначально рассчитан проект ArduCAM OSD [5].
Функционально плата не отличается от MICRO MinimOSD. У MinimOSD размер больше, детали расположены на одной стороне, все сигналы имеют удобную и понятную маркировку.
[Словарик]
CVBS Color Video Blank Sync, композитный видеосигнал.
NVM Non-Volatile Memory, энергонезависимая память (EEPROM).
OSD On-Screen Display, вставляемая в видеосигнал графика.
VTG Video Timing Generator, генератор интервалов времени для видеосигнала.