QSPI STM32: add QSPI_x support to pinnames

pull/6106/head
Martin Kojtal 2017-12-05 11:38:47 +00:00
parent b6e0de36bf
commit 7de6aba0ee
3 changed files with 21 additions and 7 deletions

View File

@ -92,6 +92,10 @@ typedef enum {
CAN_2 = (int)CAN2_BASE CAN_2 = (int)CAN2_BASE
} CANName; } CANName;
typedef enum {
QSPI_1 = (int)QSPI_R_BASE,
} QSPIName;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -347,21 +347,21 @@ MBED_WEAK const PinMap PinMap_CAN_TD[] = {
const PinMap PinMap_QSPI_DATA[] = { const PinMap PinMap_QSPI_DATA[] = {
{PF_6, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)}, {PF_6, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
{PF_7, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)}, {PF_7, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
{PF_8, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)}, {PF_8, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
{PF_9, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)}, {PF_9, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
{NC, NC, 0} {NC, NC, 0}
}; };
const PinMap PinMap_QSPI_SCLK[] = { const PinMap PinMap_QSPI_SCLK[] = {
{PF_10, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)}, {PF_10, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},
{NC, NC, 0} {NC, NC, 0}
}; };
const PinMap PinMap_QSPI_SSEL[] = { const PinMap PinMap_QSPI_SSEL[] = {
{PB_6, 0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)}, {PB_6, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},
{NC, NC, 0} {NC, NC, 0}
}; };

View File

@ -137,7 +137,17 @@ qspi_status_t qspi_init(qspi_t *obj, PinName io0, PinName io1, PinName io2, PinN
obj->handle.Init.ClockMode = mode == 0 ? QSPI_CLOCK_MODE_0 : QSPI_CLOCK_MODE_3; obj->handle.Init.ClockMode = mode == 0 ? QSPI_CLOCK_MODE_0 : QSPI_CLOCK_MODE_3;
obj->handle.Instance = QUADSPI; QSPIName qspi_data_first = (SPIName)pinmap_merge(io0, io1);
QSPIName qspi_data_second = (SPIName)pinmap_merge(io1, io2);
QSPIName qspi_data_third = (SPIName)pinmap_merge(io2, io3);
if (qspi_data_first != qspi_data_second || qspi_data_second != qspi_data_third ||
qspi_data_first != qspi_data_third) {
return QSPI_STATUS_INVALID_PARAMETER;
}
// tested all combinations, take first
obj->handle.Instance = (QUADSPI_TypeDef *)qspi_data_first;
// TODO pinmap here for pins (enable clock) // TODO pinmap here for pins (enable clock)
pinmap_pinout(io0, PinMap_QSPI_DATA); pinmap_pinout(io0, PinMap_QSPI_DATA);