Skip to main content
Anna Maria Nestorov
Associate
November 25, 2017
Question

Troubles in displaying images on FT801with STM32F4 board

  • November 25, 2017
  • 1 reply
  • 771 views
Posted on November 25, 2017 at 20:58

Hi all, 

I'm working on a STM32F446E connected to a FTDI FT801 LCD. I am stacked on the commands communication on the SPI between the Micro and the LCD Controller. I have to load a couple of images on the LCD but I didn't found a proper guide on the net. There are a lot of guides for what concern the LCD controller, the ones that I have read don't explain anything about the right sequence of instructions to invoke on the micro. 

Up to now I tried this:

Address_RAM_CMD = 0x908000;

SPI_Send_RAM_CMD(Address_RAM_CMD, DLSTART, 7);

     

SPI_Send_RAM_CMD(Address_RAM_CMD,CLEAR, 7);

            

SPI_Send_RAM_CMD(Address_RAM_CMD, INFLATE, 7);

            

SPI_Send_RAM_CMD(Address_RAM_CMD, 0, 7);

                              

// Destination starting address in Graphics RAM

while (filesize > 0) {

   f_read(&MyFile_R, data, sizeof(data), (UINT*) &bytesread);

   

SPI_Send_RAM_CMD(Address_RAM_CMD, data, 7);

   filesize -= 4;

}

SPI_Send_RAM_CMD(Address_RAM_CMD, BITMAP_HANDLE(0),7);

SPI_Send_RAM_CMD(Address_RAM_CMD, BITMAP_SOURCE(0),7);

SPI_Send_RAM_CMD(Address_RAM_CMD, BITMAP_LAYOUT(0x00, 946, 92) ,7);

SPI_Send_RAM_CMD(Address_RAM_CMD, BITMAP_SIZE(NEAREST,BORDER,BORDER, image_width, image_height),7);

SPI_Send_RAM_CMD(Address_RAM_CMD, BEGIN(BITMAPS), 7);  

SPI_Send_RAM_CMD(Address_RAM_CMD, VERTEX2II(4, 76, 27, 0), 7);

SPI_Send_RAM_CMD(Address_RAM_CMD, END, 7);               

SPI_Send_RAM_CMD(Address_RAM_CMD, DISPLAY, 7);

              

SPI_Send_RAM_CMD(Address_RAM_CMD, SWAP,  7);               

HAL_Delay(1000);

Where:

// This function is used to transmit data with SPI

// Address = address in the FTDI801 memory map

// Data = data to write in the FTDI801 memory map

// Size = number of bytes to write (Address + Data)

void

SPI_Send_RAM_CMD(

uint32_t

Address,

uint32_t

Data,

uint16_t

Size)

{

   

uint8_t

buffer[7];

   

buffer[0] = ((Address >> 16) & 0xFF);

   

buffer[1] = ((Address >> 8) & 0xFF);

   

buffer[2] = (Address & 0xFF);

   

buffer[3] = (Data & 0xFF);

   

buffer[4] = ((Data >> 8) & 0xFF);

   

buffer[5] = ((Data >> 16) & 0xFF);      

   

buffer[6] = ((Data >> 24) & 0xFF);

   

HAL_GPIO_WritePin

(GPIOG, GPIO_PIN_14,

GPIO_PIN_RESET

);

   

HAL_SPI_Transmit

(&spi_handle_structure, buffer, Size, 10000);

   

HAL_GPIO_WritePin

(GPIOG, GPIO_PIN_14,

GPIO_PIN_SET

);

   

Address_RAM_CMD = Address_RAM_CMD + 0x0000004;

   

SPI_Send(0x9024E8,(

uint16_t

)(Address_RAM_CMD-0x00908000),7);

   

// REG_CMD_WRITE

}

void

SPI_Send(

uint32_t

Address,

uint32_t

Data,

uint16_t

Size)

{

   

uint8_t

buffer[7];

   

buffer[0] = ((Address >> 16) & 0xFF);

   

buffer[1] = ((Address >> 8) & 0xFF);

   

buffer[2] = (Address & 0xFF);   

   

buffer[3] = (Data & 0xFF);

   

buffer[4] = ((Data >> 8) & 0xFF);

   

buffer[5] = ((Data >> 16) & 0xFF);   

   

buffer[6] = ((Data >> 24) & 0xFF);

   

HAL_GPIO_WritePin

(GPIOG, GPIO_PIN_14,

GPIO_PIN_RESET

);

   

HAL_SPI_Transmit

(&spi_handle_structure, buffer, Size, 10000);

   

HAL_GPIO_WritePin

(GPIOG, GPIO_PIN_14,

GPIO_PIN_SET

);

}

With this implementation, no image is shown on the LCD.

It seems to me that the image data are not sent to the GPU RAM.

Thanks in advance.

Cheers, 

Anna

    This topic has been closed for replies.

    1 reply

    Anna Maria Nestorov
    Associate
    December 11, 2017
    Posted on December 11, 2017 at 22:14

    The original post was too long to process during our migration. Please click on the provided URL to read the original post. https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I6pp&d=%2Fa%2F0X0000000bwS%2F3suas_fNg7.ELWODfzBW5jgTHZYPlkacqFaCcKFL2t8&asPdf=false
    john doe
    Senior III
    December 12, 2017
    Posted on December 12, 2017 at 04:25

    Are you comfortable porting arduino code to stm32?  If yes, download the sample application source from

    http://www.ftdichip.com/Products/ICs/FT801.html

    and see how they get an 8bitter to do it.