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
  • 69 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 on " Best Answer ".
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.