QSPI on H7

This forum is dedicated to feedback, discussions about ongoing or future developments, ideas and suggestions regarding the ChibiOS projects are welcome. This forum is NOT for support.
tvi
Posts: 3
Joined: Mon Aug 23, 2021 12:25 pm

QSPI on H7

Postby tvi » Mon Aug 23, 2021 1:45 pm

Hello,

I am not sure if this is the correct place to ask for assistance but I can not determine what I am doing wrong.
I have not been able to locate an example on using the WSPI driver for QSPI "normal"/arbitrary communication. The only example I can find is the "{ChibiOS}testhal\STM32\multi\WSPI-MFS\" project and this utilizes QSPI through the SNOR driver for either the n25q or the mx25 communicating with wspiCommand and wspiSend.
If you have a simple example demonstrating data operation of the QSPI I would love to try it!

Simplest desired functionality:
Send abritrary data over QSPI following the normal QSPI dataflow: Command, Address, Dummy, Data

Setup:
I am running a version of ChibiOs Trunk from around December 2020, with some patches for some of the LLD's.
But nothing which should impact QSPI.

Board:
Board is a custom layout, but functionality has been verified to work. I have had ChibiOS running multiple threads servicing things such as LWIP ethernet access and SPI connection to the board.
MCU is specifically: STM32H753
The 6 pins used for QSPI has been configured as GPIO and toggled to verify integrity and connections. They are at the moment not connected to anything on the output side.
specific pin configuration can be seen in top part of attached Main() code snippet

Relavant Chibios configs:

mcuconf.h:

Code: Select all

/*
 * WSPI driver system settings.
 */
#define STM32_WSPI_USE_QUADSPI1             TRUE
#define STM32_WSPI_QUADSPI1_PRESCALER_VALUE 16
#define STM32_WSPI_QUADSPI1_MDMA_CHANNEL    STM32_MDMA_CHANNEL_ID_ANY
#define STM32_WSPI_QUADSPI1_MDMA_PRIORITY   1
#define STM32_WSPI_MDMA_ERROR_HOOK(qspip)   osalSysHalt("MDMA failure")

NOTE: The HCLK which is the clock begin prescaled is running at 80MHz resulting in 5MHz QSPI freq

halconf.h:

Code: Select all

/**
 * @brief   Enables the WSPI subsystem.
 */
#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__)
#define HAL_USE_WSPI                        TRUE
#endif

/*===========================================================================*/
/* WSPI driver related settings.                                             */
/*===========================================================================*/

/**
 * @brief   Enables synchronous APIs.
 * @note    Disabling this option saves both code and data space.
 */
#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__)
#define WSPI_USE_WAIT                       TRUE
#endif

/**
 * @brief   Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs.
 * @note    Disabling this option saves both code and data space.
 */
#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
#define WSPI_USE_MUTUAL_EXCLUSION           TRUE
#endif


QUADSPIv2 version:

I noticed some posts regarding ISR related issues and HW config bugs so I have updated my QUADSPIv2 to this version which should contain the latest bugfixes:
https://osdn.net/projects/chibios/scm/s ... QUADSPIv2/

Main thread code:

I have made a test main to test the QSPI functionality only running the code in the snippet below

Code: Select all

int main(void)
{
  halInit();
  OS_API_Init();

  palSetPadMode(GPIOB, 2, PAL_MODE_ALTERNATE( 9 ) | PAL_STM32_OSPEED_HIGHEST);  //QSPI CLK
  palSetPadMode(GPIOG, 6, PAL_MODE_ALTERNATE( 10 ) | PAL_STM32_OSPEED_HIGHEST); //QSPI Chip Select (NCS)
  palSetPadMode(GPIOF, 8, PAL_MODE_ALTERNATE( 10 ) | PAL_STM32_OSPEED_HIGHEST); //QSPI IO 0
  palSetPadMode(GPIOF, 9, PAL_MODE_ALTERNATE( 10 ) | PAL_STM32_OSPEED_HIGHEST); //QSPI IO 1
  palSetPadMode(GPIOF, 7, PAL_MODE_ALTERNATE( 9 ) | PAL_STM32_OSPEED_HIGHEST);  //QSPI IO 2
  palSetPadMode(GPIOF, 6, PAL_MODE_ALTERNATE( 9 ) | PAL_STM32_OSPEED_HIGHEST);  //QSPI IO 3

  /* QSPI testing */

  static WSPIConfig wcfg;

  wspiStart(&WSPID1,&wcfg);

  static wspi_command_t cmdp;

  cmdp.cfg   = (WSPI_CFG_CMD_MODE_FOUR_LINES     | \
                   WSPI_CFG_ADDR_MODE_FOUR_LINES | \
                   WSPI_CFG_ALT_MODE_NONE        | \
                   WSPI_CFG_DATA_MODE_FOUR_LINES | \
                   WSPI_CFG_CMD_SIZE_8           | \
                   WSPI_CFG_ADDR_SIZE_24);

  cmdp.addr = 0xFFFFFF;
  cmdp.cmd = 0xFF;
  cmdp.alt = 0;
  cmdp.dummy = 0U;

  static uint8_t data_test[10] = {'a'};

  while (1)
  {
    wspiAcquireBus(&WSPID1);
    wspiStartCommand(&WSPID1, &cmdp);
    wspiStartSend(&WSPID1, &cmdp, 10, data_test);
    wspiReleaseBus(&WSPID1);

    OS_TaskDelay(100);
  }
}


Result:
The code compiles and runs through the loop but nothing is detectable on the pins with a scope.
QSPI Chip Select (NCS) pin remains high and never changes but the rest of the pins are constantly low.
If I use wspiSend() instead the threat is suspended at the line seen below but never wakes up.

Code: Select all

msg = osalThreadSuspendS(&wspip->thread);

Sounds like this old issue: viewtopic.php?t=4289
However "QSPISend()" is not in the driver and I have tested with "wspiSend()"

hypothesis:
Some MCU specific config is incorrectly setup?
- ITR?
- MDMA config / Handling?
I may have forgotten some specific WSPI configuration?
- Command config?
- WSPI start config?
This can for some reason not be done from main threat?

Do you have any idea about what might be the issue?

User avatar
Giovanni
Site Admin
Posts: 14444
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 1074 times
Been thanked: 921 times
Contact:

Re: QSPI on H7

Postby Giovanni » Mon Aug 23, 2021 2:30 pm

Hi.

The driver received changes but functionality has not yet been confirmed:

viewtopic.php?f=35&t=5849&start=10

Right now I don't have any HW for a test.

What board files are you using? it is a custom board so I imagine you created those, the problem could be there.

Giovanni

tvi
Posts: 3
Joined: Mon Aug 23, 2021 12:25 pm

Re: QSPI on H7

Postby tvi » Mon Aug 23, 2021 3:17 pm

Hi.

First of all, thank you for taking time to reply. :)

That topic was the reason I updated the LLD to trunk in the first place.

Yes, you are correct. I have made my own board.c and board.h files. These were mostly generated using STM32CubeIDE's .ioc generator combined with some manual editing to fit the format.

I did not edited these to reflect the QSPI configuration because I assumed the palSetPadMode() overwrites the board file configurations? (as seen in the main() code snippet)

I have just edited my board.h to reflect the same changes:
Note: I removed none relevant pins from the code snippet.

Code: Select all

#define VAL_GPIOB_MODER              PIN_MODE_ALTERNATE(GPIOB_PIN2) |       \
#define VAL_GPIOB_OTYPER             PIN_OTYPE_PUSHPULL(GPIOB_PIN2) |       \
#define VAL_GPIOB_OSPEEDR            PIN_OSPEED_HIGH(GPIOB_PIN2) |          \
#define VAL_GPIOB_PUPDR              PIN_PUPDR_PULLUP(GPIOB_PIN2) |         \
#define VAL_GPIOB_ODR                PIN_ODR_HIGH(GPIOB_PIN2) |             \
#define VAL_GPIOB_AFRL               PIN_AFIO_AF(GPIOB_PIN2, 9U) |          \

#define VAL_GPIOF_MODER              PIN_MODE_ALTERNATE(GPIOF_PIN6) |       \
                                     PIN_MODE_ALTERNATE(GPIOF_PIN7) |       \
                                     PIN_MODE_ALTERNATE(GPIOF_PIN8) |       \
                                     PIN_MODE_ALTERNATE(GPIOF_PIN9) |       \
#define VAL_GPIOF_OTYPER             PIN_OTYPE_PUSHPULL(GPIOF_PIN6) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN7) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN8) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN9) |       \
#define VAL_GPIOF_OSPEEDR            PIN_OSPEED_HIGH(GPIOF_PIN6) |          \
                                     PIN_OSPEED_HIGH(GPIOF_PIN7) |          \
                                     PIN_OSPEED_HIGH(GPIOF_PIN8) |          \
                                     PIN_OSPEED_HIGH(GPIOF_PIN9) |          \
#define VAL_GPIOF_PUPDR              PIN_PUPDR_PULLUP(GPIOF_PIN6) |         \
                                     PIN_PUPDR_PULLUP(GPIOF_PIN7) |         \
                                     PIN_PUPDR_PULLUP(GPIOF_PIN8) |         \
                                     PIN_PUPDR_PULLUP(GPIOF_PIN9) |         \
