Обновить
12
Антон Алексеев@antonluba

Пользователь

Отправить сообщение
Обязательно попробую. Я даже заказал пару микросхем sram по 128 кБайт каждая, флешек от биосов у меня и так полно, есть кодеры цвета, есть макетка на Altera MAX2 и Циклоне 1.

Хочу еще с какой-нибудь AVR с интерфейсом внешней памяти поиграться.

Времени только мало.
И кстати, frame buffer как таковой в этом таймере отсутствует.

Есть буфер, где хранятся значения символов — 5 байт верхней строки и 8 — нижней (только второе двоеточие и секунды не отображаются, они нужны для хода часов).

Для верхней строки символы могут принимать значения цифр от 0 до 9 и двоеточия. Для нижней строки добавляется пустое двоеточие, то есть символ такого же размера, как двоеточие, но пустой, для гашения двоеточия. Битмапы этих символов хранятся во флеше (см. описание шрифтов).

На каждом цикле вывода видео-строки есть вложенный цикл вывода линии текущего символа. В этом цикле по цифре в буфере и номеру линии (y-координата символа) вычисляется начальный адрес, с которого начинается вывод, а дальше просто в SPI кидаются байты, пока вся ширина символа не выведется.

Таким образом расход ОЗУ вообще минимален, а флеш забит огромным шрифтом.
Цвет я бы сделал 8-битный, внешним кодеком, даже заказал пару микросхем.
Можно так же через DMA выводить байты в порт, к которому подключен простой R2R ЦАП.
Только для хранения цветного изображения нужно гораздо больший объем флеша, тут бы сжатие не помешало какое-нибудь быстрое.
Другой вариант — сделать мультиплексор и подавать черно-белый сигнал на разные входы кодера цвета.

Только в практическом устройстве это вряд ли нужно.
Простым решением было бы переписать вывод видео на STM8. Он по функциям почти аналогичен, но SPI непрерывный. Я даже получил лицензию на компилятор COSMIC.
Но потом понял, что лучше сразу сделать на STM32. На данный момент сделал вывод синхросигнала и немного исследовал SPI, DMA и контроллер прерываний.
Выглядит так, что тайминги можно выдерживать с помощью таймера синхронизации (с его 4 каналами), один канал вырабатывает сами синхроимпульсы, второй — настроен на backporch и пинает DMA на вывод строки. Или запускает второй таймер, который, в свою очередь, несколько раз пинает DMA c периодом, равным ширине каждого символа в строке.
В деталях еще не продумал, периферия очень мощная, изучаю потихоньку.
2

Информация

В рейтинге
Не участвует
Откуда
Коломна, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность