Skip to main content
Explorer
August 6, 2024
Question

Does STM32H7 support ISSI's OctalRAM ?

  • August 6, 2024
  • 2 replies
  • 8352 views

Hello, thank you for reading this post, sincerely hope to help answer questions.

The OSPI interface of STM32H735IGK6 is used to connect ISSI66WVO32M8DBLL to ISSI's PSRAM, which can read and write registers but cannot read and write memory. When configuring the register, it is found that the 24-26-bit MTYP[2:0]:Memory Type in the OCTOSPI device configuration register 1 (OCTOSPI_DCR1) register is controversial. According to the description in the manual, the MTYP[2:0] is shown in Figure 1, while the configurable options in cubemx are shown in Figure 2. Both have bias; Moreover, the following paragraph was found in file AN5050 which did not indicate that the general OSPI interface supports ISSI's PSRAM, please see Figure 3 below, so I would like to confirm whether STM32H7 supports ISSI's PSRAM (the general OSPI interface protocol is not hyperbus).If supported, what mode should this option (memory type) select? Thanks for your answer.

Lin_Yishan_0-1722914304757.png

Figure 1

 

Lin_Yishan_1-1722914481420.png

Figure 2

 

Lin_Yishan_2-1722914559326.png

Figure 3

 

 

 

    This topic has been closed for replies.

    2 replies

    Technical Moderator
    August 6, 2024

    Hello @Lin_Yishan and welcome to the Community :),

     

    The memory type depends on the D0/D1 ordering: The micron (and compatible memories) use D0/D1 Ordering while Macronix (and compatible memories) use D1/D0 data ordering and Macronix RAM (and compatible memories)  use D1/D0 ordering with dedicated address mapping.

    If you have a memory different from Micron and Macronix you simply need to look at the data ordering in the memory datasheet and then select the one that matches it in STM32 OSPI configuration.

    The ISSI memory is not listed, so you need to look at the data ordering in ISSI memory datasheet and check which mode is compatible.

    "ISSI66WVO32M8DBLL": Does you mean IS66WVO32M8?

    For ISSI PSRAM IS66WVO32M8 memory is compatible with  OCTOSPI interface when setting Macronix RAM ( MTYP = 011 ).

     Could you please share the memory datasheet?

    Thank you.

    Kaouthar 

    Explorer
    August 6, 2024

    Thank you for your reply, PSRAM model is indeed ISS66WVO32M8DBLL, I will send the data manual to you below.

     

    Technical Moderator
    August 6, 2024

    Hello @Lin_Yishan ,

     

    Thank you for sharing, I looked at the data ordering in ISSI memory datasheet and I figured it is compatible with Macronix RAM.

    KDJEM1_1-1722936860745.png

     

    Has your request been answered?

    If you need further clarification, please do not hesitate to share it :)

    If your request is answered, please click on Accept as Solution on the reply which answered your question.

    Thank you.

    Kaouthar

    Explorer
    August 6, 2024

    Thank you for your reply.Modify according to the method you gave, but the problem is still not solved,sincerely hope to help answer questions:

    The thing is that I use the OSPI2 interface of the STM32H735 to connect to the ISS66WVO32M8DBLL and use indirect mode for memory reading and writing.
    1、The first step is to use cubemx to configure OSPI interface parameters as shown in the following figure:

     

    Lin_Yishan_0-1722941868043.png

    Lin_Yishan_1-1722941881719.png

    Lin_Yishan_2-1722941940890.png

    2、The second step is to define the data read and write command parameters with OSPI_RegularCmdTypeDef:

     1.here the write data is 32 bytes and the data is printed out through the serial port

    Lin_Yishan_4-1722942075597.png

    Lin_Yishan_6-1722942238132.png

    2.here read the 32 bytes of data written above 

    Lin_Yishan_7-1722942465502.png

    Lin_Yishan_8-1722942544488.png

    3.The following are the address and instruction parameters for the call, as defined by ISS66WVO32M8DBLL:

    Use wrap burst mode

    Lin_Yishan_9-1722942747632.png

    Lin_Yishan_10-1722942793181.png

    Lin_Yishan_11-1722942988933.png

    3、I have a few things to add about ISS66WVO32M8DBLL

    Lin_Yishan_12-1722943256839.png

    1.DQSM operates as a data mask when data is written to memory;

    2.DQSM acts as the data synchronization clock when data/registers are read;

    Lin_Yishan_13-1722943410823.png

    1.Default value: 1111 0000 0010 0010 :0xf022

    2.CR[3] Initial Access Latency: When used in conjunction with Latency counter, the multiple of Latency counter is determined. When this bit is 0, the multiple is determined according to whether there is Refresh Collision (Refresh collision means that a read or write operation is performed at the same time during a refresh operation, which may result in performance issues or data errors). Decide that if there is a refresh conflict, it will be twice, and if there is no refresh conflict, it will be 1 times. When this bit is 1, it is fixed to double.

    4、The third step, call the above function, the address and data passed in, but the actual print results, read the data is wrong:

    Lin_Yishan_14-1722943668605.png

    Lin_Yishan_15-1722943759853.png

    The above code is to write 32 bytes of data to memory, read it into the array, and print it out through the serial tool.

    The results are as follows:

    Without changing the memory type (originally AP Memory), the register reads correctly but the memory reads and writes incorrectly,

    Lin_Yishan_16-1722944319018.png

    Lin_Yishan_17-1722944354770.png

    and after changing to Macronix RAM, the register reads and writes incorrectly:

    Lin_Yishan_18-1722944590677.png

    Lin_Yishan_19-1722944625483.png

    I think there may be an error in the register configuration, hope you can answer the doubts, thank you very much!

    I will provide my  code.

    Technical Moderator
    August 27, 2024

    Hello,

     

    You can find the follow-up in Problem with PSRAM peripherals of STM32H735 - STMicroelectronics Community

     

    Thank you.

    Kaouthar