Giga R1 + Display Shield - Pin conflicts?

The short version:
I recently inherited the supervision of a university project using a Giga and a display shield. Two separate gigas have been damaged in the last weeks resulting in a green screen, similar to what has been described here:
Yellow Tint on Giga Display Shield - Mega / GIGA Display Shield - Arduino Forum
Problems with giga display shield - Mega / GIGA Display Shield - Arduino Forum

As in these posts, our gigas have developed an issue where the display only shows a green screen with black, jittery lines. The display was mounted correctly (on the back of the giga with the GPIOs accessible). The arduino was powered with 12v via the VIN pin, and was connected via USBC to a PC for programming.

In both cases, uploading example scripts, such as the display's IMU script, backlight script, serial scripts, etc, have all worked, but all example display scripts (GFX, LVDL) remain with a green screen.

Some of the Giga's pins D22 thru D53 are currently being used as PWM and GPIO.

The Question:
According to the datasheet, the pins along the narrow edge of the Giga, D22-D53, are connected to the LTDC portion of the STM32 processor.

Are these pins reserved for video use when using the display shield? Are they allowed to be used as GPIO when the official display shield is connected? I searched and could not find anything in the documentation of the Giga nor the Giga Display Shield that said that the pins should not be used when the display was in use. Could it be that using these pins as GPIO while the graphics are active is killing the giga?

More detail and a possible cause of the failure:
The application in this case is to control several motors with MC33926 dual motor carriers and force feedback from analog force sensors. I inherited this project, including a PCB that I'm now redesigning to fix a few design problems.

The motor carrier's IN1 and IN2 lines are controlled from the giga, as are the D1 PWM lines. The carrier's enable and slew pins are tied directly to VDD, which is 5v, supplied from the Arduino's 5v pin. According to the datasheet, VDD is not fed back to any pins that touch the arduino. The VDD mainly supplies the SF flag, which we don't use. It also supplies jumpers to override default settings, also not in use. The motors are supplied with power over the carrier's VIN pin, getting 12v from a 2.5 amp switching power supply. The motors each draw only about 70 mA without load.

I have measured the existing PCB's voltages. When left floating, the IN1 and IN2 pins float to 4.2v. This appears to be a voltage leaking across the MC33296's internal regulator from VIN, as it occurs even when VDD is not connected or when VDD is getting 3.3v input. Per the datasheet, IN1 and 2 are not connected to VDD. It's possible that this may be what is damaging the giga's graphics unit, as I'm not sure what happens onboard the Arduino before the GPIO are initialized. I could imagine the floating 4.2V is getting to the graphics unit and overloading it.

It's also possible that other short circuits or issues exist in the original PCB design, or even that it's one of the students inadvertently shorting something during testing, though they swear that isn't the case.

For now I'm just trying to rule out that the use of the digital pins could be the issue.

The giga has been replaced with a new one and a PCB redesign is underway. Until the new PCB arrives, the giga won't touch the hardware.

First post all the code in code tags. Then draw the wiring diagram as it is, not what it is shown as in whatever doc'n you are using. Take a picture of it and post.

Hi, thanks for the response, but I'm not asking for assistance with the code or with our wiring (which I know is subpar and which is being fixed). For now I'm just trying to get information on a one thing:

Does the use of the digital pins D22 - D53 as GPIO conflict with the simultaneous use of the Giga Display?

When using the display shield, are these pins reserved in such a way that using them for another purpose might cause damage?

According to the Giga's schematic, the pins in question are connected to the LTDC circuitry on the STM32, as can be seen on sheets 2 and 5.

Hi @shinekaze.

I understand that, but it is possible that the problem is caused by your code. If your sketch does not initialize the display memory, then it will contain random data, which results in something very much like what you described:

What can be very confusing is that the data is persistent while the display is powered, so if you uploaded a sketch that initialized the memory, then later changed it to a sketch that does not, it will appear that the new sketch is working perfectly until after you power cycle the board at some later time. So this makes it difficult to associate the the sketch code with the display problem.

Please upload this simple test sketch to the GIGA board:

#include <Arduino_GigaDisplay_GFX.h>

GigaDisplay_GFX display;

void setup() {
  display.fillScreen(0x0000);
  display.print("Hello, world!");
}

void loop() {}

The expected result is the text "Hello, world!" at the top left corner of the display, with the rest of the display pure black. Do you see that expected result, or do you still get the "green screen with black, jittery lines" instead?

Hi @ptillisch,

We did previously have the screen working for quite a while before it died. Talking with the student again after my initial post, it seems that it may be possible that he very briefly shorted VIN to GND while the giga was powered from USBC.

Before my initial post, I did test the board with a wide variety of example scripts, including the GFX examples. I also just tested the Arduino and display with the code you've provided. The giga has been completely removed from all other hardware, so at this point it's just the Giga and the display, connected and powered via USBC.

The broken giga still only displays the green screen with black lines. I opened a new giga and tested the same code and the same display. The new giga performed as expected, displaying a black screen with white text.

I will note that the smaller of the two black chips on the broken giga gets VERY hot, hot enough to burn your finger after only a second or two of contact. Possibly a short circuit.