|
|
  |
LCD + stm32f4 discovery |
|
|
|
Jan 10 2017, 11:35
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-12-13
Из: St.Petersburg
Пользователь №: 79 852

|
Как можно определить тип контроллера в LCD? Когда-то давно прикупил себе такой LCD:  Model Number: TK1105# 2.4" TFT LCD Module Display + Touch Panel Screen Driver IC: SSD1289 (Note: The old Version <Come with HX8347 Controller> will be out of manufacture) Сейчас не могу запустить этот дисплей. После инициализации экран чистый, даже не мигает. Есть подозрение что контроллер не SSD1289. Но как это проверить? Нашел что: SSD1289 должен вернуть 8989h из регистра 00h, а HX8347 возвращает 47h из регистра 67h. Проверил оба регистра - возвращают не то. Запускаю на stm32f4 discovery, светодиоды выпаял, линию от USB PWR fault отключил. Подключен к FSMC 16bit. Провода по 10 см. Примеры брал от сюда: https://hubstub.ru/display/61-podklyuchenie...89-ili9341.htmlhttps://www.element14.com/community/groups/...y-hy32d-tft-lcdИ еще - можете подсказать пример инициализации HX8347?
--------------------
Скудность мысли порождает легионы единомышленников.
|
|
|
|
|
Jan 10 2017, 13:35
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-12-13
Из: St.Petersburg
Пользователь №: 79 852

|
Цитата(kumle @ Jan 10 2017, 15:36)  А зачем светодиоды выпаял и USB ? Уже неделю вожусь. Все пробовал. Цитата(uriy @ Jan 10 2017, 15:45)  В ugfx есть оба дисплея Спасибо за идею. Нашел нужный код. Теперь оказалось есть два контроллера HX8347-A и HX8347-D https://www.rockbox.org/wiki/pub/Main/Irive..._v02_090324.pdfhttp://www.displayfuture.com/Display/datas...ller/HX8347.pdfИ они отличаются. У HX8347-D id-контроллера хранится в 00h регистре, а у HX8347-A в регистре 67h. У меня оба регистра возвращают не то что нужно.. Значит проблема в другом..
--------------------
Скудность мысли порождает легионы единомышленников.
|
|
|
|
|
Jan 11 2017, 18:36
|

Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280

|
вобщем у меня возвращает id=0 ! но тем не менее все работает вот моя инициализация (весь файл прикрепить форум не дает) CODE void LCD_Init(void) { static uint16_t DeviceCode; LCD_CtrlLinesConfig(); Delay(3000); LCD_FSMCConfig(); Delay(3000); TIM_Config(); LCD_BackLight(0); LCD_Reset(); DeviceCode = LCD_ReadReg(0x0000); asm("NOP"); asm("NOP"); asm("NOP"); LCD_WriteReg(0x0000,0x0001); Delay(100); LCD_WriteReg(0x0003,0xA8A4); Delay(100); LCD_WriteReg(0x000C,0x0000); Delay(100); LCD_WriteReg(0x000D,0x080C); Delay(100); LCD_WriteReg(0x000E,0x2B00); Delay(100); LCD_WriteReg(0x001E,0x00B0); Delay(100); LCD_WriteReg(0x0001,0x2B3F); Delay(100); LCD_WriteReg(0x0002,0x0600); Delay(100); LCD_WriteReg(0x0010,0x0000); Delay(100); LCD_WriteReg(0x0011,0x6070); Delay(100); LCD_WriteReg(0x0005,0x0000); Delay(100); LCD_WriteReg(0x0006,0x0000); Delay(100); LCD_WriteReg(0x0016,0xEF1C); Delay(100); LCD_WriteReg(0x0017,0x0003); Delay(100); LCD_WriteReg(0x0007,0x0233); Delay(100); LCD_WriteReg(0x000B,0x0000); Delay(100); LCD_WriteReg(0x000F,0x0000); Delay(100); LCD_WriteReg(0x0041,0x0000); Delay(100); LCD_WriteReg(0x0042,0x0000); Delay(100); LCD_WriteReg(0x0048,0x0000); Delay(100); LCD_WriteReg(0x0049,0x013F); Delay(100); LCD_WriteReg(0x004A,0x0000); Delay(100); LCD_WriteReg(0x004B,0x0000); Delay(100); LCD_WriteReg(0x0044,0xEF00); Delay(100); LCD_WriteReg(0x0045,0x0000); Delay(100); LCD_WriteReg(0x0046,0x013F); Delay(100); LCD_WriteReg(0x0030,0x0707); Delay(100); LCD_WriteReg(0x0031,0x0204); Delay(100); LCD_WriteReg(0x0032,0x0204); Delay(100); LCD_WriteReg(0x0033,0x0502); Delay(100); LCD_WriteReg(0x0034,0x0507); Delay(100); LCD_WriteReg(0x0035,0x0204); Delay(100); LCD_WriteReg(0x0036,0x0204); Delay(100); LCD_WriteReg(0x0037,0x0502); Delay(100); LCD_WriteReg(0x003A,0x0302); Delay(100); LCD_WriteReg(0x003B,0x0302); Delay(100); LCD_WriteReg(0x0023,0x0000); Delay(100); LCD_WriteReg(0x0024,0x0000); Delay(100); LCD_WriteReg(0x0025,0x8000); Delay(100); LCD_WriteReg(0x004f,0); LCD_WriteReg(0x004e,0); Delay(100); } и у меня еще вывод RESET дисплея подтянут к +3.3V 1ком и подключен к PD12, вывод TP_IRQ к PC1 и вывод BL_CNTL подключен к пину PA8 (TIM1_CH1_PWM)
Сообщение отредактировал kumle - Jan 11 2017, 18:40
|
|
|
|
|
Jan 11 2017, 20:09
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-12-13
Из: St.Petersburg
Пользователь №: 79 852

|
Цитата(kumle @ Jan 11 2017, 21:36)  вобщем у меня возвращает id=0 ! Попробуй читать ID после первой записи в рег 00 ------- LCD_WriteReg(0x0000,0x0001); Delay(100); DeviceCode = LCD_ReadReg(0x0000); ------- У меня LCD не заработал. Пришли еще функции: LCD_CtrlLinesConfig(); LCD_FSMCConfig();
--------------------
Скудность мысли порождает легионы единомышленников.
|
|
|
|
|
Jan 12 2017, 09:59
|

Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280

|
CODE void LCD_CtrlLinesConfig(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //sasha RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_FSMC); // D2 GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_FSMC); // D3 GPIO_PinAFConfig(GPIOD, GPIO_PinSource4, GPIO_AF_FSMC); // NOE -> RD GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_FSMC); // NWE -> WR GPIO_PinAFConfig(GPIOD, GPIO_PinSource7, GPIO_AF_FSMC); // NE1 -> CS GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_FSMC); // D13 GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_FSMC); // D14 GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_FSMC); // D15 GPIO_PinAFConfig(GPIOD, GPIO_PinSource11, GPIO_AF_FSMC); // A16 -> RS GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FSMC); // D0 GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FSMC); // D1 GPIO_PinAFConfig(GPIOE, GPIO_PinSource7, GPIO_AF_FSMC); // D4 GPIO_PinAFConfig(GPIOE, GPIO_PinSource8, GPIO_AF_FSMC); // D5 GPIO_PinAFConfig(GPIOE, GPIO_PinSource9, GPIO_AF_FSMC); // D6 GPIO_PinAFConfig(GPIOE, GPIO_PinSource10, GPIO_AF_FSMC); // D7 GPIO_PinAFConfig(GPIOE, GPIO_PinSource11, GPIO_AF_FSMC); // D8 GPIO_PinAFConfig(GPIOE, GPIO_PinSource12, GPIO_AF_FSMC); // D9 GPIO_PinAFConfig(GPIOE, GPIO_PinSource13, GPIO_AF_FSMC); // D10 GPIO_PinAFConfig(GPIOE, GPIO_PinSource14, GPIO_AF_FSMC); // D11 GPIO_PinAFConfig(GPIOE, GPIO_PinSource15, GPIO_AF_FSMC); // D12
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOE, &GPIO_InitStructure); //for RESET HY32D GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); } CODE void LCD_FSMCConfig(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructure; FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime = 0; //0 FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime = 0; //0 FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 2; //3 FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration = 0; FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 1;//1 FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0; FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; 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_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_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Enable;//disable FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &FSMC_NORSRAMTimingInitStructure; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime = 0; //0 FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime = 0; //0 FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 4; //3 FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration = 0; FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 1;//1 FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0; FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &FSMC_NORSRAMTimingInitStructure; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); } Платка дома, вечером попробую изменить и считать еще раз ID А подсветка то у тебя включается ? У меня в основном модуле еще после инициализации есть строка LCD_BackLight(50); Она включает шим на половинную яркость подсветки
|
|
|
|
|
Jan 12 2017, 10:54
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-12-13
Из: St.Petersburg
Пользователь №: 79 852

