MIPI-DSI Display Controller JD9365DA or FL7707N running with an STM32? - Page 1
Forum section: electronics / projects

author: ricko_uk
author_rank: Super Contributor
timestamp: March 24, 2025, 02:10:51 am
content: Hi,has anybody used an STM32 to control either one of these touch panel controllers:- JD9365DA (often used with 3.4" 800 x 800 panels)- FL7707N (often used with 4" 720 x 720 panels)preferably from a STM32U5 micro?I have been trying to get either one of those up and running for almost two weeks and has been very frustrating. I got the JD9365DA to only run the built-in self test (which confirms the config commands are going through). But when I remove the command for the built-in self test, no images appear on the display.The configuration commands are directly from the manufacturer and they have confirmed it is ok. Which points it to the STM32 clock configuration and DSI host configuration.Could anybody help please as the pressure from the client has been extremely intense (they have calling every day asking how it is progressing) which does not help.Any help is very much appreciated as always.

author: dietert1
author_rank: Super Contributor
timestamp: March 24, 2025, 09:50:45 am
content: Probably your SPI command link works yet the video data transfer has issues.Maybe a quick web research helps:https://community.st.com/t5/stm32-mcus-products/stm32u5a9-mipi-dsi-configuration-issue-distorted-images-timeout/td-p/614187contains a link to a github DSI example and to AN4861.I used the STM32H7 LTDC interface successfully, yet with some surprises as the LCD geometry wasn't one of the standard 4:3 or 16:9 formats that its controller was made for. The image was generated from MCU internal SRAM and the format included large invisible regions requiring a much higher pixel clock.Regards, Dieter

author: ricko_uk
author_rank: Super Contributor
timestamp: March 24, 2025, 05:07:57 pm
content: Thank you @dietert1I think you meant AN4860 (DSI) not AN4861 (LTDC), but regardless, I lost track of how many times I read it but didn't solve it. And I did see that post too but wasn't much help and a few question asked were not answered.That is why I was wondering whether someone here used an STM32 successfully with either of those controllersThank you

author: dietert1
author_rank: Super Contributor
timestamp: March 24, 2025, 07:11:01 pm
content: I found this description of how to work out the number of lanes in video data transfer:https://pcbartists.com/design/embedded/using-4-lane-mipi-dsi-display-with-stm32-2-lane-dsi-host/?srsltid=AfmBOoq48YhbiXYFE5aCBtr92_3SHtKPwe5hon8I_ijO2QWdLPg0LyPbAs far as i understand the STM32 is capable of 1 GBit per second data transfer on two lanes. This will give you 16 bit per pixel at about 66 MHz, enough for a 800x800 display. If there is a 24 bit format it can be done as well. Still memory bandwidth is a requirement, so one should use a STM32 with enough internal RAM: 800 x 800 = 640 KBytes if one can live with 1 Byte per pixel (256 colors in palette). At least twice as much when not using palette.My STM32H730 implementation has a bit image of about 307 KBytes, a 256 color palette and a pixel clock of about 40 MHz. That worked well. I used the LTDC peripheral. The STM32 DSI appears to be very similar, except it adds serializers to reduce pin count of digital video out.Regards, Dieter

author: ricko_uk
author_rank: Super Contributor
timestamp: March 24, 2025, 10:02:34 pm
content: Thank you Dieter

author: dietert1
author_rank: Super Contributor
timestamp: March 25, 2025, 01:18:45 pm
content: A good starting point would be UM2967, where they show how to use the DSI video interface in some detail as implemented in their STM32U5A9J Discovery Kit, along with their demo application code examples. That is a round 480x480 display and a larger display should work very similar. One needs a display with the controller wired for two lanes.Regards, Dieter

author: ricko_uk
author_rank: Super Contributor
timestamp: March 25, 2025, 04:55:20 pm
content: Thank you Dieter,I came across that board and I was trying to find out the display model, manufacturer and controller. All I could find was what might be the display part number in the schematic sheet: J025F1CN0201WA Google search give only 4 results one of which seems the manufacturer (Shenzhen Jinghua Displays Electronics Co. ??) but no such display appears on their product line (at least online).Any idea where to find more info about that display, the controller and the display datasheet?Thank you

author: dietert1
author_rank: Super Contributor
timestamp: March 25, 2025, 05:37:51 pm
content: When i searched the JD9365DA-H3 datasheet for "lane" or "lanes" i found two configuration methods. One is the SETDSISETUP command and the other one is OTP. Maybe there is pin configuration, too.Probably one can overwrite the configuration drawn from pins or OTP by that command. How to send the command to the controller even if it got configured with 3 lanes before? Maybe commands should be sent using one lane only (as in "escape mode", "bus turnaround")? Apparently the STM32 HAL libraries support "DSI command mode", different from video out mode.I did not see how to read back the current configuration from the controller.Regards, Dieter

author: ricko_uk
author_rank: Super Contributor
timestamp: March 26, 2025, 03:09:18 pm
content: Thank you @Dieter,Yes, the OTP is for the manufacturer. The other is the usual DSI commands setup which I already use. The issue seems to be on the STM32 config.Thank you

author: RobN
author_rank: Newbie
timestamp: May 28, 2025, 09:44:54 pm
content: Hi Ricko, How did you get on with this? I am sorry I hadn't seen your post before.I am successfully interfacing a STM32F469 to a 3.45" circular display that has FL7705 controller.It's taken me about a year (part time) to achieve it using a STM32F469 DISCO board with my own MIPI adaptor to the display.I am working with a customer who creates their own graphics using TouchGFX.It took so long to do largely because the documentation was difficult to follow, just needs a great deal of perseverance.

author: ricko_uk
author_rank: Super Contributor
timestamp: June 11, 2025, 03:43:10 pm
content: Hi @RobN,thank you for your reply. Not yet.Could you please help?That'd be much appreciated!Thank you

author: roman.isaikin
author_rank: Contributor
timestamp: June 11, 2025, 06:51:50 pm
content: Maybe not much of a help, but check out this DSI implementation -https://github.com/stm32-rs/stm32h7xx-hal/blob/master/src/dsi.rs.It took me several months to unwrap ST's terrible mess of a driver and get a 2-lane DSI screen working (there is an example in that repo as well, but for OTM8009A controller). Maybe it will give you some ideas, as it is only one file now and everything important is in one place.Also, I would triple check everything, add logging for all the important pieces (clocks, PLL lock status, etc) and do a read for each write to ensure everything is working properly (note that read itself might fail unfortunately, even if write succeeds). As much as one wrong bit in the "right" register and the screen will not work. I also vaguely remember funky behavior in regard to LP mode, forced vs no clock when no data transfers are ongoing, and bus turn-around, worth checking.