monjiemegoo
Newbie level 6
hellow guys
i have a JHD-TFT1.8-16A lcd with st7735 driver in it. i want to run emwin on this lcd using a lpc1788 board. my board has a 32mb external ram and i am sure the ram config is ok. i write the below code to run emwin. but nothing happend when i use gui_setbackcolor function.
please if some one knows whats wrong help me. i know this lcd has a ic driver (st7735) but iam not sure this is the right way to connect emwin to ic driver. what is wrong in this code?
if someone know a refrence that can help me please introduce to me.
thanks.
i have a JHD-TFT1.8-16A lcd with st7735 driver in it. i want to run emwin on this lcd using a lpc1788 board. my board has a 32mb external ram and i am sure the ram config is ok. i write the below code to run emwin. but nothing happend when i use gui_setbackcolor function.
please if some one knows whats wrong help me. i know this lcd has a ic driver (st7735) but iam not sure this is the right way to connect emwin to ic driver. what is wrong in this code?
if someone know a refrence that can help me please introduce to me.
thanks.
Code C# - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 //lcdconfig.c #include "common.h" #include "GUIDRV_Lin.h" #include "GUIDRV_FlexColor.h" /********************************************************************* * * Layer configuration (to be modified) * ********************************************************************** */ // // Physical display size // #define XSIZE_PHYS 160 #define YSIZE_PHYS 128 #define EXTERNAL_RAM_BASE_ADDRESS 0xA0000000 #define VRAM_ADDR EXTERNAL_RAM_BASE_ADDRESS // // Color conversion // #define COLOR_CONVERSION GUICC_565 // // Display driver // #define DISPLAY_DRIVER GUIDRV_FLEXCOLOR #define DISPLAY_ORIENTATION (GUI_MIRROR_Y) /********************************************************************* * * Configuration checking * ********************************************************************** */ #ifndef VRAM_ADDR #define VRAM_ADDR 0 #endif #ifndef XSIZE_PHYS #error Physical X size of display is not defined! #endif #ifndef YSIZE_PHYS #error Physical Y size of display is not defined! #endif #ifndef COLOR_CONVERSION #error Color conversion not defined! #endif #ifndef DISPLAY_DRIVER #error No display driver defined! #endif #ifndef DISPLAY_ORIENTATION #define DISPLAY_ORIENTATION 0 #endif /********************************************************************* * * Static code * ********************************************************************** */ /********************************************************************* * * _InitController * * Purpose: * Should initialize the display controller */ static void _InitController(void) { ST7735_Init(); } /********************************************************************* * * _SetVRAMAddr * * Purpose: * Should set the frame buffer base address */ static void _SetVRAMAddr(void * pVRAM) { LPC_LCD->UPBASE = (uint32_t)pVRAM & ~7UL; //LPC_LCD->LPBASE = (uint32_t)pVRAM & ~7UL; } /********************************************************************* * * _SetOrg * * Purpose: * Should set the origin of the display typically by modifying the * frame buffer base address register */ static void _SetOrg(int xPos, int yPos) { (void)xPos; // // Set start address for display data and enable LCD controller // LPC_LCD->UPBASE = VRAM_ADDR + (yPos * XSIZE_PHYS * 2); // Needs to be set, before LCDC is enabled } /********************************************************************* * * _SetLUTEntry * * Purpose: * Should set the desired LUT entry */ static void _SetLUTEntry(LCD_COLOR Color, U8 Pos) { /* TBD by customer */ } /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * LCD_X_Config * * Purpose: * Called during the initialization process in order to set up the * display driver configuration. * */ int tmp2; void LCD_X_Config(void) { GUI_DEVICE * pDevice; GUI_PORT_API PortAPI = {0}; CONFIG_FLEXCOLOR Config = {0}; // // Set display driver and color conversion for 1st layer // pDevice = GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0); // // Display driver configuration, required for Lin-driver // if (LCD_GetSwapXY()) { LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS); LCD_SetVSizeEx(0, YSIZE_PHYS, XSIZE_PHYS); } else { LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS); } LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR); PortAPI.pfWrite8_A0 = ST7735_cmd; PortAPI.pfWrite8_A1 = ST7735_write; PortAPI.pfWriteM8_A0 = ST7735_cmdM; PortAPI.pfWriteM8_A1 = ST7735_writeM; GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B8); Config.Orientation = DISPLAY_ORIENTATION; GUIDRV_FlexColor_Config(pDevice, &Config); // // Set user palette data (only required if no fixed palette is used) // #if defined(PALETTE) LCD_SetLUTEx(0, PALETTE); #endif } /********************************************************************* * * LCD_X_DisplayDriver * * Purpose: * This function is called by the display driver for several purposes. * To support the according task the routine needs to be adapted to * the display controller. Please note that the commands marked with * 'optional' are not cogently required and should only be adapted if * the display controller supports these features. * * Parameter: * LayerIndex - Index of layer to be configured * Cmd - Please refer to the details in the switch statement below * pData - Pointer to a LCD_X_DATA structure * * Return Value: * < -1 - Error * -1 - Command not handled * 0 - Ok */ int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) { int r; unsigned long Addr, BufferSize; GUI_USE_PARA(LayerIndex); GUI_USE_PARA(pData); switch (Cmd) { // // Required // case LCD_X_INITCONTROLLER: { // // Called during the initialization process in order to set up the // display controller and put it into operation. If the display // controller is not initialized by any external routine this needs // to be adapted by the customer... // _InitController(); return 0; } case LCD_X_SETVRAMADDR: { // // Required for setting the address of the video RAM for drivers // with memory mapped video RAM which is passed in the 'pVRAM' element of p // LCD_X_SETVRAMADDR_INFO * p; p = (LCD_X_SETVRAMADDR_INFO *)pData; _SetVRAMAddr(p->pVRAM); return 0; } case LCD_X_SETORG: { // // Required for setting the display origin which is passed in the 'xPos' and 'yPos' element of p // LCD_X_SETORG_INFO * p; p = (LCD_X_SETORG_INFO *)pData; _SetOrg(p->xPos, p->yPos); return 0; } case LCD_X_SETLUTENTRY: { // // Required for setting a lookup table entry which is passed in the 'Pos' and 'Color' element of p // LCD_X_SETLUTENTRY_INFO * p; p = (LCD_X_SETLUTENTRY_INFO *)pData; _SetLUTEntry(p->Color, p->Pos); return 0; } case LCD_X_ON: { // // Required if the display controller should support switching on and off // return 0; } case LCD_X_OFF: { // // Required if the display controller should support switching on and off // // ... return 0; } default: r = -1; } return r; } /*************************** End of file ****************************/
Code C# - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 //guiconfig.c /********************************************************************* * * Defines * ********************************************************************** */ // // Define the available number of bytes available for the GUI // #define EXTERNAL_RAM_BASE_ADDRESS 0xA0000000 volatile unsigned long *emwin_memory_pointer = (unsigned long *)(EXTERNAL_RAM_BASE_ADDRESS + 16 * 1024 * 1024); #define EMWIN_MEMORY_SIZE (16 * 1024 * 1024) /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * GUI_X_Config * * Purpose: * Called during the initialization process in order to set up the * available memory for the GUI. */ void GUI_X_Config(void) { // // Assign memory to emWin // GUI_ALLOC_AssignMemory(emwin_memory_pointer, EMWIN_MEMORY_SIZE); // To reduce the library size we shouldn't use fonts: // // // // Set default font // // // GUI_SetDefaultFont(&GUI_FontBTitr37); } /*************************** End of file ****************************/
Code C# - [expand] 1 2 3 4 5 6 7 8 9 10 11 //main.c int main() { GUI_Init(); GUI_SetBkColor(GUI_RED); GUI_Clear(); while(1) { } }
Last edited by a moderator: