Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

STM32 и TFT ориентация
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=15383
Страница 1 от 1

Автор:  StiV [ Сря Юли 19, 2017 11:45 pm ]
Заглавие:  STM32 и TFT ориентация

Някой който се е борил с STM32 и TFT LCD случайно да знае как може да се завърти изображението на дисплея. Всичко се изобразява само вертикално. Никъде в никакви документации, библиотеки или хелпове не открих да се споменава нещо подобно.
STM32F103VET6 и диплея е 2,4" / ILI9341 вързан по SPI. Всичко дотук работи без грешка, (ползвам Keil), но не предполагах, че тази ориентация ще се окаже "подводен камък". Два дни не мога да открия какво ми убягва :(
Това е инициализацията:
Код:
void LCD_Init(void)
{
   LCD_REST=0;      
   delay_ms(50); // delay 20 ms
        LCD_REST=1;      
   delay_ms(50); // delay 20 ms

   SPILCD_RST_RESET ;   //LCD_RST=0   
   delay_ms(20); // delay 20 ms
        SPILCD_RST_SET ;   //LCD_RST=1      
   delay_ms(20);

   
   lcddev.width=320;
   lcddev.height=240;
   lcddev.wramcmd=0X2C;
   lcddev.setxcmd=0X2A;
   lcddev.setycmd=0X2B;    

   LCD_WR_REG(0xCF); 
   LCD_WR_DATA8(0x00);
   LCD_WR_DATA8(0xD9);
   LCD_WR_DATA8(0X30);
   
   LCD_WR_REG(0xED); 
   LCD_WR_DATA8(0x64);
   LCD_WR_DATA8(0x03);
   LCD_WR_DATA8(0X12);
   LCD_WR_DATA8(0X81);
   
   LCD_WR_REG(0xE8); 
   LCD_WR_DATA8(0x85);
   LCD_WR_DATA8(0x10);
   LCD_WR_DATA8(0x78);
   
   LCD_WR_REG(0xCB); 
   LCD_WR_DATA8(0x39);
   LCD_WR_DATA8(0x2C);
   LCD_WR_DATA8(0x00);
   LCD_WR_DATA8(0x34);
   LCD_WR_DATA8(0x02);
   
   LCD_WR_REG(0xF7); 
   LCD_WR_DATA8(0x20);
   
   LCD_WR_REG(0xEA); 
   LCD_WR_DATA8(0x00);
   LCD_WR_DATA8(0x00);
   
   LCD_WR_REG(0xC0);    //Power control
   LCD_WR_DATA8(0x21);   //VRH[5:0]
   
   LCD_WR_REG(0xC1);    //Power control
   LCD_WR_DATA8(0x12);   //SAP[2:0];BT[3:0]
   
   LCD_WR_REG(0xC5);    //VCM control
   LCD_WR_DATA8(0x32);
   LCD_WR_DATA8(0x3C);
   
   LCD_WR_REG(0xC7);    //VCM control2
   LCD_WR_DATA8(0XC1);
   
   LCD_WR_REG(0x36);    // Memory Access Control
   LCD_WR_DATA8(0x08);
   
   LCD_WR_REG(0x3A);   
   LCD_WR_DATA8(0x55);
   
   LCD_WR_REG(0xB1);   
   LCD_WR_DATA8(0x00);   
   LCD_WR_DATA8(0x18);
   
   LCD_WR_REG(0xB6);    // Display Function Control
   LCD_WR_DATA8(0x0A);
   LCD_WR_DATA8(0xA2);
   
   
   
   LCD_WR_REG(0xF2);    // 3Gamma Function Disable
   LCD_WR_DATA8(0x00);
   
   LCD_WR_REG(0x26);    //Gamma curve selected
   LCD_WR_DATA8(0x01);
   
   LCD_WR_REG(0xE0);    //Set Gamma
   LCD_WR_DATA8(0x0F);
   LCD_WR_DATA8(0x20);
   LCD_WR_DATA8(0x1E);
   LCD_WR_DATA8(0x09);
   LCD_WR_DATA8(0x12);
   LCD_WR_DATA8(0x0B);
   LCD_WR_DATA8(0x50);
   LCD_WR_DATA8(0XBA);
   LCD_WR_DATA8(0x44);
   LCD_WR_DATA8(0x09);
   LCD_WR_DATA8(0x14);
   LCD_WR_DATA8(0x05);
   LCD_WR_DATA8(0x23);
   LCD_WR_DATA8(0x21);
   LCD_WR_DATA8(0x00);
   
   LCD_WR_REG(0XE1);    //Set Gamma
   LCD_WR_DATA8(0x00);
   LCD_WR_DATA8(0x19);
   LCD_WR_DATA8(0x19);
   LCD_WR_DATA8(0x00);
   LCD_WR_DATA8(0x12);
   LCD_WR_DATA8(0x07);
   LCD_WR_DATA8(0x2D);
   LCD_WR_DATA8(0x28);
   LCD_WR_DATA8(0x3F);
   LCD_WR_DATA8(0x02);
   LCD_WR_DATA8(0x0A);
   LCD_WR_DATA8(0x08);
   LCD_WR_DATA8(0x25);
   LCD_WR_DATA8(0x2D);
   LCD_WR_DATA8(0x0F);
   
   LCD_WR_REG(0x11);    //Exit Sleep
   delay_ms(120);
   LCD_WR_REG(0x29);    //Display on

   LCD_Clear(WHITE);
   

Автор:  StiV [ Чет Юли 20, 2017 11:47 am ]
Заглавие:  Re: STM32 и TFT ориентация

Оправихме проблема. Оказа се в инициализацията:
Код:
LCD_WR_REG(0x36);    // Memory Access Control
LCD_WR_DATA8(0x08);

=====================================
Код:
LCD_WR_DATA8(0x08);   //ROTATE_0:
LCD_WR_DATA8(0x28);   //ROTATE_90:
LCD_WR_DATA8(0x88);   //ROTATE_180:
LCD_WR_DATA8(0xЕ8);   //ROTATE_270:

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/