Skip to main content
Visitor
June 21, 2026
Question

STM32H753ZIT6 + FMC Bank1 driving NT35510 LCD — screen completely dead, ID read returns 0x0000

  • June 21, 2026
  • 2 replies
  • 10 views

Hi everyone,

I'm working on a project using **STM32H753ZIT6** (Cortex-M7 @ 480MHz) to drive an **Alientek ATK-MD0430** 4.3" TFTLCD with **NT35510** controller via **FMC 16-bit 8080 parallel bus**.

**Symptom: Screen is completely dead — no backlight, no image, NT35510 ID read returns 0x0000 or 0xFFFF.**

I've been debugging this for two weeks and would appreciate any guidance.

---

### Hardware Configuration

| LCD Signal | STM32 Pin | FMC Function |
|-----------|-----------|--------------|
| CS | PD7 | FMC_NE1 (Bank1) |
| RS | PD13 | FMC_A18 |
| WR | PD5 | FMC_NWE |
| RD | PD4 | FMC_NOE |
| RST | PG9 | GPIO Output |
| BL | PA8 | TIM1_CH1 PWM |
| D0-D15 | Standard FMC data bus pins | FMC_D0~D15 |

### System Clock

HSE=25MHz → PLL1 /5×192/2 = 480MHz SYSCLK
PLL2 /5×120/3 = 200MHz → FMC (HCLK=240MHz)
VOS Scale 0

### What I've Tried (all failed)

1. Copied NT35510 init sequence from Alientek's official MiniSTM32H750 example
2. Fixed CMD/DATA addresses: CMD=0x6007FFFE, DATA=0x60080000 (RS on A18)
3. MPU configured for FMC LCD region (0x60000000) as Non-Cacheable + Non-Bufferable
4. Full 7-zone MPU configuration (DTCM/AXI/SRAM1-3/SRAM4/FMC/SDRAM/NAND)
5. D-Cache forced Write-Through: SCB->CACR |= 1<<2
6. FMC timing aligned to official values: AddressSetup=0x15, DataSetup=0x78
7. ExtendedMode=ENABLE, WriteFifo=DISABLE
8. Moved MPU_Config() after SystemClock_Config()
9. Replaced LVGL with raw color fill (excluded UI framework)
10. Removed FreeRTOS task that was accidentally toggling PG9 (LCD_RST)

### My Suspicion

- **FMC Bank1 vs Bank4**: Alientek official uses Bank4 (NE4=PG12), I'm using Bank1 (NE1=PD7). Are there FMC initialization differences for Bank1 vs Bank4 beyond the NE pin assignment?
- **PA8 PWM for backlight**: Official example uses PB5 GPIO directly. I'm using TIM1_CH1 PWM on PA8. Is this causing a conflict?
- **GPIO conflict**: MX_GPIO_Init() configures some pins before HAL_SRAM_MspInit() runs. Could CubeMX-generated GPIO init overwrite the FMC AF configuration?

### Key Files

Full code: https://github.com/1945980193abc-sys/STM32H753-NT35510-LCD-Debug

- Core/Src/lcd.c — NT35510 register init sequence
- Core/Src/app_init.c — MX_FMC_Init()
- Core/Inc/lcd.h — FMC address macros
- Core/Inc/mpu_config.h — MPU configuration
- docs/hardware.md — Complete pin mapping

---

Any suggestions on what to check first with a scope, or common pitfalls with FMC Bank1 on H7, would be greatly appreciated.

Thank you!

2 replies

AScha.3
Super User
June 21, 2026

Hi,

so...nothing at all.

First thing : backlight should work; it should be ON just with the hi on the pin , right ?

So what comes on the PA8 ? scope ?

+ try setting pin to hi or lo , just to see it can work at all.

"If you feel a post has answered your question, please click ""Accept as Solution""."
mƎALLEm
ST Technical Moderator
June 21, 2026

Hello,

For the Backlight you need to check the PWM with the oscilloscope on TIM1_CH1 (PA8)

For the FMC, you should configure the LCD memory region as Device or Strongly-Ordred.. Check the data bus with a logic analyzer.

To give better visibility on the answered topics, please click "Best answer" on the reply which solved your issue or answered your question.