Summary:
Hardware: There are 2 nucleo-144 boards, stm32<F>767zi & stm32<H>743zi (both cortex M-7, pin compatible).
TFT LCD shield, ILI9486 320x480.
Software: Arduino IDE 1.8.9, + MCUFRIEND_kbv library, sketch : graphictest_kbv.
https://github.com/prenticedavid/MCUFRIEND_kbv Since library doesn't have support for H743 processor at this time, I've done some simple "copy-paste" upgrade using F767 as a reference. Here is essential part, for briefing:
#elif IS_NUCLEO144 // Uno Shield on NUCLEO-144
#warning Uno Shield on NUCLEO-144 >STM32H743xx<
#define RD_PORT GPIOA //PA3
#define RD_PIN 3
#define WR_PORT GPIOC //PC0
#define WR_PIN 0
#define CD_PORT GPIOC //PC3
#define CD_PIN 3
#define CS_PORT GPIOF //PF3
#define CS_PIN 3
#define RESET_PORT GPIOF //PF5
#define RESET_PIN 5
// configure macros for the data pins
#define DMASK ((1<<15)) //#1
#define EMASK ((1<<13)|(1<<11)|(1<<9)) //#3, #5, #6
#define FMASK ((1<<12)|(1<<15)|(1<<14)|(1<<13)) //#0, #2, #4, #7
#define write_8(d) { \
GPIOD->REGS(BSRR) = DMASK << 16; \
GPIOE->REGS(BSRR) = EMASK << 16; \
GPIOF->REGS(BSRR) = FMASK << 16; \
GPIOD->REGS(BSRR) = ( ((d) & (1<<1)) << 14); \
GPIOE->REGS(BSRR) = ( ((d) & (1<<3)) << 10) \
| (((d) & (1<<5)) << 6) \
| (((d) & (1<<6)) << 3); \
GPIOF->REGS(BSRR) = ( ((d) & (1<<0)) << 12) \
| (((d) & (1<<2)) << 13) \
| (((d) & (1<<4)) << 10) \
| (((d) & (1<<7)) << 6); \
}
#define read_8() ( ( ( (GPIOF->REGS(IDR) & (1<<12)) >> 12) \
| ((GPIOD->REGS(IDR) & (1<<15)) >> 14) \
| ((GPIOF->REGS(IDR) & (1<<15)) >> 13) \
| ((GPIOE->REGS(IDR) & (1<<13)) >> 10) \
| ((GPIOF->REGS(IDR) & (1<<14)) >> 10) \
| ((GPIOE->REGS(IDR) & (1<<11)) >> 6) \
| ((GPIOE->REGS(IDR) & (1<<9)) >> 3) \
| ((GPIOF->REGS(IDR) & (1<<13)) >> 6)))
// PD15 PE13,PE11,PE9 PF15,PF14,PF13,PF12
#define setWriteDir() { setReadDir(); \
GPIOD->MODER |= 0x40000000; GPIOE->MODER |= 0x04440000; GPIOF->MODER |= 0x55000000; }
#define setReadDir() { GPIOD->MODER &= ~0xC0000000; GPIOE->MODER &= ~0x0CCC0000; GPIOF->MODER &= ~0xFF000000; }
Because both boards pin-compatible, GPIO- basic bit banging is the same.
I see a warning message "#warning Uno Shield on NUCLEO-144 >STM32H743xx<" confirming compilation this part of the code.
Results:
F-767
Serial took 0ms to start
ID = 0x9486
MCUFRIEND 2.99 UNO
FillScreen 156615
Text 8420
Lines 156954
Horiz/Vert Lines 13015
Rectangles (outline) 7559
Rectangles (filled) 382163
Circles (filled) 69338
Circles (outline) 67380
Triangles (outline) 43409
Triangles (filled) 132859
Rounded rects (outline) 23750
Rounded rects (filled) 420259
Total:1.48sec
ID: 0x9486
F_CPU:216.00MHz
H743
Serial took 0ms to start
ID = 0x9486
MCUFRIEND 2.99 UNO
FillScreen 875563
Text 25855
Lines 515536
Horiz/Vert Lines 71397
Rectangles (outline) 40012
Rectangles (filled) 2134143
Circles (filled) 276067
Circles (outline) 221123
Triangles (outline) 143537
Triangles (filled) 690744
Rounded rects (outline) 89524
Rounded rects (filled) 2318388
Total:7.40sec
ID: 0x9486
F_CPU:400.00MHz
It's about 5 times (!!!) slower, and I'm running out of options what may be the cause. Hardware configured correctly,
F767 H743
clock 216 400
AHB1 216
AHB4 200
What confusing, is moving GPIO bus to AHB4 from "normally" used AHB1 in the H743 series, that may explain enormously huge latency.