День добрый. Состыковал lpc2138 и видеоконтроллер s1d13705. Поставил библиотеку от микрочипа. Всё казалось бы неплохо, но перерисовка происходит уж больно медленно. Может, кто работал и знает нюансы. Первое, что мне кажется неверным это запись данных в s1d.Режим Generic#2 как для 8-ми битных контроллеров. передаю так:
unsigned int temp=0; IOSET0 = RD; lcdSetAddr(addr); //устанавливаю адрес на линии temp = reg << 16;//подготавливаю данные для вывода IODIR0 = A1PIN | IODIR0;//ставлю линии данные на выход
IOCLR0 = A1PIN; //очищаю линии данных IOSET0 = temp & A1PIN; //вывожу
IOCLR0 = WE0;//опускаю линию WE0 сигнализируя о записи while((IOPIN0 & WAIT)==0){IOCLR0 = CLK;IOSET0 = CLK;};//жду сигнал WAIT
IOCLR0 = CLK;IOSET0 = CLK;//для чего-то надо ещё один клок иначе не запишутся данные
IODIR0 = (~A1PIN) & IODIR0; //линии данных на вход IOSET0 = WE0; //снимаю сигнал записи
Тупо управляя выводами обнаружил, что для записи в видеоконтроллер надо как минимум 3 клока-импульса. А после того, как видеоконтроллер выдал сигнал WAIT необходимо ещё выдать один импульс иначе вместо данных записываются одни единицы. Частота тактирования видеоконтроллера 12 МГц. Для экрана TFT Sharp 320x240 при QVGA режиме частота пикселей 6 МГц, поэтому использовал внутреннее деление на 2 в самом видеоконтроллере. В попытках ускорить отрисовку убрал деление на 2,но скорость выросла не сильно. Контроллер LPC работает на частоте 60 МГц. Тестировал раньше микрочиповскую библиотеку на экране от нокии так даже при передаче по SPI перерисовки не было видно, а тут параллельный интерфейс и такие тормоза. Полностью очищается картинка за 1-1,5 секунды!! Записал авишку, но почему-то она не хочет на форум выкладываться.
|