cancel
Showing results for 
Search instead for 
Did you mean: 

Display RK043FN66HS-CTG from Rocktech

João Costa
Associate III

I'm building a new hardware based on STM32F7508-DK demo board. The display used by ST is the RK043FN48H-CT672B. According to Rocktech support, this display was customized for ST (with a single solderable flat cable). The touch and TFT driver ICs on this display are also becoming obsolete. Rocktech is suggesting me to use the new Display RK043FN66HS-CTG, with newer touch and TFT driver ICs. Rocktech said that this drivers are compatible and it should work well... Do you gus have any experience on this new displays from Rocktech?

28 REPLIES 28
Thomas Laurenson
Associate II

Hi,

Facing same problem here.

Problem is that de CT IC FT5336 is obsolete... but the RK043FN66HS-CT Display has a GT911 CT IC... which is not code to code compatible with the FT5336 (at least looking at the datasheet)... therefore a new driver has to be implemented into the touchGFX project in place of the FT5336 one.

So far, all I found is a linux driver :(... and I'm not even sure how to implement a new touch driver into the project ^^.

Getting my hands on the new screen, soon, I will do some tests and see.

Thomas

Hi @Thomas Laurenson​ !

Thanks for your reply! I'm with my custom PCB in hands. The RK043FN66HS-CTG uses another driver display IC too (ST7282 instead of OTA5180A). It seems these drivers are not compatible too... Did you have sucess on using your display with TouchGFX? Thanks!

As far as implementing a new touch driver is concerned. Here's the header file for TouchController.hpp. You can implement init code in init() if you want, or not. It'll get called. TouchGFX HAL will call sampleTouch() on whatever concrete implementation of TouchController is compiled.

#ifndef TOUCHCONTROLLER_HPP
#define TOUCHCONTROLLER_HPP
 
#include <touchgfx/hal/Types.hpp>
 
namespace touchgfx
{
/**
 * @class TouchController TouchController.hpp platform/driver/touch/TouchController.hpp
 *
 * @brief Basic Touch Controller interface.
 *
 *        Basic Touch Controller interface.
 */
class TouchController
{
public:
    virtual ~TouchController()
    {    }
 
    /**
     * @fn virtual void TouchController::init() = 0;
     *
     * @brief Initializes touch controller.
     *
     *        Initializes touch controller.
     */
    virtual void init() = 0;
 
    /**
     * @fn virtual bool TouchController::sampleTouch(int32_t& x, int32_t& y) = 0;
     *
     * @brief Checks whether the touch screen is being touched, and if so, what coordinates.
     *
     *        Checks whether the touch screen is being touched, and if so, what coordinates.
     *
     * @param [out] x The x position of the touch
     * @param [out] y The y position of the touch
     *
     * @return True if a touch has been detected, otherwise false.
     */
    virtual bool sampleTouch(int32_t& x, int32_t& y) = 0;
};
} // namespace touchgfx
 
#endif // TOUCHCONTROLLER_HPP

If we take the touch controller from the STM32F769-DISCO kit, you can see here that we're simply:

  1. Evaluating if touch is detected or not.
  2. If yes, read and set the current state of x and y and return true/false for touch/no touch.
void OTM8009TouchController::init()
{
    BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
}
 
bool OTM8009TouchController::sampleTouch(int32_t& x, int32_t& y)
{
    TS_StateTypeDef state;
    BSP_TS_GetState(&state);
    if (state.touchDetected)
    {
        x = state.touchX[0];
        y = state.touchY[0];
        return true;
    }
    return false;
}

A lot of the logic is hidden inside BSP_TS_GetState() in this case. You'll just roll your own.

/Martin

I have it working now. I'll share my driver asap, so others can use it too!

Great,

If you could highlight where you had issues and what you did to solve those issues that'd be a great help for others too i think :)

Thanks!

Shure! Will post asap!

YAdan
Associate II

Hello João Costa I will be grateful if you could post the driver or give some hints on how to solve the driver problem. I am doing the same think as you I have created a new hardware based on the Dico board STM32F746 have faced the same problem with RK043FN48H-CT672B.

Initially I looked at using the RK043FN02H-CT as a replacement because it looked compatible on the datasheet. But Rocktech said the RK043FN02H-CT is EOL and they recommend using  RK043FN66HS-CT.

Hi @YAdan​​ , sorry for my late reply...

Attached is my BSP drivers for my custom board with STM32F7508N MCU and RK043FN66HS-CTG display with gt911 touch driver implemented. The code is still a little messy and needs a cleanup. It's working good for me. You just need to do a little change on sampleTouch function (as on attached image) and include the stm32f7508_discovery_ts.h on STM32F7TouchController.cpp file. I've made some changes on componets code, under BSP files, so a recomend you to use all my BSP drivers...).

Please let me know if it works!

0690X00000Buid3QAB.png

YAdan
Associate II

Hi João Costa and thank you for kindly sharing your BSP. It will take some time before I try it because my board is still in manfacturing process.

I have contacted Rocktech and they shared with me the attached driver. Also they shared with me the following answer:

"The reason we recommend RK043FN66HS-CTG because RK043FN48H-CT672B is a customized model only for our customer STM, we designed both TFT and CTP'S FPC to be soldering type based on their development board structure; while our standard display designed with inserted type FPC, which is more convenient used. "

This of course in addition to the obsolescence of the FT5336

I will keep you posted as soon as I start testing the LCD with my board.

Thanks.