#define VAL_GPIOF_ODR                PIN_ODR_HIGH(GPIOF_PIN6) |             \
                                     PIN_ODR_HIGH(GPIOF_PIN7) |             \
                                     PIN_ODR_HIGH(GPIOF_PIN8) |             \
                                     PIN_ODR_HIGH(GPIOF_PIN9) |             \
#define VAL_GPIOF_AFRL               PIN_AFIO_AF(GPIOF_PIN6, 9U) |          \
                                     PIN_AFIO_AF(GPIOF_PIN7, 9U))
#define VAL_GPIOF_AFRH               PIN_AFIO_AF(GPIOF_PIN8, 10U) |         \
                                     PIN_AFIO_AF(GPIOF_PIN9, 10U) |         \

#define VAL_GPIOG_MODER              PIN_MODE_ALTERNATE(GPIOG_PIN6) |       \
#define VAL_GPIOG_OTYPER             PIN_OTYPE_PUSHPULL(GPIOG_PIN6) |       \
#define VAL_GPIOG_OSPEEDR            PIN_OSPEED_HIGH(GPIOG_PIN6) |          \
#define VAL_GPIOG_PUPDR              PIN_PUPDR_PULLUP(GPIOG_PIN6) |         \
#define VAL_GPIOG_ODR                PIN_ODR_HIGH(GPIOG_PIN6) |             \
#define VAL_GPIOG_AFRL               PIN_AFIO_AF(GPIOG_PIN6, 10U) |         \


Result:
Same result as described in initial post.

Sidenote:
I am in possession of the Nucleo-144 eval board if you want me to run tests on a know HW configuration. If that helps.
This eval board has the STM32H743 on it which is almost identical to the H753 the only major difference is the HW support for crypto operations.
I do not have a project configured for this at the moment but I could set it up if required.

User avatar
Giovanni
Site Admin
Posts: 14444
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 1074 times
Been thanked: 921 times
Contact:

Re: QSPI on H7

Postby Giovanni » Mon Aug 23, 2021 5:17 pm

Hi,

Note that board files are usually generated starting from a board.chcfg XML, your post makes me think you modified those manually.

The fact that you don't see signal at all makes me think it is a GPIO problem, note that each function should be assigned to only one GPIO, if you assign the same function to multiple GPIOs then it does not work. Make sure you are not assigning alternates both in board.h and at runtime (on different GPIOs).

Lacking hardware I cannot dig more deeply in this. I will order a board but it could take time.

Giovanni

tvi
Posts: 3
Joined: Mon Aug 23, 2021 12:25 pm

Re: QSPI on H7

Postby tvi » Tue Aug 24, 2021 12:54 pm

In order to eliminate the potential GPIO problem I have generated a new board file using the ChibiStudio board.chcfg XML file.
My current test program only has QSPI functionality, so the pins of interest are:

Code: Select all

#define LINE_QSPI_CLK               PAL_LINE(GPIOB, 2U)
#define LINE_QSPI_IO3               PAL_LINE(GPIOF, 6U)
#define LINE_QSPI_IO2               PAL_LINE(GPIOF, 7U)
#define LINE_QSPI_IO0               PAL_LINE(GPIOF, 8U)
#define LINE_QSPI_IO1               PAL_LINE(GPIOF, 9U)
#define LINE_QSPI_CS                PAL_LINE(GPIOG, 6U)


