BRT Community

Please login or register.

Login with username, password and session length
Advanced search  

News:

Welcome to the Bridgetek Community!

Please read our Welcome Note

Technical Support enquires
please contact the team
@ Bridgetek Support

Please refer to our website for detailed information on all our products - Bridgetek - Bridging Technology

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - harry

Pages: [1]
1
Hi,

If I understood correctly, every image needs to be assigned a bitmap handle.
According to the FT813 programmers guide section 4.6:


Quote
Bitmap handle. The initial value is 0. The valid value range is from 0 to 31.
Description
By default, bitmap handles 16 to 31 are used for built-in font and 15 is used as scratch bitmap handle by co-processor engine commands CMD_GRADIENT, CMD_BUTTON and CMD_KEYS.
Graphics context

What I understand from this is that I can at most load 15 images at the same time?

This is too low for my application because I am displaying icons and I sometimes need to display more than 15 items at the same time.

Have I understood correctly and is there a workaround for this?

P.S. Converting multiple icons into one image is not an option because the position and number of icons changes dynamically.

Best wishes
 

2
Discussion - EVE / FT813 REG_DLSWAP not working as expected
« on: May 05, 2021, 09:13:43 AM »
Hi,

I am using an FT813 chip to drive an 8 inch LCD. Every thing seems to be working fine except for REG_DLSWAP command. I am using the following code which is fairly straightforward:

Code: [Select]
reset_ft813();
ft800cmdWrite(EVE_CLKEXT,0x00);
//activate module
  ft800cmdWrite(EVE_ACTIVE, 0x00);
  do
{
ddd = ft800memRead8(REG_ID);
}while(ddd != 0x7c);
  //turn on display
  select_spi_mode(SPI_MODE_QUAD);
  delay_ms(2);
  do
{
ddd = ft800memRead8(REG_ID);
}while(ddd != 0x7c);

  do
{
ddd = ft800memRead8(REG_CPURESET);
}while(ddd != 0x00);

ft800memWrite16(REG_HCYCLE,  1266);  /* total number of clocks per line, incl front/back porch */
ft800memWrite16(REG_HOFFSET, 23); //TVB   /* start of active line */
ft800memWrite16(REG_VCYCLE,  526);  /* total number of lines per screen, including pre/post */
        ft800memWrite16(REG_VOFFSET, 46); //THB /* start of active screen */
        ft800memWrite8(REG_SWIZZLE,  0); /* FT8xx output to LCD - pin order */
        ft800memWrite8(REG_PCLK_POL, EVE_PCLKPOL); /* LCD data is clocked in on this PCLK edge */
        ft800memWrite8(REG_CSPREAD, 0); /* helps with noise, when set to 1 fewer signals are changed simultaneously, reset-default: 1 */
ft800memWrite16(REG_HSIZE,   LCD_HORIZONTAL);   /* active display height */
ft800memWrite16(REG_VSIZE,   LCD_VERTICAL);   /* active display height */


//***************************************
// Write Initial Display List & Enable Display

  ramDisplayList = RAM_DL;
  ft800memWrite32(ramDisplayList, DL_CLEAR_RGB|FT813_COLOR_GREEN);
  ramDisplayList += 4;
  ft800memWrite32(ramDisplayList, (DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG));
// Clear 00100110 -------- -------- -----CST  (C/S/T define which parameters to clear)
  ramDisplayList += 4;
  ft800memWrite32(ramDisplayList, DL_DISPLAY);

  ft800memWrite32(REG_DLSWAP, DLSWAP_FRAME);
// Nothing is being displayed yet... the pixel clock is still 0x00
  ramDisplayList = RAM_DL;
 
ft800memWrite8(REG_GPIO,0x80); //enable display

  ft800memWrite8(REG_PCLK, 2);

When code reaches this point LCD screen turns green as expected.

I then immediately try to display the FTDI logo using this code:


Code: [Select]
ft800memWrite32(RAM_DL + 0, CLEAR(1, 1, 1));           // clear screen
ft800memWrite32(RAM_DL + 4, BEGIN(BITMAPS));  // start drawing bitmaps
ft800memWrite32(RAM_DL + 8, VERTEX2II(220, 110, 31, 'F')); // ascii F in font 31
ft800memWrite32(RAM_DL + 12, VERTEX2II(244, 110, 31, 'T')); // ascii T
ft800memWrite32(RAM_DL + 16, VERTEX2II(270, 110, 31, 'D')); // ascii D
ft800memWrite32(RAM_DL + 20, VERTEX2II(299, 110, 31, 'I')); // ascii I
ft800memWrite32(RAM_DL + 24, END());
ft800memWrite32(RAM_DL + 28, COLOR_RGB(160, 22, 22)); // change colour to red
ft800memWrite32(RAM_DL + 32, POINT_SIZE(320)); // set point size to 20 pixels in radius
ft800memWrite32(RAM_DL + 36, BEGIN(POINTS)); // start drawing points
ft800memWrite32(RAM_DL + 40, VERTEX2II(192, 133, 0, 0)); // red point
ft800memWrite32(RAM_DL + 44, END());
ft800memWrite32(RAM_DL + 48, DISPLAY()); // display the image
ft800memWrite8(REG_DLSWAP, DLSWAP_FRAME);

Unfortunately nothing happens unless I change the last line of code to:
ft800memWrite8(REG_DLSWAP, DLSWAP_LINE);

What am I doing wrong?

Pages: [1]