Skip to content

Commit 2766672

Browse files
0xc0170maciejbocianski
authored andcommitted
QSPI STM32: add QSPI_x support to pinnames
1 parent 660d250 commit 2766672

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F469xI/TARGET_DISCO_F469NI/PeripheralNames.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ typedef enum {
9292
CAN_2 = (int)CAN2_BASE
9393
} CANName;
9494

95+
typedef enum {
96+
QSPI_1 = (int)QSPI_R_BASE,
97+
} QSPIName;
98+
9599
#ifdef __cplusplus
96100
}
97101
#endif

targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F469xI/TARGET_DISCO_F469NI/PeripheralPins.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -391,21 +391,21 @@ MBED_WEAK const PinMap PinMap_CAN_TD[] = {
391391

392392

393393
const PinMap PinMap_QSPI_DATA[] = {
394-
{PF_6, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
395-
{PF_7, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
396-
{PF_8, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
397-
{PF_9, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
394+
{PF_6, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
395+
{PF_7, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
396+
{PF_8, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
397+
{PF_9, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
398398

399399
{NC, NC, 0}
400400
};
401401

402402
const PinMap PinMap_QSPI_SCLK[] = {
403-
{PF_10, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
403+
{PF_10, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
404404
{NC, NC, 0}
405405
};
406406

407407
const PinMap PinMap_QSPI_SSEL[] = {
408-
{PB_6, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
408+
{PB_6, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
409409
{NC, NC, 0}
410410
};
411411

targets/TARGET_STM/qspi_api.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,17 @@ qspi_status_t qspi_init(qspi_t *obj, PinName io0, PinName io1, PinName io2, PinN
137137

138138
obj->handle.Init.ClockMode = mode == 0 ? QSPI_CLOCK_MODE_0 : QSPI_CLOCK_MODE_3;
139139

140-
obj->handle.Instance = QUADSPI;
140+
QSPIName qspi_data_first = (SPIName)pinmap_merge(io0, io1);
141+
QSPIName qspi_data_second = (SPIName)pinmap_merge(io1, io2);
142+
QSPIName qspi_data_third = (SPIName)pinmap_merge(io2, io3);
143+
144+
if (qspi_data_first != qspi_data_second || qspi_data_second != qspi_data_third ||
145+
qspi_data_first != qspi_data_third) {
146+
return QSPI_STATUS_INVALID_PARAMETER;
147+
}
148+
149+
// tested all combinations, take first
150+
obj->handle.Instance = (QUADSPI_TypeDef *)qspi_data_first;
141151

142152
// TODO pinmap here for pins (enable clock)
143153
pinmap_pinout(io0, PinMap_QSPI_DATA);

0 commit comments

Comments
 (0)