spectral1989 0 18 февраля, 2013 Опубликовано 18 февраля, 2013 · Жалоба Здравствуйте! Завожу дисплей по 16-бит шине FSMC. инициализация проходит нормально, дисплей запускается, но отображение цветов странно работает. Происходит следующая ситуация: в режиме 565 1) отправляю команду записи в буфер 2) заливаю экран цветом 0b11111100000, экран должен стать зеленым(с красным такая же проблема) 3) все пиксели на экране черные Когда заливаю экран цветом 0b11111 - все ок, заливается синим. в режиме 16 бит цвет 1) отправляю команду записи в буфер 2) заливаю экран зеленым цветом WriteData(0x00FF); WriteCommand(0x3c); WriteData(0x0000); WriteCommand(0x3c); WriteData(0xFF00); WriteCommand(0x3c); 3) пиксели заполняются зеленым через один. один зеленый, один черный. получается такая последовательность ...ЧЗЧЗЧЗЧЗ... Если поменять в инициализации на 8 битный режим работы дисплея и переделать отправку цвета пакетами по 8 байт - все корректно работает. Почему не заводится 16 битный режим? Есть какая-то тонкость? Я неверно настроил FSMC? Код инициализации FSMC на всякий случай привожу: NorSramBankInit(FSMC_Bank1_NORSRAM1); void NorSramBankInit(uint32_t FSMC_Bank1_SRAMx) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef p; /* Enable FSMC clock */ RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE); /*-- FSMC Configuration ------------------------------------------------------*/ p.FSMC_AddressSetupTime = 10; p.FSMC_AddressHoldTime = 1; p.FSMC_DataSetupTime = 15;//4; p.FSMC_BusTurnAroundDuration = 0;//1; p.FSMC_CLKDivision = 0; p.FSMC_DataLatency = 0; p.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_SRAMx;//FSMC_Bank1_NORSRAM2; FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /*!< Enable FSMC Bank1_SRAM2 Bank */ FSMC_NORSRAMCmd(FSMC_Bank1_SRAMx, ENABLE); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 марта, 2013 Опубликовано 28 марта, 2013 (изменено) · Жалоба Помогите разобраться с проблемой. stm32f103zet+rfc571A+fsmc.долгими мучениями удалось настроить fsmc для работы с экраном: p.FSMC_AddressSetupTime = 10; p.FSMC_AddressHoldTime = 20; p.FSMC_DataSetupTime = 60; p.FSMC_BusTurnAroundDuration =0; p.FSMC_CLKDivision = 0; p.FSMC_DataLatency = 0; p.FSMC_AccessMode = FSMC_AccessMode_A; именно с такими настройками fsmc удается читать записанные при инициализации дисплея регистры и данные. Но изображение на экран не выводится, вместо заливки экрана заданным цветом на экране отображаются разноцветные полосы. не могу понять, что не так. Если регистры тфт и данные, записанные в него считываются верно, значит fsmc настроен правильно?Следовательно скорее всего ошибка в инициализации тфт? Код инициализации взят из апноута для экранов winstar(5.7") с контроллером ssd1963, но у меня экран raystar rfc571A. Подскажите, где искать ошибку. И еще, у моего экрана есть линии scan direction UP и LR, не пойму как ими управлять, в даташите на экран о них ни слова. Код инициализации тфт: RESETCLR;//RS=0 DelayUS(1); RESETSET;//RS=1 DelayUS(1); LCD_WriteCommand(CMD_SOFT_RESET); LCD_WriteCommand(CMD_SOFT_RESET); LCD_WriteCommand(CMD_SOFT_RESET); LCD_WriteCmd(CMD_PLL_START,0x01);//START PLL LCD_WriteCmd(CMD_PLL_START,0x03);//LOCK PLL LCD_WriteCommand(CMD_SET_PANEL_MODE);//SET LCD MODE SET TFT 18Bits MODE LCD_WriteData(0x0c);//c //SET TFT MODE & hsync+Vsync+DEN MODE LCD_WriteData(0x00); //SET TFT MODE & hsync+Vsync+DEN MODE LCD_WriteData(0x01); //SET horizontal size=320-1 HightByte LCD_WriteData(0x3f); //SET horizontal size=320-1 LowByte LCD_WriteData(0x00); //SET vertical size=240-1 HightByte LCD_WriteData(0xef); //SET vertical size=240-1 LowByte LCD_WriteData(0x00); //SET even/odd line RGB seq.=RGB LCD_WriteCmd(CMD_SET_DATA_INTERFACE,0x00); //SET pixel data I/F format=8bit LCD_WriteCmd(CMD_SET_PIXEL_FORMAT,0x60); // SET R G B format = 6 6 6 LCD_WriteCommand(CMD_SET_PLL_MN); //SET PLL freq=113.33MHz; LCD_WriteData(0x22); LCD_WriteData(0x03); LCD_WriteData(0x04); LCD_WriteCommand(CMD_SET_PCLK); //SET PCLK freq=9MHz; pixel clock frequency LCD_WriteData(0x00); LCD_WriteData(0xE7); LCD_WriteData(0x4f); LCD_WriteCommand(CMD_SET_HOR_PERIOD); //SET HBP LCD_WriteData(0x01); //0x01 //SET HSYNC Total = 440 LCD_WriteData(0xb8); LCD_WriteData(0x00); //SET HBP = 68 LCD_WriteData(0x44); LCD_WriteData(0x0f); //0x0f//SET VBP 16 = 15 + 1 LCD_WriteData(0x00); //SET Hsync pulse start position LCD_WriteData(0x00); LCD_WriteData(0x00); //SET Hsync pulse subpixel start position LCD_WriteCommand(CMD_SET_VER_PERIOD); //SET VBP LCD_WriteData(0x01); //SET Vsync total 265 = 264 + 1 LCD_WriteData(0x08); LCD_WriteData(0x00); //SET VBP = 19 LCD_WriteData(0x12);// LCD_WriteData(0x07); //SET Vsync pulse 8 = 7 + 1 LCD_WriteData(0x00); //SET Vsync pulse start position LCD_WriteData(0x00); LCD_WriteCommand(CMD_SET_COLUMN);//SET column address LCD_WriteData(0x00); //SET start column address=0 LCD_WriteData(0x00); LCD_WriteData(0x01); //SET end column address=320 LCD_WriteData(0x3f); LCD_WriteCommand(CMD_SET_PAGE);//SET page address LCD_WriteData(0x00); //SET start page address=0 LCD_WriteData(0x00); LCD_WriteData(0x00); //SET end page address=240 LCD_WriteData(0xef); LCD_WriteCommand(CMD_ENT_NORMAL_MODE); LCD_WriteCommand(CMD_ON_DISPLAY); //SET display on Изменено 28 марта, 2013 пользователем batisto4ka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 марта, 2013 Опубликовано 28 марта, 2013 · Жалоба Линии UP и LR управляют направлением вывода изображения: верх-низ меняются местами, лево-право. В документах должно быть. Если нет, найдите любой другой, например, Sharp, Tianma, там точно есть. Вертикальные полосы толщиной в пискель у меня были, когда плохо вставлен был ленточный кабель в разъем. С ними вообще проблема, особенно, у меня - не нашли на 33 контакта, надрезали 40-контактный. И потом тыкаешься с ними... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 марта, 2013 Опубликовано 28 марта, 2013 (изменено) · Жалоба да вроде нормально вставлен. и еще замечаю особенность. сразу после включения жки на экране появляются вертиальные яркие разноцветные линии толщиной в пиксель. а через несколько секунд они плавно теряют яркость и становятся менее яркими, и что бы не выводилось на экран картинка не меняется Изменено 28 марта, 2013 пользователем batisto4ka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 марта, 2013 Опубликовано 28 марта, 2013 · Жалоба да вроде нормально вставлен. и еще замечаю особенность. сразу после включения жки на экране появляются вертиальные яркие разноцветные линии толщиной в пиксель. а через несколько секунд они плавно теряют яркость и становятся менее яркими, и что бы не выводилось на экран картинка не меняется Вот-вот, именно так и у меня было. Попробуйте раз 8 вставить, с обоих концов. :rolleyes: Посмотрите, к какому краю разъема прижать кабель. И еще на нем следы от контактов остаются, можно посмотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 марта, 2013 Опубликовано 28 марта, 2013 · Жалоба но вот еще необьяснимая странность: одинаковая ситуация и при включении подсветки до вывода цвета на экран и то же, если подсветка включается вначале, а потом включается жки и выводится цвет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 марта, 2013 Опубликовано 28 марта, 2013 · Жалоба Посмотрел по своим заметкам, в дополнение к кабелю: Контроллер ЖКИ не работал, оттого, что не в том регистре была задана стартовая позиция синхронизации. Для работы с ЖКИ Tianma сигнал DRDY оторвал от контроллера ЖКИ, и повесил на +3.3VD. Так нужно согласно datasheet (SYNC mode) одинаковая ситуация и при включении подсветки до вывода цвета на экран и то же, если подсветка включается вначале, а потом включается жки и выводится цвет "Действия и поступки - это одно и то же!" Подсветке все равно, когда включаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 марта, 2013 Опубликовано 28 марта, 2013 · Жалоба подсветке то может все равно, но если отладчиком пройти инициализацию и залить экран цветом а потом включить подсветку результат тот же. значит наверное подсветка как то влияет а изображение Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 марта, 2013 Опубликовано 28 марта, 2013 · Жалоба Расскажите подробнее, ничего не понятно. Без подсветки вообще ничего не будет видно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 марта, 2013 Опубликовано 28 марта, 2013 (изменено) · Жалоба такс, таки вроде проблема была в шлейфе, пару раз подергав получилось добиться вывода на экран заливки. но теперь мучаюсь с настройкой для корректного отображения изоображения. во-первых у меня быстро мерцает изображение, а во-вторых получается, что у меня ширина пикселя как бы в 2 раза уже. вот если вывести полоску шириной в 5 пикселей зеленого цвета, то невооруженным глазом видно, что идет следующая последовательность зеленый-черный, зеленый-черный, зеленый-черный,зеленый-черный, зеленый-черный.то есть выведенно 5 пикселей с промежутками. как бы так настроить, чтобы была корректная картинка и не мерцала? дисплей rfc57a1 Изменено 28 марта, 2013 пользователем batisto4ka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 марта, 2013 Опубликовано 28 марта, 2013 · Жалоба Смотрите, какого типа данные посылаете. uint16_t? Я именно так и делаю. Даже не так. Готовлю картинку в буфере, в ОЗУ. А потом оттуда перебрасываю в виде uint32_t, по 4 пиксела за команду. Можно и ПДП (DMA) использовать. Еще я проверял, что записываю в контроллер ЖКИ. Читал обратно, сравнивал. Зеленый-черный, зеленый-черный... и все квадратные? :) Или просто из rgbrgb горят только G, как и положено: rGbrGb. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 29 марта, 2013 Опубликовано 29 марта, 2013 · Жалоба Эти полосы видно и при выключеном экране. пришли к выводу, что это таое расстояние между пикселями и сами пиксели прямоугольные этом индикаторе Но кто знает, подскажите, как настроить частоты и горизонтальный и вертикальный период? откуда берутся эти значения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 29 марта, 2013 Опубликовано 29 марта, 2013 · Жалоба сами пиксели прямоугольные этом индикаторе Но кто знает, подскажите, как настроить частоты и горизонтальный и вертикальный период? откуда берутся эти значения? Три субпиксела, R G B, каждый прямоугольный, образуют один квадратный пиксел. :) И таких квадратных 320 x 240. При желании можно использовать и субпиксельное сглаживание, шрифта, например. У контроллера S1D13706 есть утилита для настройки регистров. Попробуйте. Все эти контроллеры - близнецы-братья. 13706cfg.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vinni64 0 14 ноября, 2014 Опубликовано 14 ноября, 2014 · Жалоба Вопрос к топикстартеру. Проблема решена? Я столкнулся с тем же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться