Not working on PSoC 6 WiFi-BT Pioneer Kit | CE225248 – Display Interface with EmWin Graphics Library and Quad SPI FRAM as Display Buffer

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
PrMa_4715901
Level 1
Level 1
5 replies posted Welcome! First question asked

Recently I was working on a project to display multiple bitmaps on the TFT screen of CY8CKIT-062-WiFi-BT. But soon I realized that the converted images do take a lot of space on the flash memory. Hence wanted to write the images on the FRAM and then retrieve it and the application note CE225248 fits perfectly in this use-case. I tried a lot but the example is not working on the WiFi-BT kit. The TFT display is just plain blank displaying nothing and also debugging works well without any hard faults. I'm using PSoC creator 4.3

Please Help.

0 Likes
1 Solution

Hello Pratyush,

I looked at your project. You are making use of LCDController custom component that is based off the GraphicsLCDCtrl primitive. The TFT display already has the ST7789 built in controller. The PSoC6 need not take care of driving the control signals. You only need to interface with the ST7789 controller using the GraphicsLCDIntf component like it is done in the Code Example CE223726​.

The reason your current project doesn't work is because you are using the wrong component firstly and secondly the initialization code needs to be written in the _InitController(void) inside LCDConf.c file. This initialization sequence will tell the ST7789 controller what the configuration settings for the display should be.

When you call GUI_Init(), the function LCD_X_DisplayDriver is going to get called where the LCD_X_INITCONTROLLER routine is going to run. This routine has the  _InitController() function which is used to initialize the display.

Please refer to the Code Example CE223726​ and program it directly without any modifications. It should work out of the box and you should see the display working. Once you have it working, you can then modify the code to store the frame buffer in the FRAM.

Regards,
Dheeraj

View solution in original post

0 Likes
11 Replies
NiCl_3460396
Level 1
Level 1
First like given

Hi,

Checking this document PSoC® 6 WiFi-BT Pioneer Kit Guide, Document Number. 002-22677 Rev. *F on page 40 it seems that only the footprint for the F-RAM is there, chip not installed - also see page 42, item 27 that states "Footprint to connect a CY15B104QSN or any other pin-compatible F-RAM". It seems that you'll have to mount the CY15B104QSN chip yourself.

Have you added the F-RAM chip on the board?

Hope this helps...

/Nis

0 Likes

I believe the document you are refering to contains details about the previous version kit. From my knowledge, I have two kits latest version as well the previous version.  As you can see in the picture below I have marked the differences. The newer kit comes along with a mounted FRAM and I using the example on the latest kit.

Inked20200828_162148_croped_LI.jpg

0 Likes

Hi again,

Then you should be all set to go 🙂

One other thing I noticed; the CE225248 mentions that a custom TFT shield is used (obviously using a 16-bit data bus). The regular TFT shield (CY8CKIT-028-TFT) uses an 8-bit data bus.

If you are using the 16-bit custom TFT shield could you pass me info on procuring it? Using a 16-bit data bus and DMA/F-RAM for graphics paging would enhance a project I'm working on considerably.

/Nis

0 Likes

It still doesn't work . The CE225248 zip file is not available on the internet except downloading from the PSOC creator itself. They have removed it from code examples sections as well. You could only find the pdf on the cypress website.

I'm using CY8CKIT-028-TFT.

0 Likes

I dug in a bit deeper since this also is of interest to me ...

CE225248 uses a custom TFT shield where the TFT display obviously does not have an onboard controller (gleaned from the pinout description); that functionality is implemented in the PSOC 6 in CE225248.

CY8CKIT-028-TFT uses the NHD-2.4-240320CF-CTXI#-F TFT display from Newhaven Display Intl that has the built-in controller chip ST7789Vi. With respect to data and signal lines, CE225248 is not compatible with the CY8CKIT-028-TFT shield. CE225248 assumes a "generic" TFT display with no controller that is constantly refreshed by the PSOC 6. In my opinion, this the reason CE225248  does not work "out-of-the-box" with the CY8CKIT-028-TFT shield.

However, despite it's somewhat nebulous wording, CE225248 does have quite a lot of merit (IMHO) since it demonstrates that a custom TFT controller solution can be easily implemented using an SPI memory chip working with the PSOC 6 hardware.

Link to my PSOC project: https://adelbyavionics.com/products

0 Likes

Hello PrMa_4715901​,

Did you add the initialization code for the CY8CKIT-028 TFT Display in the CE225248? In the file LCDConf.c, add the initialization code for the display in the function _InitController(). For the initialization code, refer to the code example CE223726. You can find it in the LCDConf.c file in the same _InitController function.

And yes, whatever NiCl_3460396​ said is completely right. The CY8CKIT-028 TFT Display comes with a built-in controller. PSoC6 need not worry about driving the display. The control signals like vsync, hsync, de, dotclk aren't necessary. You need a parallel interface to communicate with the display controller which can be acheived using the GraphicsLCDInterface component like the code example CE223726.

But to use this in conjunction with FRAM will require creating a custom component with GraphicsLCDInterface as a base, that is similar to the SMIF_GraphicsLCDCtrl component in the CE225248. Unfortunately, we do have anything like this that I can share.

Please use Help > Documentation > Component Author Guide for more information on creating custom components.

Regards,
Dheeraj

Hello ,

I guess the main function is call LCDcontroller_Init to initialize the controller rather than _InitController(void) inside LCDConf.c file. On debugging the program is hitting a Cy_SysLib_ProcessingFault() and is due to GUI_Init() ​function .

0 Likes

If the GUI_Init() is failing, please check if you have configured everything as mentioned in the EmWin User Manual. Please attach the project so that I can debug the project and see what's going wrong.

Regards,

Dheeraj

0 Likes

I attached the project with this message for your reference.

Thank You,

Pratyush Mallick

0 Likes

Hello Pratyush,

I looked at your project. You are making use of LCDController custom component that is based off the GraphicsLCDCtrl primitive. The TFT display already has the ST7789 built in controller. The PSoC6 need not take care of driving the control signals. You only need to interface with the ST7789 controller using the GraphicsLCDIntf component like it is done in the Code Example CE223726​.

The reason your current project doesn't work is because you are using the wrong component firstly and secondly the initialization code needs to be written in the _InitController(void) inside LCDConf.c file. This initialization sequence will tell the ST7789 controller what the configuration settings for the display should be.

When you call GUI_Init(), the function LCD_X_DisplayDriver is going to get called where the LCD_X_INITCONTROLLER routine is going to run. This routine has the  _InitController() function which is used to initialize the display.

Please refer to the Code Example CE223726​ and program it directly without any modifications. It should work out of the box and you should see the display working. Once you have it working, you can then modify the code to store the frame buffer in the FRAM.

Regards,
Dheeraj

0 Likes

Hi again,

As an alternative you might consider CE223726. This should work straight out of the box with your hardware (no custom TFT shield needed). You will of course have to modify it to access the F-RAM instead of EEPROM to suit your needs.

Regards

Nis Adelby Clausen

0 Likes