cancel
Showing results for 
Search instead for 
Did you mean: 

Need for series resistors for OCTOSPI on STM32H7- and U5-boards?

Southbranch
Senior II

Hi,

I am working with some custom boards for H7 and U5-series.

The board schematics for STM32H735IG-DK and STM32U5A9-DISC shows both boards are using the same OCTO SPI but only the H7-board is using series resistors of 33 ohms for the all the data lines. 

In order to minimize reflections and match the transmission’s 50 ohms impedance, I have understood it as series resistor values should be chosen as: R_value = 50 ohm -  MCU_impedance. In such case one would assume the H7-series has an output impedance of about 20 ohms and the U5-series about 0 ohms.

  • Is this a correct assumption / best practice?
  • Are series resistors needed/reccomended on a U5-design?
  • Is output impedance documented somewhere? (could not find it in ref. manuals for memory bus)

Thanks for any hints

1 ACCEPTED SOLUTION

Accepted Solutions
FBL
ST Employee

Hello @Southbranch 

It is recommended to use series resistors on high-speed data lines to minimize reflections and match the transmission line impedance. On U5, it depends on the characteristics of the transmission line and the output impedance under specified conditions as specified in stm32u5 datasheets. Generally, they are not needed as in our reference boards since we have low output impedance.

Some general guidelines are detailed in 9.4.3 Octo-SPI interface Getting started with STM32H723/733, STM32H725/735 and STM32H730 Value Line hardware development -

You can find more PCB guidelines in memory manufacturer app notes.

It is recommended to enable IO Compensation cell and set io speed very high for better accuracy and stability in internal voltage. 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.


I'm out of offce with limited access to my emails.
Happy New Year!

View solution in original post

2 REPLIES 2
FBL
ST Employee

Hello @Southbranch 

It is recommended to use series resistors on high-speed data lines to minimize reflections and match the transmission line impedance. On U5, it depends on the characteristics of the transmission line and the output impedance under specified conditions as specified in stm32u5 datasheets. Generally, they are not needed as in our reference boards since we have low output impedance.

Some general guidelines are detailed in 9.4.3 Octo-SPI interface Getting started with STM32H723/733, STM32H725/735 and STM32H730 Value Line hardware development -

You can find more PCB guidelines in memory manufacturer app notes.

It is recommended to enable IO Compensation cell and set io speed very high for better accuracy and stability in internal voltage. 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.


I'm out of offce with limited access to my emails.
Happy New Year!

Hi Southbranch and FBL,

I am working with a Nucleo U5A5 and a W25Q16 flash chip in quad SPI mode (using the OctoSPI peripheral). For a couple of days I couldn't get it to work reliably: reading multiple bytes would fail on certain byte values coming from the flash chip. Specifically it would fail if three or four data lines were pulled high, but not if fewer than three data lines were pulled high. E.g. reading the value 0x03 would work fine (2 data bits high), but 0x07 would fail (3 data bits high).  Failure in this case means that the flash chip just stops responding at all. It's not like the signal gets distorted in any way (I looked at the analog signal with a scope). As I am still in an exploratory phase, the flash chip is connected to CN10 of the Nucleo board with 100mm wires. I noticed exactly the same behavior with clock frequencies from 100 kHz to 16 MHz.

I found this post but don't believe that my issue is one with reflections and transmission line impedance. It get the feeling that the input impedance of the MCU is just really low (but I'm expecting very high input impedance) when reading data, resulting in excessive current draw from the flash chip when it has to pull three or four bits high, causing a chip reset. If I had an issue with reflections, I would expect distorted waveforms, getting worse at higher frequencies. I would expect the same behavior regardless of the value I'm reading and I would not expect the flash chip to stop sending data entirely.

Anyway, I added a 100 Ohm series resistor in each of the data lines between the MCU and the flash chip and everything suddenly worked like a charm. I have tested it successfully up to a clock frequency of 16 MHz.

My question is: can anyone confirm or refute my reasoning? If the MCU input impedance is indeed very low, is this a bug in the chip? If my issue is not related to reflections/ringing/EMI, etc, what value should I use for the resistors?