Replies: 6 comments 11 replies
-
Hi, this sounds a bit like an issue with the controller or how things are wired to the display. I just checked, there is no support for the STM32H757I in Platformio, so I can't do a quick check if it compiles out of the box. This also reminds me that I wanted to put in more work in to support DMA with STM32 in general. The closest I could try spontaneously was STM32H750VBT6 and at least it compiles. Yes, I am not actually using STM32 for anything. Have you modified EVE_target_STM32.h? In regards of the SPI traffic, I have no logic anaylzer trace for a STM32 at hand. On MISO EVE is always sending 0x00 0x4a 0x43 and 0x42 when it is active. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Hey, do not call me Mr. Riedel. :-)
Yes, at least as soon as EVE starts answering after wakeup every time the first four bytes on MISO are 0x00 0x4a 0x43 0x42. I started to play again with STM32 and this is what a sequence looks like from the STM32F407: The initial clock must be no higher than 11MHz, only after startup upto 30MHz are allowed. How is your controller wired to the display exactly? I do observe that the MOSI line with the STM32F4 is low when the last byte is 0x00 and high when the last byte is 0xff. Using STM32CubeIDE is a bit odd, usually I use PlatformIO. |
Beta Was this translation helpful? Give feedback.
-
Hi, I got nothing, overall this looks ok, except of course that the controller really should not pull the MISO lines. Oh, something that helped with a different controller and is a bit odd, you can try to use GPIO_SPEED_FREQ_HIGH instead of GPIO_SPEED_FREQ_VERY_HIGH, there might be ringing on the lines. On the F407 I got this:
So far I am just going with 8 bits and the spi.c that STM32CubeIDE generated for the F407 has this:
I just enable the SPI, there does not seem to be any reason to deactivate it again after a transfer. In my main.c I have this: /* USER CODE END 2 */
Not sure what this is actually good for.
LL_SPI_TransmitData8() does just that, it transfers one byte. I did not have the opportunity to see this fail myself, I only made it compile. ;-) |
Beta Was this translation helpful? Give feedback.
-
I have the STM32H755 up and running and it works stable in my setup, had it running for hours by now. Using this to send two bytes:
The 1.64µs gap between the transfers is the result of the RXP flag to clear loooong after the transfer is done. With some tweaking I got this down to 257µs / 39µs. This is a trace file for the startup plus two refresh cycles for the Saelea Logic2 software: Channel 5 is just an IO I setup to measure the timings The STM32H407 is significantly faster, running at lower core clock and running the SPI also at 10MHz. What I am trying now is to get DMA to work with the STM32H755. |
Beta Was this translation helpful? Give feedback.
-
Hello,
Yeah, the kind of esoteric issue that we all love.
Yup, that is the one I am using occasionally as well.
I am just having fun over here. :-) Well, STM32H7 and DMA did not work and I still do not know what the issue could be. So I updated the repository to what I had. Then I ordered more STM32 eval boards, only to find out then that the two new ones I chose also use the newer DMA engine. |
Beta Was this translation helpful? Give feedback.
-
Hello Mr. Riedel
In my project I am using your library to control an EVE display (MatrixOrbital EVE3-50G). In a first step I used the STM32H757I-EVAL board as MCU. The display shows a few lines and 3 simple images, which I load into RAM_G with the inflate command. In a further step, I integrated the implementation of the EVAL board in the original project (MCU STM32H755ZI). Everything has worked so far. I have continuously added further graphics to the project, which are loaded into the RAM_G. I continuously checked the implementation by showing the graphics on the display. I used the EAB tool to prepare the graphics according to the instructions in your forum. During development, however, it happened that the display sporadically stopped showing anything. It seemed as if the display was stuck in a certain state. I then carried out the error recovery procedure manually a few times, restarted the device several times and loaded older software versions until it suddenly started working again. After that, the display worked for a certain period of time without any problems until it stopped working again. However, I could not recognize a defined procedure to reanimate the display. Suddenly it worked again.
However, it is now the case that the display can no longer be controlled with the H755ZI hardware. At best, the display turns white when the backlight is set to the maximum value during initialization. When I connect the display to the EVAL board, the display works perfectly. To rule out a problem when loading and displaying the graphics, I have removed these calls and only write "Hello world!" in black letters on a white background. I recorded all SPI commands during initialization and control of the screen with the oscilloscope and compared the sequences between the EVAL board and the H755ZI. The SPI communication signals look practically identical. Only with the H755ZI does the MOSI or CLK remain HIGH for certain commands after the CS is reset (set to HIGH) and then slowly come down to again. It also happens that there is no longer a negative edge on the last SPI CLK when the CS is reset (set to HIGH) at the end of transmission. I wonder if this could be a problem for the display, but the data is overtaken to the positive edge. With the EVAL board, the signals always return cleanly to LOW when the CS changes back to HIGH.
I originally had the SPI speed set to 30 Mbit/s, but have reduced it to 350kBit/s so that the edges are cleaner and to avoid coupling in interference signals (the SPI lines to the display are approx. 25cm long).
I can't explain why the display no longer works with the H755ZI, even if I switch to an old SW version that used to work. On the EVAL board the display works stable with the same instructions. The display should behave the same with the same SPI signals? Or is the floating MOSI and CLK line with CS on HIGH from the H755ZI a problem after all? But this SW worked in the beginning and nothing was changed in the SPI driver.
The difficulty for me is to find out what is wrong with the display. I have also read out the error register, but there is no error there. The error recovery procedure doesn't help either.
What else can I do to find out what is wrong with the display? I have also noticed that when write commands are sent to the display, data is also sent on the MISO line. With the EVAL board, the data also exists on the MISO line. However, this data is not always the same and I wonder what kind of data the display sends. I can't find anything on this topic in the data sheet or the programming guide. However, I am of the opinion that I can ignore this data for pure write commands.
I just don't understand why the display can no longer be controlled with a SW that works once, even though the data on the SPI interface looks good.
Have you had any similar experiences or do you have any idea what the problem might be?
Many thanks for your support!
I will attach the recordings of the SPI signals, but I do not have access to the data at the moment.
Kind regards
Simon
Beta Was this translation helpful? Give feedback.
All reactions