Jump to content

    

Recommended Posts

 

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

 

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

Share this post


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

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

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

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

 

Edited by PriBoris

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

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

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

 

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

 

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

 

 

 

 

 

 

 

Share this post


Link to post
Share on other sites
Не могу понять по документации:

 

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

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

 

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

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

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this