|
Цитата(kumle @ Jan 12 2017, 12:59)  А подсветка то у тебя включается ?
У меня в основном модуле еще после инициализации есть строка LCD_BackLight(50); Она включает шим на половинную яркость подсветки Подсветка - это просто светодиод. Светодиодный "Hello World!" через ШИМ - это не проблема  Про определение ID контроллера я нашел интересную статью - http://elty.pl/pl/n/3Цитата Most controllers LCD displays allows you to read the Product ID (DeviceCode) is a number that specifies what type of controller is used to operate the display. Product ID's address 0x00. What this gives us? We can write a program so that it is universal - ie. Read the code of the controller display and, depending on the code accordingly initiates service.
Codes of typical controllers:
Device code Controller display 0x9320 ILI9320 0x9325 ILI9325 0x9328 ILI9328 0x9331 ILI9331 0x8999 SSD1298 0x8989 SSD1289 ITDB02-3.2S, HY32D 0x7783 ST7781 0x4531 LGDP4531 0x5408 SPFD5408B 0x1505 0x0505 R61505U 0x0046 HX8346A 0x0047 HX8347D 0x0047 HX8347A 0x4535 LGDP4535 0x9919 SSD2119 0x0052 HX8352-A ITDB02-3.2WD 0x1121 S1D19122 ITDB02-2.4E Там же есть пример с определением и инициализацией разных дисплеев. Доверия не внушает, но может кому-то поможет.
--------------------
Скудность мысли порождает легионы единомышленников.
|
|
|
|
|
Jan 12 2017, 22:09
|

Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280

|
Цитата(Utyff @ Jan 11 2017, 23:09)  Попробуй читать ID после первой записи в рег 00 попробовал, все рано нули считывает
|
|
|
|
|
Jan 13 2017, 08:20
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-12-13
Из: St.Petersburg
Пользователь №: 79 852

|
Цитата(kumle @ Jan 13 2017, 01:09)  попробовал, все рано нули считывает В документации на ssd1289 на стр. 72, я нашел "DISPLAY SETTING SEQUENCE". Тут пример естьИ эта последовательность отличается от твоей  Чудеса с этими контролерами..
--------------------
Скудность мысли порождает легионы единомышленников.
|
|
|
|
|
Jan 15 2017, 13:52
|

Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280

|
Цитата(Utyff @ Jan 13 2017, 11:20)  И эта последовательность отличается от твоей  Это не совсем моя последовательность, я покупал дисплей через ebay и продавец там прикрепил эту инициализацию, они же заинтересованы чтобы у людей все работало. Я ее просто немного изменил.
|
|
|
|
|
Jan 16 2017, 10:50
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-12-13
Из: St.Petersburg
Пользователь №: 79 852

|
китайцы много интересного пишут. Про работу с LCD нашел тут и тут
--------------------
Скудность мысли порождает легионы единомышленников.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|