Отлаживаю плату. Имеется 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-битного цвета.
|