STM32H7RS XSPI HyperBus 16-bit dual mode - how to initialize CR0 of second HyperRAM chip (IO[15:8])
Hello,
I have two Winbond W956D8MBYA (64Mb, x8) HyperRAM chips connected
to XSPI1 on STM32H7S3 in dual memory mode (DMM=1):
- Chip #0 → IO[7:0] + DQS0
- Chip #1 → IO[15:8] + DQS1
- Shared: CLK, NCLK, NCS
I need to run at 200 MHz, so I need to configure CR0 on both chips:
- Initial latency = 7 cycles (default is 6, valid only up to 166 MHz)
- Fixed latency (required for dual mode per RM0477)
Problem:
According to RM0477, in HyperBus 16-bit dual mode:
1. Variable latency is not supported (LM bit in XSPI_HLCR must be set)
2. Register space access uses only IO[7:0]. Quote from RM0477:
"IO8 to IO15 being not used but driven by the controller"
So I can only access registers of chip #0.
I also tried MSEL bit in XSPI_CR to switch to IO[15:8] in single mem
HyperBus mode - no effect.
Questions:
1. How to write CR0 to chip #1 connected to IO[15:8]?
2. Is there any way to initialize each chip separately before
switching to dual mode?
3. Does the controller duplicate data on IO[15:8] during register
write in dual mode?
MCU: STM32H7S3
Reference: RM0477 Rev9, section 24 XSPI, 16-bit HyperBus dual mode
Thank you
