Skip to content

Commit 2f709cc

Browse files
authored
Merge pull request #13896 from jeromecoutant/PR_OSPI
STM32 OSPI support
2 parents 124afe7 + f7a2247 commit 2f709cc

File tree

20 files changed

+1712
-1514
lines changed

20 files changed

+1712
-1514
lines changed

hal/tests/TESTS/mbed_hal/ospi/ospi_test_utils.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ void OspiCommand::build(int instruction, int address, int alt)
8282
if (instruction == STATUS_REG) {
8383
_cmd.address.disabled = 0;
8484
_cmd.address.value = 0;
85-
_cmd.dummy_count = 4;
85+
_cmd.dummy_count = OSPI_READ_FAST_DUMMY_CYCLE;
8686
} else if (instruction == OSPI_CMD_RDCR2) {
87-
_cmd.dummy_count = 4;
87+
_cmd.dummy_count = OSPI_READ_FAST_DUMMY_CYCLE;
8888
} else if ((instruction == OSPI_CMD_READ_OPI) || (instruction == OSPI_CMD_READ_DOPI)) {
89-
_cmd.dummy_count = 20;
89+
_cmd.dummy_count = OSPI_READ_8IO_DUMMY_CYCLE;
9090
} else {
9191
_cmd.dummy_count = 0;
9292
}

storage/blockdevice/COMPONENT_OSPIF/source/OSPIFBlockDevice.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1662,8 +1662,7 @@ ospi_status_t OSPIFBlockDevice::_ospi_send_general_command(ospi_inst_t instructi
16621662
if ((_inst_width == OSPI_CFG_BUS_OCTA) || (_inst_width == OSPI_CFG_BUS_OCTA_DTR)) {
16631663
if ((instruction == OSPIF_INST_RSR1) || (instruction == OSPIF_INST_RDID) ||
16641664
(instruction == OSPIF_INST_RDCR2) || (instruction == OSPIF_INST_RDCR)) {
1665-
_ospi.configure_format(_inst_width, _inst_size, _address_width, _address_size, OSPI_CFG_BUS_SINGLE,
1666-
0, _data_width, 4);
1665+
_ospi.configure_format(_inst_width, _inst_size, _address_width, _address_size, OSPI_CFG_BUS_SINGLE, 0, _data_width, _dummy_cycles);
16671666
addr = 0;
16681667
} else if ((instruction == OSPIF_INST_WSR1)) {
16691668
addr = 0;

targets/TARGET_STM/TARGET_STM32F4/common_objects.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,7 @@ struct can_s {
150150

151151
#if DEVICE_QSPI
152152
struct qspi_s {
153-
#if defined(OCTOSPI1)
154-
OSPI_HandleTypeDef handle;
155-
#else
156153
QSPI_HandleTypeDef handle;
157-
#endif
158154
QSPIName qspi;
159155
PinName io0;
160156
PinName io1;

targets/TARGET_STM/TARGET_STM32F7/objects.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,7 @@ struct can_s {
167167

168168
#if DEVICE_QSPI
169169
struct qspi_s {
170-
#if defined(OCTOSPI1)
171-
OSPI_HandleTypeDef handle;
172-
#else
173170
QSPI_HandleTypeDef handle;
174-
#endif
175171
QSPIName qspi;
176172
PinName io0;
177173
PinName io1;

targets/TARGET_STM/TARGET_STM32H7/PeripheralNames.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,15 @@ typedef enum {
107107
#endif
108108
} QSPIName;
109109

110+
#if defined OCTOSPI1_R_BASE
111+
typedef enum {
112+
OSPI_1 = (int)OCTOSPI1_R_BASE,
113+
#if defined OCTOSPI2_R_BASE
114+
OSPI_2 = (int)OCTOSPI2_R_BASE,
115+
#endif
116+
} OSPIName;
117+
#endif
118+
110119
typedef enum {
111120
#if USB_OTG_FS_PERIPH_BASE
112121
USB_FS = (int)USB_OTG_FS_PERIPH_BASE,

targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H7A3xIQ/TARGET_NUCLEO_H7A3ZI_Q/PeripheralPins.c

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -466,83 +466,82 @@ MBED_WEAK const PinMap PinMap_QSPI_SSEL[] = {
466466

467467
//*** OCTOSPI ***
468468

469-
#if DEVICE_OSPI
470-
MBED_WEAK const PinMap PinMap_OCTO_DATA0[] = {
469+
MBED_WEAK const PinMap PinMap_OSPI_DATA0[] = {
471470
{PB_1, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0
472471
{PC_9, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0
473472
{PD_11, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0
474473
{PF_8, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0
475474
{NC, NC, 0}
476475
};
477476

478-
MBED_WEAK const PinMap PinMap_OCTO_DATA1[] = {
477+
MBED_WEAK const PinMap PinMap_OSPI_DATA1[] = {
479478
{PB_0, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 // Connected to LD1 (Green Led)
480479
{PC_10, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1
481480
{PD_12, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1
482481
{PF_9, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1
483482
{NC, NC, 0}
484483
};
485484

486-
MBED_WEAK const PinMap PinMap_OCTO_DATA2[] = {
485+
MBED_WEAK const PinMap PinMap_OSPI_DATA2[] = {
487486
{PA_7, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2
488487
{PE_2, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2
489488
{PF_7, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2
490489
{NC, NC, 0}
491490
};
492491

493-
MBED_WEAK const PinMap PinMap_OCTO_DATA3[] = {
492+
MBED_WEAK const PinMap PinMap_OSPI_DATA3[] = {
494493
{PA_1, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3
495494
{PA_6, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3
496495
{PD_13, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3
497496
{PF_6, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3
498497
{NC, NC, 0}
499498
};
500499

501-
MBED_WEAK const PinMap PinMap_OCTO_DATA4[] = {
500+
MBED_WEAK const PinMap PinMap_OSPI_DATA4[] = {
502501
{PC_1, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4
503502
{PD_4, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4
504503
{PE_7, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4
505504
{NC, NC, 0}
506505
};
507506

508-
MBED_WEAK const PinMap PinMap_OCTO_DATA5[] = {
507+
MBED_WEAK const PinMap PinMap_OSPI_DATA5[] = {
509508
{PD_5, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5
510509
{PE_8, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5
511510
{NC, NC, 0}
512511
};
513512

514-
MBED_WEAK const PinMap PinMap_OCTO_DATA6[] = {
513+
MBED_WEAK const PinMap PinMap_OSPI_DATA6[] = {
515514
{PD_6, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6
516515
{PE_9, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6
517516
{PG_9, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6
518517
{PG_10, OSPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO6
519518
{NC, NC, 0}
520519
};
521520

522-
MBED_WEAK const PinMap PinMap_OCTO_DATA7[] = {
521+
MBED_WEAK const PinMap PinMap_OSPI_DATA7[] = {
523522
{PD_7, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7
524523
{PE_10, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7
525524
{PG_11, OSPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO7
526525
{PG_14, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7
527526
{NC, NC, 0}
528527
};
529528

530-
MBED_WEAK const PinMap PinMap_OCTO_DQS[] = {
529+
MBED_WEAK const PinMap PinMap_OSPI_DQS[] = {
531530
{PA_1, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_OCTOSPIM_P1)}, // OCTOSPIM_P1_DQS
532531
{PB_2, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_DQS
533532
{PC_5, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_DQS
534533
{PG_7, OSPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_DQS // Connected to USB_FS_OVCR [STMPS2141STR_FAULT]
535534
{NC, NC, 0}
536535
};
537536

538-
MBED_WEAK const PinMap PinMap_OCTO_SCLK[] = {
537+
MBED_WEAK const PinMap PinMap_OSPI_SCLK[] = {
539538
{PA_3, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK
540539
{PB_2, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK
541540
{PF_10, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK // Connected to USB_FS_PWR_EN [STMPS2141STR_EN]
542541
{NC, NC, 0}
543542
};
544543

545-
MBED_WEAK const PinMap PinMap_OCTO_SSEL[] = {
544+
MBED_WEAK const PinMap PinMap_OSPI_SSEL[] = {
546545
{PB_6, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS
547546
{PB_10, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS
548547
{PC_11, OSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS
@@ -551,7 +550,6 @@ MBED_WEAK const PinMap PinMap_OCTO_SSEL[] = {
551550
{PG_12, OSPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_OCTOSPIM_P2)}, // OCTOSPIM_P2_NCS
552551
{NC, NC, 0}
553552
};
554-
#endif
555553

556554
//*** USBDEVICE ***
557555

0 commit comments

Comments
 (0)