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

Извини было много работы, некогда было отписаться.

Есть несколько вопросов:

1. Где настройка PLL, скорости памяти и тд.?(Надеюсь вынесено в low_level_init)

2. #define BUFFER_ADDR 0xA0000000 это хорошо, но как ты собираешся формировать там изображение. Тебе нужно выделить массив размером 240*320*2 байт, а точнее два таких массива. Пока из одного будет выводится картинка, ты во второй пишеш новую, а потом меняеш указатель из какого масива выводить.

3. Для чего задержки for(i=0;i<50000;i++);

 

Я уже заждался. :biggrin: .

 

По поводу заданных вопросов:

1. PLL не использую, настройка памяти есть(запись, чтение проходит успешно)

2. Для видеобуфера использую SRAM, начиная с адреса 0х80000000.

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

 

Как выводить изображение вроде разобрался, но проблема в настройках развертки - выводит не то что хотелось бы.

 

7:2 PPL = 0x140(320) количество пикселей данных

В ДШ к контроллеру (как я понял) написано, что (320/16)-1 = 19

 

Так что я щас мучаюсь с настройкой LCD_TIMH, LCD_TIMV.

Если будут советы, то с удовольствием выслушаю :biggrin:

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


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

Как выводить изображение вроде разобрался, но проблема в настройках развертки - выводит не то что хотелось бы.

 

 

В ДШ к контроллеру (как я понял) написано, что (320/16)-1 = 19

 

Так что я щас мучаюсь с настройкой LCD_TIMH, LCD_TIMV.

Если будут советы, то с удовольствием выслушаю :biggrin:

Опиши что выводит и что хочется. В чём именно проблема синхронизации? и по поводу установки количества точек в линии ты прав, я не досмотрел.

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


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

Опиши что выводит и что хочется. В чём именно проблема синхронизации? и по поводу установки количества точек в линии ты прав, я не досмотрел.

 

Уже выводит куда я хочу. НО!!! Я вывожу белый квадратик на черном фоне в центре экрана, а выводит светло желтый квадратик на феолетовом.

в чем может быть причина такого безобразия. Люди говорят, что дело в настройках LCD_TIMH, LCD_TIMV. Значение данных регистров я изменяю, а реакции ноль.

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


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

Уже выводит куда я хочу. НО!!! Я вывожу белый квадратик на черном фоне в центре экрана, а выводит светло желтый квадратик на феолетовом.

в чем может быть причина такого безобразия. Люди говорят, что дело в настройках LCD_TIMH, LCD_TIMV. Значение данных регистров я изменяю, а реакции ноль.

Тут не подскажу, но мне кажеться копать нужно в направлении представлений цветов

поиграйся в регистре LCD_CTRL с настройками битов LcdBpp(3:1).

LCD_CTRL = ((1<<5) | (6<<1)); в этой строке замени 6 на 4

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

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


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

Тут не подскажу, но мне кажеться копать нужно в направлении представлений цветов

поиграйся в регистре LCD_CTRL с настройками битов LcdBpp(3:1).

LCD_CTRL = ((1<<5) | (6<<1)); в этой строке замени 6 на 4

 

Да, дело в настройках цвета. буду копать дальше.

СПАСИБО за ответы

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


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

Да, дело в настройках цвета. буду копать дальше.

СПАСИБО за ответы

По поводу цвета нужно ещё смотреть какой режим включен 8 или 16 бит на цвет. Если 8 бит то нужно заполнять палитру в 256 цветов, порядковый номер из памяти будет переводиться в цвет автоматом согласно палитре.

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


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

Извини было много работы, некогда было отписаться.

Есть несколько вопросов:

1. Где настройка PLL, скорости памяти и тд.?(Надеюсь вынесено в low_level_init)

2. #define BUFFER_ADDR 0xA0000000 это хорошо, но как ты собираешся формировать там изображение. Тебе нужно выделить массив размером 240*320*2 байт, а точнее два таких массива. Пока из одного будет выводится картинка, ты во второй пишеш новую, а потом меняеш указатель из какого масива выводить.

3. Для чего задержки for(i=0;i<50000;i++);

 

А по поводу вывода на экран нет ничего проще! Отведите 307200(0x4B000) байт видеопамяти начая с адреса 0xA0000000 и разбейте на две части размером 320*240*2 байт, тоесть столько сколько необходимо на один экран. Далее используя Next base address update interrupt(введи в поиске по usermanual на LPC2478), подсовываеш ему то 0xA0000000, то 0xA0025800 в регистр LCD_UPBASE. А сам в это время в другой части буфера формируй изображение.

 

Если совсем просто, выведи статическую картинку, выдели в рам массив unsigned short LCD_Frame[76800] забей его чем нибуть осмысленным, и передай на вывод LCD контроллеру в LPC : LCD_UPBASE = &LCD_Frame[0];

 

Далее микроконтроллер сам выплюнет всё в экран.

 

 

А можно ли использовать LCD_LPBASE в режиме TFT ?Установив LCD_CTRL_bit.LcdDual=1;

для автоматического переключения страниц?

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


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

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

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

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

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

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

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

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

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

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