murmur 0 26 ноября, 2012 Опубликовано 26 ноября, 2012 (изменено) · Жалоба ДРузья, есть у меня китайская платка с STM32F103 и дисплеем ili9320 Есть примеры вывода картинок из флеша контроллера. Вот функция: void LCD_WriteBMP(uint8_t Xpos, uint16_t Ypos, uint8_t Height, uint16_t Width, uint16_t *bitmap) { uint32_t index; uint32_t size = Height * Width; uint16_t *bitmap_ptr = (uint16_t *)bitmap; LCD_SetDisplayWindow(Xpos, Ypos, Width-1, Height-1); //LCD_WriteReg(0x03, 0x1038); //Из№ыРиТЄєбПтПФКѕНјЖ¬Ј¬Ѕ«ґЛИҐµфЖБ±О Ј¬Н¬К±Ѕ«WidthєНHightµч»»Т»ПВѕНїЙТФ LCD_WriteRAM_Prepare(); for(index = 0; index < size; index++) { Write_Dat(*bitmap_ptr++); } //»Цёґґ°МеґуРЎ LCD_WriteReg(R80, 0x0000); //Л®ЖЅ·ЅПтGRAMЖрКјµШЦ· LCD_WriteReg(R81, 0x00EF); //Л®ЖЅ·ЅПтGRAMЅбКшµШЦ· LCD_WriteReg(R82, 0x0000); //ґ№Ц±·ЅПтGRAMЖрКјµШЦ· LCD_WriteReg(R83, 0x013F); //ґ№Ц±·ЅПтGRAMЅбКшµШЦ· } Однако, когда я ввожу в качестве картинки массив вида 0xF800, 0xF800, 0xF800, 0xF800, (красные точки), вместо этого диспле рисует одну красную, 2 черных, далее снова одну красную. В чем может быть дело? Ну и вот инициализация: void LCD_Init(void) { static uint16_t DeviceCode; LCD_Configuration(); LCD_WriteReg(0x0000,0x0001); LCD_Delay(5); // LCD_Delay 50 ms DeviceCode = LCD_ReadReg(0x0000); printf(" ID=0x%x\n",DeviceCode); if(DeviceCode==0x9325||DeviceCode==0x9328)//ILI9325 { LCD_WriteReg(0x00e5,0x78F0); // LCD_WriteReg(0x0000,0x0001); LCD_WriteReg(0x0001,0x0100); LCD_WriteReg(0x0002,0x0700); LCD_WriteReg(0x0003,0x1030); LCD_WriteReg(0x0004,0x0000); LCD_WriteReg(0x0008,0x0202); LCD_WriteReg(0x0009,0x0000); LCD_WriteReg(0x000a,0x0000); LCD_WriteReg(0x000c,0x0001); LCD_WriteReg(0x000d,0x0000); LCD_WriteReg(0x000f,0x0000); //Power On sequence // LCD_WriteReg(0x0010,0x0000); LCD_WriteReg(0x0011,0x0007); LCD_WriteReg(0x0012,0x0000); LCD_WriteReg(0x0013,0x0000); LCD_WriteReg(0x0007,0x0001); LCD_Delay(5); LCD_WriteReg(0x0010,0x1690); LCD_WriteReg(0x0011,0x0227); LCD_Delay(5); LCD_WriteReg(0x0012,0x009d); LCD_Delay(5); LCD_WriteReg(0x0013,0x1900); LCD_WriteReg(0x0029,0x0025); LCD_WriteReg(0x002b,0x000d); LCD_Delay(5); LCD_WriteReg(0x0020,0x0000); LCD_WriteReg(0x0021,0x0000); LCD_Delay(5); //Щ¤ВнРЈХэ LCD_WriteReg(0x0030,0x0007); LCD_WriteReg(0x0031,0x0303); LCD_WriteReg(0x0032,0x0003); LCD_WriteReg(0x0035,0x0206); LCD_WriteReg(0x0036,0x0008); LCD_WriteReg(0x0037,0x0406); LCD_WriteReg(0x0038,0x0304); LCD_WriteReg(0x0039,0x0007); LCD_WriteReg(0x003c,0x0602); LCD_WriteReg(0x003d,0x0008); LCD_Delay(5); LCD_WriteReg(0x0050,0x0000); LCD_WriteReg(0x0051,0x00ef); LCD_WriteReg(0x0052,0x0000); LCD_WriteReg(0x0053,0x013f); LCD_WriteReg(0x0060,0xa700); LCD_WriteReg(0x0061,0x0001); LCD_WriteReg(0x006a,0x0000); LCD_WriteReg(0x0080,0x0000); LCD_WriteReg(0x0081,0x0000); LCD_WriteReg(0x0082,0x0000); LCD_WriteReg(0x0083,0x0000); LCD_WriteReg(0x0084,0x0000); LCD_WriteReg(0x0085,0x0000); LCD_WriteReg(0x0090,0x0010); LCD_WriteReg(0x0092,0x0600); LCD_WriteReg(0x0007,0x0133); } else if(DeviceCode==0x9320||DeviceCode==0x9300) { LCD_WriteReg(0x00,0x0000); LCD_WriteReg(0x01,0x0100); //Driver Output Contral. LCD_WriteReg(0x02,0x0700); //LCD Driver Waveform Contral. LCD_WriteReg(0x03,0x1030);//Entry Mode Set. //LCD_WriteReg(0x03,0x1018); //Entry Mode Set. LCD_WriteReg(0x04,0x0000); //Scalling Contral. LCD_WriteReg(0x08,0x0202); //Display Contral 2.(0x0207) LCD_WriteReg(0x09,0x0000); //Display Contral 3.(0x0000) LCD_WriteReg(0x0a,0x0000); //Frame Cycle Contal.(0x0000) LCD_WriteReg(0x0c,(1<<0)); //Extern Display Interface Contral 1.(0x0000) LCD_WriteReg(0x0d,0x0000); //Frame Maker Position. LCD_WriteReg(0x0f,0x0000); //Extern Display Interface Contral 2. LCD_Delay(10); LCD_WriteReg(0x07,0x0101); //Display Contral. LCD_Delay(10); LCD_WriteReg(0x10,(1<<12)|(0<<8)|(1<<7)|(1<<6)|(0<<4)); //Power Control 1.(0x16b0) LCD_WriteReg(0x11,0x0007); //Power Control 2.(0x0001) LCD_WriteReg(0x12,(1<<8)|(1<<4)|(0<<0)); //Power Control 3.(0x0138) LCD_WriteReg(0x13,0x0b00); //Power Control 4. LCD_WriteReg(0x29,0x0000); //Power Control 7. LCD_WriteReg(0x2b,(1<<14)|(1<<4)); LCD_WriteReg(0x50,0); //Set X Star //Л®ЖЅGRAMЦХЦ№О»ЦГSet X End. LCD_WriteReg(0x51,239); //Set Y Star LCD_WriteReg(0x52,0); //Set Y End.t. LCD_WriteReg(0x53,319); // LCD_WriteReg(0x60,0x2700); //Driver Output Control. LCD_WriteReg(0x61,0x0001); //Driver Output Control. LCD_WriteReg(0x6a,0x0000); //Vertical Srcoll Control. LCD_WriteReg(0x80,0x0000); //Display Position? Partial Display 1. LCD_WriteReg(0x81,0x0000); //RAM Address Start? Partial Display 1. LCD_WriteReg(0x82,0x0000); //RAM Address End-Partial Display 1. LCD_WriteReg(0x83,0x0000); //Displsy Position? Partial Display 2. LCD_WriteReg(0x84,0x0000); //RAM Address Start? Partial Display 2. LCD_WriteReg(0x85,0x0000); //RAM Address End? Partial Display 2. LCD_WriteReg(0x90,(0<<7)|(16<<0)); //Frame Cycle Contral.(0x0013) LCD_WriteReg(0x92,0x0000); //Panel Interface Contral 2.(0x0000) LCD_WriteReg(0x93,0x0001); //Panel Interface Contral 3. LCD_WriteReg(0x95,0x0110); //Frame Cycle Contral.(0x0110) LCD_WriteReg(0x97,(0<<8)); // LCD_WriteReg(0x98,0x0000); //Frame Cycle Contral. LCD_WriteReg(0x07,0x0173); //(0x0173) LCD_Delay(10); } LCD_Clear(BACK_COLOR); } Изменено 26 ноября, 2012 пользователем murmur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
011119xx 0 27 ноября, 2012 Опубликовано 27 ноября, 2012 · Жалоба Покажи как у тебя массив инициализирован. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 27 ноября, 2012 Опубликовано 27 ноября, 2012 · Жалоба все, спасибо, кодировщик от ST из STM_GUI_LIBRARY помог получить правильную картинку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться