реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Управление ЖКИ, управление контроллером SPFD5408
Anatoly_P
сообщение Jun 5 2008, 11:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-05-08
Из: Minsk
Пользователь №: 37 240



привет всем! Люди добрые помогите кто чем может. Есть ЖКИ с контроллером SPDF5408. В даташите контроллера нашел таблицу кода инициализации, запрограммировал, В результате после инициализации на экране появляется шум. Вроде значить система работает ( были подозрения, что сжег). Но никак не могу точку или последовательность точек вывести. Загоняю данные в память ЖКИ через регистр R22h, а этот гребанный ЖКИ нифига не отображает. Уже третий день на месте стою, может кто подскажет куда копать.
ARM LPC2468. Плату под него сами разрабатывали.
Go to the top of the page
 
+Quote Post
Liderr
сообщение Jan 24 2009, 20:54
Сообщение #2





Группа: Новичок
Сообщений: 1
Регистрация: 24-01-09
Пользователь №: 43 898



Цитата(Anatoly_P @ Jun 5 2008, 14:07) *
привет всем! Люди добрые помогите кто чем может. Есть ЖКИ с контроллером SPDF5408. В даташите контроллера нашел таблицу кода инициализации, запрограммировал, В результате после инициализации на экране появляется шум. Вроде значить система работает ( были подозрения, что сжег). Но никак не могу точку или последовательность точек вывести. Загоняю данные в память ЖКИ через регистр R22h, а этот гребанный ЖКИ нифига не отображает. Уже третий день на месте стою, может кто подскажет куда копать.
ARM LPC2468. Плату под него сами разрабатывали.


Приветствую, Коллега! wink.gif
Сейчас разбираюсь с дисплеем от сотового телефона NOKIA N95 с тач панелью, в котором также используется контроллер SPDF5408. Нашёл ли ты какую либо информацию, решил ли проблемы с инициальзацией и выводом информации, какие подводные камни? Заранее спасибо!
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 24 2009, 21:43
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Liderr, обращаю ваше внимание, что Anatoly_P разместил свое сообщение больше года назад. Но за это время на него не было ни одного ответа. Так что с вашей стороны наивно надеяться, что он увидит свой пост годовой давности от что-то ответит вам здесь. Тем более, что, судя по информации в профиле, он не посещал форума уже четыре месяца. Надежнее было бы написать ему мылом.
Go to the top of the page
 
+Quote Post
at90
сообщение Jan 25 2009, 10:18
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Liderr, а экран от оригинальной N95 или от китайской... откуда инфа что в экране именно SPDF5408


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jan 28 2009, 08:49
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Здраствуйте. Щас разбираюсь с понелью G057QN01 V0. инфы в инете - ноль. подключил его к LPC2478, а что с ним дальше делать не знаю. может кто работал. подскажите.
Go to the top of the page
 
+Quote Post
kovz
сообщение Jan 28 2009, 09:12
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 25-07-05
Пользователь №: 7 079



Цитата(Anatrulij @ Jan 28 2009, 10:49) *
Здраствуйте. Щас разбираюсь с понелью G057QN01 V0. инфы в инете - ноль. подключил его к LPC2478, а что с ним дальше делать не знаю. может кто работал. подскажите.

в инете инфа есть http://www.google.com/url?sa=t&source=...EOpfuGqyoIFeM8A
там и распиновка и временные диаграмы, если и это не поможет - тогда нужно начинать с другого.
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jan 28 2009, 09:35
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Цитата(kovz @ Jan 28 2009, 12:12) *
в инете инфа есть http://www.google.com/url?sa=t&source=...EOpfuGqyoIFeM8A
там и распиновка и временные диаграмы, если и это не поможет - тогда нужно начинать с другого.


Я читал этот документ - он очень бедный. Меня интересует как програмно с ним работать. Может примерчик есть?
Go to the top of the page
 
+Quote Post
kovz
сообщение Jan 28 2009, 09:41
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 25-07-05
Пользователь №: 7 079



Цитата(Anatrulij @ Jan 28 2009, 11:35) *
Я читал этот документ - он очень бедный. Меня интересует как програмно с ним работать. Может примерчик есть?

нет примерчика нет, но в чём проблема не пойму cranky.gif
Или вы спрашиваете как вывести картинку на данный дисплей?
Тогда курить как работает LCD коноллер в 2478. В двух словах пишете образ картинки в RAM и потом говорите контроллеру(LCD) где вы его записали, а он сам это всё отправит на экран

Сообщение отредактировал kovz - Jan 28 2009, 09:44
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jan 28 2009, 09:58
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Цитата(kovz @ Jan 28 2009, 12:41) *
нет примерчика нет, но в чём проблема не пойму cranky.gif
Или вы спрашиваете как вывести картинку на данный дисплей?
Тогда курить как работает LCD коноллер в 2478. В двух словах пишете образ картинки в RAM и потом говорите контроллеру(LCD) где вы его записали, а он сам это всё отправит на экран


Да, мне надо вывести что-то на экран. Если бы еще знать какой контроллер стоит в этом LCD(в документации ничего не сказано)
Ладненько, буду разбираться.
спасибки за ответ.
З.Ы. Если что нароете - обязательно скиньте laughing.gif
Go to the top of the page
 
+Quote Post
kovz
сообщение Jan 28 2009, 10:36
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 25-07-05
Пользователь №: 7 079



Цитата(Anatrulij @ Jan 28 2009, 11:58) *
Да, мне надо вывести что-то на экран. Если бы еще знать какой контроллер стоит в этом LCD(в документации ничего не сказано)
Ладненько, буду разбираться.
спасибки за ответ.
З.Ы. Если что нароете - обязательно скиньте laughing.gif

да в этом случае всёравно какой в LCD контроллер.
Я чуть позже объясню что к чему, сейчас немного занят.

Сообщение отредактировал kovz - Jan 28 2009, 10:39
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jan 28 2009, 11:16
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Цитата(kovz @ Jan 28 2009, 13:36) *
да в этом случае всёравно какой в LCD контроллер.
Я чуть позже объясню что к чему, сейчас немного занят.



Буду ждать
Go to the top of the page
 
+Quote Post
kovz
сообщение Jan 29 2009, 09:44
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 25-07-05
Пользователь №: 7 079



Цитата(Anatrulij @ Jan 28 2009, 13:16) *
Буду ждать

Давайте с начала. Я не знаю как у вас подключён экранчик, но правильно вот так :

LPC2478 G057QN01 назначение
LCDPWR | VDD(28,29)/NC | можно управлять транзистором для вкл/выкл экранчика
LCDDCLK | CLK(2) | тактование пикселей
LCDENA/LCDM | DE(27) | сигнал валидности данных
LCDFP | NC |
LCDLE | NC |
LCDLP | NC |
LCDVD[1:0] | NC |
LCDVD[2] | RED[0](6) | бит интенсивности общий для всех цветов бует одинаков
LCDVD[3:7] | RED[1:5](7-11) | данные красного
LCDVD[8:9] | NC |
LCDVD[10] | GREEN[0](13) | бит интенсивности общий для всех цветов бует одинаков
LCDVD[11:15] | GREEN[1:5](14-18) | данные зелёного
LCDVD[16:17] | NC |
LCDVD[18] | BLUE[0](20) | бит интенсивности общий для всех цветов бует одинаков
LCDVD[19:23] | BLUE[1:4](21-25) | данные синего
LCDCLKIN | NC | можно использовать для внешнего тактования контроллера LCD в LPC2478



далее смотрим на табличку и временные диаграммы на странице 14 документа, ссылка на который выше.
мы видим что частота тактования пикселей должна лежать в пределах 6,2 - 12,1 Мгц, рекомендуют 6,4 Мгц это значение получаем путём настройки делителя в регистрах LCD_CFG и LCD_POL, там же выбираем источник тактования, и полярности сигналов.
Далее ключевой момент, у нас экранчик отображает 320 точек на линию, но после этих 320 точек ему нужно ещё минимум 86 максимум 240 тактов, перед тем как можно будет подавать следующие 320пикселей следующей линии.
Эти настройки задаются в регистре LCD_TIMH, но контроллер LCD в LPC2478 имеет одну особенность, в нём можно настроить не только сколько "холостых"(назавём их так) пикселей нужноподать после отображаеммых пикселей, а и до них(мин значение 1).
Так как нам рекомендуют подать 88 таких холостых тактов, делаем хитрость делим их количество на 2 и подаём 44 до и 44 после.
Значение LCD_TIMH получится:
31:24 HBP = 0x2B (44-1) количество холостых пикселей до данных
23:16 HFP = 0x2B (44-1) количество холостых пикселей после данных
15:8 HSW = 0x56(88) количество пикселей горизонтальной синхронизации
7:2 PPL = 0x140(320) количество пикселей данных
1:0 reserved
тоже самое нужно проделать с регистром LCD_TIMV
только вместо 88 холостых клоков пикселей, необходимо от 14 до 120 холостых линий, рекомендуют 23. значения в этом регистре уже не в пикселях а в линиях!
остальные регистры не вижу смысла описывать, там всё понятно из документации.
Есть только одна особенность регистр LCD_UPBASE должен быть инициализирован до включения LCD контроллера в LPC2478!
Он содержит адрес первой ячейки памяти, где хранится образ изображения, который вы хотите вывести на экран!

Если будут ещё вопросы, задавайте.
P.S. Исходников нет, и думаю гораздо важнее понимание как оно работает, нежели готовые чужие сырцы.
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jan 29 2009, 11:53
Сообщение #13


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Цитата(kovz @ Jan 29 2009, 12:44) *
Если будут ещё вопросы, задавайте.


ОГОООООО!!! я даже и не надеялся на такой ответ. Большое спасибо за такое "разжовывание" постараюсь теперь это все проглотить.

Что бы все понятно было - я буду делать по-этапно. Сначала инициализирую дисплей, а потом попробыю хоть точечьку вывести(хотя я пока не знаю как).

ещё раз БОЛЬШОЕ СПАСИБО!!!
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jan 29 2009, 13:42
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Цитата(kovz @ Jan 29 2009, 12:44) *
Если будут ещё вопросы, задавайте.
P.S. Исходников нет, и думаю гораздо важнее понимание как оно работает, нежели готовые чужие сырцы.


Ну вот, я сделал инициализацию LCD:

#include "LPC23xx.h" /* LPC23xx definitions */
#include "type.h"


#define BUFFER_ADDR 0xA0000000
unsigned short * Ptr;

void IniLCD()
{
DWORD i;

PCONP |= (1<<20);
PINSEL11 = ((5<<1));

PINSEL4 &= ~(3<<4);
PINSEL4 &= ~(3<<6);
PINSEL4 &= ~(3<<8);
PINSEL4 &= ~(3<<10);
PINSEL4 |= ((3<<4) | (3<<6) | (3<<8) | (3<<10));

PINSEL3 &= ~(3<<8);
PINSEL3 &= ~(3<<10);
PINSEL3 &= ~(3<<12);
PINSEL3 &= ~(3<<14);
PINSEL3 &= ~(3<<16);
PINSEL3 &= ~(3<<18);
PINSEL3 &= ~(3<<20);
PINSEL3 &= ~(3<<22);
PINSEL3 &= ~(3<<24);
PINSEL3 &= ~(3<<26);
PINSEL3 |= ( (1<<8) | (1<<10) | (1<<12) | (1<<14) | (1<<16) | (1<<18) | (1<<20) | (1<<22) | (1<<24) | (1<<26) );

PINSEL4 &= ~(3<<12);
PINSEL4 &= ~(3<<14);
PINSEL4 &= ~(3<<16);
PINSEL4 &= ~(3<<18);
PINSEL4 &= ~(3<<24);
PINSEL4 &= ~(3<<26);
PINSEL4 |= ((3<<12) | (3<<14) | (3<<16) | (3<<18) | (1<<24) | (1<<26));

LCD_CFG = 1;
LCD_TIMH = ( (0x2B<<24) | (0x2B<<16) | (0x56<<8) | (0x140<<2));
LCD_TIMV = ( (12<<24) | (12<<16) | (24<<10) | (239<<0) );
LCD_POL = ( (1<<26) | (((320/1)-1)<<16) | (1<<12) | (0<<5));

LCD_CTRL = ((1<<5) | (6<<1));
LCD_CTRL |= (1<<8);

LCD_UPBASE = BUFFER_ADDR;
LCD_LPBASE = BUFFER_ADDR;
for(i=0;i<50000;i++);

LCD_CTRL |= 1;
for(i=0;i<50000;i++);
LCD_CTRL |= 1<<11;
}

int main()
{
IniLCD();
???????
}


что делать дальше? как вывести точьку, или что-нибудь еще?

СПАСИБО ЗА ОТВЕТЫ!!!
Go to the top of the page
 
+Quote Post
kovz
сообщение Feb 3 2009, 08:03
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 25-07-05
Пользователь №: 7 079



Извини было много работы, некогда было отписаться.
Есть несколько вопросов:
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];

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

Сообщение отредактировал kovz - Feb 3 2009, 08:04
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 12:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01519 секунд с 7
ELECTRONIX ©2004-2016