board.chcfg:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<!-- STM32H7xx board Template -->
<board
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://www.chibios.org/xml/schema/boards/stm32h7xx_board.xsd">
  <configuration_settings>
    <templates_path>resources/gencfg/processors/boards/stm32h7xx/templates</templates_path>
    <output_path>..</output_path>
    <hal_version>5.0.x</hal_version>
  </configuration_settings>
  <board_name>STM32H753XIH6 v.1.0</board_name>
  <board_id>ST_H753XIH6</board_id>
  <board_functions></board_functions>
  <headers></headers>
  <ethernet_phy>
    <identifier>MII_LAN8742A_ID</identifier>
    <bus_type>RMII</bus_type>
  </ethernet_phy>
  <subtype>STM32H753xx</subtype>
  <clocks
    HSEFrequency="50000000"
    HSEBypass="true"
    LSEFrequency="0"
    LSEBypass="false"
    VDD="300"
    LSEDrive="0 Low Drive (lowest consumption)" />
  <ports>
    <GPIOA>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID="RMII_REF_CLK"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="11" />
      <pin2
        ID="GPIO_24"
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin5
        ID="SPI1_SCK"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="5" />
      <pin6
        ID="SPI1_MISO"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="5" />
      <pin7
        ID="RMII_CRS_DV"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="11" />
      <pin8
        ID="GPIO_2"
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Output"
        Alternate="0" />
      <pin9
        ID="LPUART1_TX"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="3" />
      <pin10
        ID="LPUART1_RX"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="3" />
      <pin11
        ID="LPUART1_CTS"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="3" />
      <pin12
        ID="LPUART1_RTS"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="3" />
      <pin13
        ID="SWDIO"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="0" />
      <pin14
        ID="SWCLK"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="0" />
      <pin15
        ID="JTDI"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="0" />
    </GPIOA>
    <GPIOB>
      <pin0
        ID=""
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin1
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin2
        ID="QSPI_CLK"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="9" />
      <pin3
        ID="JTDO"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="0" />
      <pin4
        ID="NJTRST"
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="0" />
      <pin5
        ID="SPI1_MOSI"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="5" />
      <pin6
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin7
        ID=""
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin10
        ID="SPI2_SCK"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="5" />
      <pin11
        ID="ETH_INT"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Input"
        Alternate="0" />
      <pin12
        ID="SPI2_NSS"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="5" />
      <pin13
        ID="RMII_TXD1"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="11" />
      <pin14
        ID="UART4_RTS"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="8" />
      <pin15
        ID="UART4_CTS"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="8" />
    </GPIOB>
    <GPIOC>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID="SPI2_MOSI"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="5" />
      <pin2
        ID="SPI2_MISO"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="5" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID="RMII_RXD0"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="11" />
      <pin5
        ID="RMII_RXD1"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="11" />
      <pin6
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin7
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin10
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin11
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin12
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin13
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Input"
        Alternate="0" />
      <pin14
        ID="OSC32_IN"
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="Floating"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID="OSC32_OUT"
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="Floating"
        Mode="Input"
        Alternate="0" />
    </GPIOC>
    <GPIOD>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin2
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin5
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin6
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin7
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin10
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin11
        ID="ETH_GPIO9"
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin12
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin13
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin14
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
    </GPIOD>
    <GPIOE>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin2
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin5
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin6
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin7
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin10
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin11
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin12
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin13
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin14
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
    </GPIOE>
    <GPIOF>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin2
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin5
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin6
        ID="QSPI_IO3"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="9" />
      <pin7
        ID="QSPI_IO2"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="9" />
      <pin8
        ID="QSPI_IO0"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="10" />
      <pin9
        ID="QSPI_IO1"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="10" />
      <pin10
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin11
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin12
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin13
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin14
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
    </GPIOF>
    <GPIOG>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin2
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin5
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin6
        ID="QSPI_CS"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="PullUp"
        Mode="Alternate"
        Alternate="10" />
      <pin7
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="Floating"
        Mode="Input"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin10
        ID="SPI1_NSS"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="5" />
      <pin11
        ID="RMII_TX_EN"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="11" />
      <pin12
        ID="RMII_TXD1"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="11" />
      <pin13
        ID="RMII_TXD0"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Alternate"
        Alternate="11" />
      <pin14
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
    </GPIOG>
    <GPIOH>
      <pin0
        ID="OSC_IN"
        Type="PushPull"
        Level="High"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID=""
        Type="OpenDrain"
        Level="Low"
        Speed="Minimum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin2
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin5
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin6
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin7
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin10
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin11
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin12
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin13
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin14
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
    </GPIOH>
    <GPIOI>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin2
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin5
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin6
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin7
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin10
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin11
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin12
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin13
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin14
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
    </GPIOI>
    <GPIOJ>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin2
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin5
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin6
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin7
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin10
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin11
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin12
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin13
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin14
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
    </GPIOJ>
    <GPIOK>
      <pin0
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin1
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin2
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin3
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin4
        ID="LED_1"
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin5
        ID="LED_2"
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin6
        ID="LED_3"
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin7
        ID="LED_4"
        Type="PushPull"
        Level="Low"
        Speed="Maximum"
        Resistor="Floating"
        Mode="Output"
        Alternate="0" />
      <pin8
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin9
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin10
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin11
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin12
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin13
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin14
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
      <pin15
        ID=""
        Type="PushPull"
        Level="High"
        Speed="Minimum"
        Resistor="PullUp"
        Mode="Input"
        Alternate="0" />
    </GPIOK>
  </ports>
</board>


Result:
NCS -> Constant high
CLK -> Constant low
IO0 -> Constant low
IO1 -> Constant low
IO2 -> Constant low
IO3 -> Constant low

Do you have an approximate timeline for when you have the HW and time to dig deeper into this?

User avatar
Giovanni
Site Admin
Posts: 14444
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 1074 times
Been thanked: 921 times
Contact:

Re: QSPI on H7

Postby Giovanni » Tue Aug 24, 2021 1:49 pm

Not less than 2 weeks to get the board.

Giovanni


Return to “Development and Feedback”

Who is online

Users browsing this forum: No registered users and 24 guests