Riverdi STM32 RVT101HVSNWC00 drivers


Has anyone adapted display and indev drivers for the following Riverdi STM32 displays to work with LVGL ?

Thanks in advance

I have this display and it is really nice, tried it with the TouchGFX so far. Any news about using it with LVGL?

I wonder if it would be possible to use it with Zephyr as well (which supports LVGL, see LVGL Basic Sample — Zephyr Project Documentation ). It would make it easy to switch do a different display and microcontroller, if needed.

I somehow missed your message until now.

The display is nice but but I can’t say the same about Riverdi as a company, I contacted them and unfortunately they were not very cooperative or helpful.
Basically they said that I should look at the official STM libraries on GitHub and try to make something work from that. This was even though they will not provide any circuitry or even state the reference design their board and display is based on.
I have not tried to do anything in this regard as I have not used the display for any real project as yet.
I was however able to get LVGL running by hacking their code so that the internal drivers (which they only supply in binary form) are used to fit the LVGL display update API. I could only get it working using STM32 CUBE IDE.
See attached modified file from their generated project.
freertos.c (12.3 KB)

I have not used Zephyr, but I imagine it would be possible to get it working provided you can import the Zephyr code to STM32 CUBE IDE.

I got it running with LVGL and Zephyr now for my company. Need to figure out license questions, maybe we can open source a sample application and the drivers. So far Riverdi support was good. I had to sign a NDA, but then they send even the circuit diagram etc. But might be only for companies and if they see some future sales.

Great, pleased you came right.

I would welcome anything that can be open sourced, let me know if I could be of assistance.

Out of interest did you use any of the code I posted above ?

No, I didn’t use any of your code, because Zephyr has already a LVGL display and touch implementation. I just needed to implement a driver for the touch panel controller to get the x/y coordinates. But I checked, and the display backend uses memcpy instead of DMA2D, so maybe I can improve it. Looks like your code can use DMA2D.

PS: if you join the Zephyr discord, you can see my journey so far with a video at the end, here:


I am using the 7" version for a project, and the code is supplied in “C” format, at least the configuration part for the LTDC, SDRAM, QSPI and DSI in my case (My panel is a 7" LCD with DSI interface, in the case of 10" the panel has LVDS interface, from the pictures on the board they are using a Texas Instruments chip to convert from RGB Interface to LVDS). The “touchGfx” core, yes it is in binary format but to use LVGL is not necessary.

Regarding the display panel used, is indicated in the datasheet (in your case section 12.2 of the datasheet specifies the part number).

At least in my case, was pretty straight forward to have the display working, had to install TouchGfx to get the sample code, and importantly the “Stldr” file to program the external memory with CubeProgrammer in case is necessary to store images or fonts in external memory, after that was checking in CubeMx the clock settings they had for the LTDC and DSI (still cannot calculate this things well).
The source code / drivers could be better (specially if anyone likes to use CubeMx to generate code, will break the project since some there are some “manual” alterations in the LTCD and DSI init function that will be override), at least the FMC-SDRAM settings where not ideal, using the benchmark example the Weighted FPS jump from 93 to 101 by following the timings specified in the SDRAM datasheet.

But yes, is a pity they don’t supply the schematic for the board (considering that is almost a copy of STM32H743I-EVAL, the cubeMx project is based on that board), it is possible to find almost all the necessary details regarding the hardware connections using the datasheet and CubeMx file from the sample project (I2C bus used to connected to touch, Touch Int pin, Touch Reset pin, LCD Enable pin, Backligth PWM pin, etc…)
Regarding the source code, they should just release the source code for the 7" and 10" in GitHub, since it is available using TouchGfx software, in reality is not behind any paywall or something similar.

In case of the 7" is also a pity they did not leave connected to the processor the “U/D” and “L/R” pins on the display connector, in order to rotate the display by hardware, but at least there are footprints to put a pull-up or down resistor in there…

1 Like

Is It possible to share your code?
I’m also interested with the 7 inch version .
And I wonder what setup did you use regarding the framebuffer

An update to this is from my side, I sent Riverdi support a link to this forum topic as it was just after your reply.

As result, they have sent me a link to a zip file containing source code for all of the required underlying code having to do with the RVT101HVSNWC00. This was sent without the need for me to sign an NDA, so (thankfully) it seems they have changed their policy in this regard. Hopefully they continue in this vein and make it easier to obtain for all their concerned products instead of making perspective customers jump through hoops as has been the case till now.

1 Like

I got USB now working, too with Zephyr (as an USB serial port), shell and logging with Minicom works. Next will be installing mcuboot, then firmware updates will be easier for end-customers without a J-Link or ST-Link.

Not sure if the drivers and board configurations can be released as open source, this decision is above my pay grade, but I’ll try. I think it would be beneficial for everybody to integrate it as a board in upstream Zephyr, because others could then improve it as well, which my company then can use, too.

Hi Frank! I have the same board. Any chance to have the Zephyr configuration files for it shared? Thank you in advance!

Sorry, can’t share it, but many things should work, if you just use this board:
For the display I had to enable DMA2D, which is already supported with the latest LVGL version, to avoid display glitches.

1 Like

Thank you! I will definitely give it a try! I think it’s a good start.