Other Parts Discussed in Thread: TIDM-TM4CFLASHSRAM
We have a new device designed with a TM4C129xnczad using the TIDM-TM4CFLASHSRAM. We are currently using a 24 BPP raster and having issues with our LCD screen updating at a good speed. I want to switch from unpacked 24 BPP to RASTER_FMT_ACTIVE_16BPP. which would allow us to move data twice as fast but it is not declared in the tivaware lcd.h header, it only exists in the documentation. Anyone know why this raster setting was removed. Also we are using a parallel SRAM / FLASH which pulls the 8 bit data out of our flash, converts it into 24 BPP pixel data then uses the SRAM as the display buffer, the communication is done over the EPI pins running at 30Mhz. I am exploring switching to a palette and 8BPP setting but haven't had any luck so far in doing that. Our lcd screen screen currently updates at a paltry 2Hz, it updates in a few different parts totaling around 500ms per screen change, it is noticeably very slow. Any advice would be helpful I am in a bit over my head and inherited an incomplete project done by outside contractors. The last hurdle is getting the screen to update at a reasonable frequency. I can post my LCD and EPI settings but likely cant post anymore than that. Any attempt to increase the pixel clock frequency results in an underflow occurring, the only thing I have seen that allows me to increase the frequency is increasing the front porch value to an erroneously high number (from 77 to 1024). Any help on what is causing this to be so slow or where I should look first to fix my problem would be greatly apprecited, even though I cannot post more code that what I am posting here. (uiSysClk/38 == 3.15 Mhz I can change this number but any higher triggers an underflow). The screen is a 640x 480 LCD.
EPIDividerSet(EPI0_BASE, 0x2); //Setting clock to a fourth of sysclk = 30MHz
EPIModeSet(EPI0_BASE, EPI_MODE_HB16);
//Setting for SRAM and Flash, EPIOS27 is SRAM means CS0, EPIOS26 is Flash means
//CS1
EPIConfigHB16Set(EPI0_BASE, (EPI_HB16_MODE_ADMUX | EPI_HB16_WRWAIT_0 | EPI_HB16_RDWAIT_0 |
EPI_HB16_CSCFG_ALE_DUAL_CS | EPI_HB16_ALE_HIGH ), 255);
EPIConfigHB16TimingSet(EPI0_BASE, 0, EPI_HB16_CAP_WIDTH_1 | EPI_HB16_WRWAIT_MINUS_ENABLE | EPI_HB16_RDWAIT_MINUS_ENABLE);
EPIConfigHB16TimingSet(EPI0_BASE, 1, EPI_HB16_CAP_WIDTH_1 | EPI_HB16_WRWAIT_MINUS_ENABLE | EPI_HB16_RDWAIT_MINUS_ENABLE);
EPIAddressMapSet(EPI0_BASE, (EPI_ADDR_PER_SIZE_16MB | EPI_ADDR_PER_BASE_A |
EPI_ADDR_RAM_SIZE_256MB | EPI_ADDR_RAM_BASE_8));
SetDMABackGroundColor(0x00000000);
//Enable LCD module
LCDModeSet(LCD0_BASE, (LCD_MODE_RASTER | LCD_MODE_AUTO_UFLOW_RESTART), ui32SysClk/38, ui32SysClk); //Maximum pixel clock for stability of all objects
LCDRasterConfigSet(LCD0_BASE,RASTER_FMT_ACTIVE_24BPP_UNPACKED | RASTER_LOAD_DATA_ONLY, 0);
LCDRasterTimingSet(LCD0_BASE, &(kyocera_Display));
LCDDMAConfigSet(LCD0_BASE, LCD_DMA_BURST_16 | LCD_DMA_FIFORDY_64_WORDS | LCD_DMA_BYTE_ORDER_0123);
LCDRasterFrameBufferSet(LCD0_BASE, 0, g_pui32DisplayBuffer, SIZE_IMAGE*4); //Assuming buffer is the entirety of the SRAM space
LCDIntEnable(LCD0_BASE, (LCD_INT_DMA_DONE | LCD_INT_SYNC_LOST |
LCD_INT_UNDERFLOW | LCD_INT_PAL_LOAD |
LCD_INT_EOF0 | LCD_INT_EOF1));