|
|
  |
Конфликт TFT и SDRAM, Конфликт TFT в режиме 5-6-5 и SDRAM 32 бит |
|
|
|
Mar 25 2011, 09:34
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Отлаживаю плату. Имеется LPC2478 + SDRAM 32 бита (K4S561632C - 2 шт) + TFT 640x480x(R6-G6-B6) (OSD056TN53). Схема один в один со стартеркитом Olimex, разводка моя. Завелась без проблем, но столкнулся с неприятным эффектом мерцания чет/нечет. строк, особенно если смотреть под углом. Стал повышать частоту LCDDCLK - остановился на 9Мгц (LCD_CFG_bit.CLKDIV = 7), т.к. при дальнейшем увеличении частоты начинается нестабильная работа других узлов - отваливается USB и/или срывается синхронизация изображения. Да и для этой частоты пришлось настраивать AHB: AHBCFG1_bit.SHDL = 0; // Priority scheduling. AHBCFG1_bit.EP1 = 1; // CPU AHBCFG1_bit.EP2 = 5; // GPDMA AHBCFG1_bit.EP3 = 4; // AHB1 AHBCFG1_bit.EP4 = 3; // USB AHBCFG1_bit.EP5 = 2; // LCD
Решил попробовать режим 5-6-5 и тут началось самое интересное. При выводе любой информации на дисплей она случайным образом искажается. Смотрю под отладчиком - действительно записываю одно значение - считываю совсем другое. Вывожу черный текст (0x0000) на сером фоне (0xCE9A), а получаю чаще розовый с черными вкраплениями на сером с зелеными вкраплениями: 0x0000 -> 0x081A 0xCE9A -> 0xС098, 0xC680, 0x0E02 Частота LCDDCLK = 18Мгц (LCD_CFG_bit.CLKDIV = 3), кадровая 43Гц. Понижал частоту до 3 МГц - ошибок меньше, но они есть! В 8-8-8 режиме ничего подобного не было. Полноцветная картинка выведенная до включения LCD_CTRL_bit.LcdEn = 1 и LCD_CTRL_bit.LcdPwr = 1 отображается правильно без искажений и практически не мерцает (что и хотел получить). Но после включения вновь записываемые данные искажаются. Написал тест SDRAM с 32, 16 и 8-битным доступом - до включения TFT проходит полностью, после - только для 32-битного доступа, для 16 и 8-битного - ошибки. Кто-нибудь сталкивался с подобным, что я делаю не так? Исходники работы с TFT и SDRAM брал из примеров IAR EWARM 5.50, только подправил для вывода 16-битного цвета.
|
|
|
|
|
Mar 25 2011, 10:07
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(DpInRock @ Mar 25 2011, 13:03)  Плата 2 слойная. Это вопрос или ответ? Если вопрос, то плата действительно двухслойная.
|
|
|
|
|
Mar 25 2011, 10:20
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(DpInRock @ Mar 25 2011, 13:13)  Это ответ. Но 32-битный доступ работает без ошибок. Если выводить на дисплей информацию в Int32, то пишется и отображается правильно.
|
|
|
|
|
Mar 25 2011, 16:13
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Разобрался Цитата(M_Andrey @ Mar 25 2011, 12:34)  Схема один в один со стартеркитом Olimex Соврал. Для упрощения разводки поменял местами разряды шины данных и теперь эти грабли всплыли. Надо было хотя-бы при этом соблюсти привязку DQMOUT0-D0..D7, DQMOUT1-D8..D15, DQMOUT2-D16..D23, DQMOUT3-D24..D31. Теперь придется плату переразводить, а пока софтом изголяться.
|
|
|
|
|
Mar 25 2011, 17:37
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Цитата до включения TFT проходит полностью ? Рек. 4 слоя. Делал на этом проце с таким примерно экраном 4 модификации платы (требовались разные механические изменения). Как ни изголялся - все работают без сбоев. Разводил строго автоматическим разводчиком. (Кроме тех линий, которые не лень было разводить руками). Стоит ненамного дороже. В вашем случае - вы бы даже сэкономили бы. (Ибо обмен местами линий шины - это как раз проблема 2 слоев).
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Mar 25 2011, 18:03
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(DpInRock @ Mar 25 2011, 20:37)  ? До инициализации TFT. После рестарта сначала инициализация SDRAM, тест SDRAM правильный, затем идет инициализация TFT, снова тест SDRAM но уже с ошибками. Похоже что даже при 8- и 16-битном доступе EMC пытается работать с полной шиной. Но когда работает DMA LCD контроллера, EMC экономит шину и тут всплывают мои грабли.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|