Перейти к содержанию
    

BF548+EPPI+DMA

 

Если это делать в прерывании DMA

 

*pDMA12_CONFIG &= ~(1<<0);
*pEPPI0_CONTROL &= ~(1<<0);
*pDMA12_START_ADDR = &adwDisplayBuffer1[0];
*pDMA12_CONFIG |= (1<<0);
*pEPPI0_CONTROL |= (1<<0);

 

то некрасиво проскакивает черная полоска (на последней строке)

Как делать чтобы было правильно и красиво ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильно и красиво - надо настроить DMA на режим автобуферизации с двойной циклической буферизацией. Тогда прерывания будут приходить по заполнению каждого буфера и не надо будет перенастраивать DMA. Читай ADSP-BF54x Blackfin Processor Hardware Reference, страница 7-64, да и вообще весь раздел 7.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильно и красиво - надо настроить DMA на режим автобуферизации с двойной циклической буферизацией. Тогда прерывания будут приходить по заполнению каждого буфера и не надо будет перенастраивать DMA. Читай ADSP-BF54x Blackfin Processor Hardware Reference, страница 7-64, да и вообще весь раздел 7.

Спасибо, всё получилось - красиво и без мусора.

2 дескриптора, каждый указывает на свой буфер. В статическом состоянии каждый зациклен на самого себя,

а когда нужно сменить экран то перенапрявляю один дескриптор на другой.

 

Изменено пользователем PriBoris

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могу понять по документации:

 

у меня есть 18-битная панель

сейчас пиксель хранится в памяти в виде RGB888 и на лету перепаковывается в RGB666

 

а если я хочу подключить ее к BF548 в 16-битном режиме, мне нужно что-то аппаратно менять ?

сейчас на существующей плате провёл программный эксперимент - в 16-битном режиме нормального синего цвета так и не добился

в лучшем случае грязно-зеленый

 

надо понимать, для 16-бит нужно корректировать плату?

 

перефразирую главную хотелку - хочу чтобы пиксель занимал 16-бит в памяти

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могу понять по документации:

 

у меня есть 18-битная панель

сейчас пиксель хранится в памяти в виде RGB888 и на лету перепаковывается в RGB666

 

а если я хочу подключить ее к BF548 в 16-битном режиме, мне нужно что-то аппаратно менять ?

сейчас на существующей плате провёл программный эксперимент - в 16-битном режиме нормального синего цвета так и не добился

в лучшем случае грязно-зеленый

 

надо понимать, для 16-бит нужно корректировать плату?

 

перефразирую главную хотелку - хочу чтобы пиксель занимал 16-бит в памяти

 

Хоть и поздно, но отвечу :) Да, надо переделать плату. Нижние разряды RED и BLUE дисплея надо куда нибудь подтянуть (VCC или GND или следующий бит (т.е. два нижних разряда R и B на дисплее вместе)). И подключать дисплей как 16-разрядный. Т.е. шина ужимается в 16 выводов без "пробелов". Ну и в настройках eppi указать, что выводить надо без перепаковку на лету. Разве что можно сделать swap красного и синего

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...