git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9481 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
6483a05d14
commit
331be6761d
|
@ -89,6 +89,27 @@ static void qspi_lld_serve_interrupt(QSPIDriver *qspip) {
|
||||||
/* Driver interrupt handlers. */
|
/* Driver interrupt handlers. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
#if STM32_QSPI_USE_QUADSPI1 || defined(__DOXYGEN__)
|
||||||
|
#if !defined(STM32_QUADSPI1_SUPPRESS_ISR)
|
||||||
|
#if !defined(STM32_QUADSPI1_HANDLER)
|
||||||
|
#error "STM32_QUADSPI1_HANDLER not defined"
|
||||||
|
#endif
|
||||||
|
/**
|
||||||
|
* @brief STM32_QUADSPI1_HANDLER interrupt handler.
|
||||||
|
*
|
||||||
|
* @isr
|
||||||
|
*/
|
||||||
|
OSAL_IRQ_HANDLER(STM32_QUADSPI1_HANDLER) {
|
||||||
|
|
||||||
|
OSAL_IRQ_PROLOGUE();
|
||||||
|
|
||||||
|
qspi_lld_serve_interrupt(&QSPID1);
|
||||||
|
|
||||||
|
OSAL_IRQ_EPILOGUE();
|
||||||
|
}
|
||||||
|
#endif /* !defined(STM32_QUADSPI1_SUPPRESS_ISR) */
|
||||||
|
#endif /* STM32_QSPI_USE_QUADSPI1 */
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Driver exported functions. */
|
/* Driver exported functions. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -111,6 +132,7 @@ void qspi_lld_init(void) {
|
||||||
STM32_DMA_CR_MINC |
|
STM32_DMA_CR_MINC |
|
||||||
STM32_DMA_CR_DMEIE |
|
STM32_DMA_CR_DMEIE |
|
||||||
STM32_DMA_CR_TEIE;
|
STM32_DMA_CR_TEIE;
|
||||||
|
nvicEnableVector(STM32_QUADSPI1_NUMBER, STM32_QSPI_QUADSPI1_IRQ_PRIORITY);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +150,7 @@ void qspi_lld_start(QSPIDriver *qspip) {
|
||||||
#if STM32_QSPI_USE_QUADSPI1
|
#if STM32_QSPI_USE_QUADSPI1
|
||||||
if (&QSPID1 == qspip) {
|
if (&QSPID1 == qspip) {
|
||||||
bool b = dmaStreamAllocate(qspip->dma,
|
bool b = dmaStreamAllocate(qspip->dma,
|
||||||
STM32_QSPI_QUADSPI1_IRQ_PRIORITY,
|
STM32_QSPI_QUADSPI1_DMA_IRQ_PRIORITY,
|
||||||
(stm32_dmaisr_t)qspi_lld_serve_dma_interrupt,
|
(stm32_dmaisr_t)qspi_lld_serve_dma_interrupt,
|
||||||
(void *)qspip);
|
(void *)qspip);
|
||||||
osalDbgAssert(!b, "stream already allocated");
|
osalDbgAssert(!b, "stream already allocated");
|
||||||
|
@ -186,10 +208,8 @@ void qspi_lld_stop(QSPIDriver *qspip) {
|
||||||
*/
|
*/
|
||||||
void qspi_lld_command(QSPIDriver *qspip, const qspi_command_t *cmdp) {
|
void qspi_lld_command(QSPIDriver *qspip, const qspi_command_t *cmdp) {
|
||||||
|
|
||||||
qspip->qspi->CCR = cmdp->cfg;
|
|
||||||
if ((cmdp->cfg & QSPI_CFG_ALT_MODE_MASK) != QSPI_CFG_ALT_MODE_NONE) {
|
|
||||||
qspip->qspi->ABR = cmdp->alt;
|
qspip->qspi->ABR = cmdp->alt;
|
||||||
}
|
qspip->qspi->CCR = cmdp->cfg;
|
||||||
if ((cmdp->cfg & QSPI_CFG_ADDR_MODE_MASK) != QSPI_CFG_ADDR_MODE_NONE) {
|
if ((cmdp->cfg & QSPI_CFG_ADDR_MODE_MASK) != QSPI_CFG_ADDR_MODE_NONE) {
|
||||||
qspip->qspi->AR = cmdp->addr;
|
qspip->qspi->AR = cmdp->addr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,13 @@
|
||||||
#define STM32_QSPI_QUADSPI1_DMA_PRIORITY 1
|
#define STM32_QSPI_QUADSPI1_DMA_PRIORITY 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief QUADSPI1 DMA interrupt priority level setting.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_QSPI_QUADSPI1_DMA_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_QSPI_QUADSPI1_DMA_IRQ_PRIORITY 10
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief QUADSPI DMA error hook.
|
* @brief QUADSPI DMA error hook.
|
||||||
*/
|
*/
|
||||||
|
@ -97,11 +104,21 @@
|
||||||
#error "Invalid IRQ priority assigned to QUADSPI1"
|
#error "Invalid IRQ priority assigned to QUADSPI1"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if STM32_QSPI_USE_QUADSPI1 && \
|
||||||
|
!OSAL_IRQ_IS_VALID_PRIORITY(STM32_QSPI_QUADSPI1_DMA_IRQ_PRIORITY)
|
||||||
|
#error "Invalid IRQ priority assigned to QUADSPI1 DMA"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if STM32_QSPI_USE_QUADSPI1 && \
|
#if STM32_QSPI_USE_QUADSPI1 && \
|
||||||
!STM32_DMA_IS_VALID_PRIORITY(STM32_QSPI_QUADSPI1_DMA_PRIORITY)
|
!STM32_DMA_IS_VALID_PRIORITY(STM32_QSPI_QUADSPI1_DMA_PRIORITY)
|
||||||
#error "Invalid DMA priority assigned to QUADSPI1"
|
#error "Invalid DMA priority assigned to QUADSPI1"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (STM32_QSPI_QUADSPI1_PRESCALER_VALUE < 1) || \
|
||||||
|
(STM32_QSPI_QUADSPI1_PRESCALER_VALUE > 256)
|
||||||
|
#error "STM32_QSPI_QUADSPI1_PRESCALER_VALUE not within 1..256"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The following checks are only required when there is a DMA able to
|
/* The following checks are only required when there is a DMA able to
|
||||||
reassign streams to different channels.*/
|
reassign streams to different channels.*/
|
||||||
#if STM32_ADVANCED_DMA
|
#if STM32_ADVANCED_DMA
|
||||||
|
|
|
@ -211,9 +211,11 @@
|
||||||
|
|
||||||
/* QUADSPI attributes.*/
|
/* QUADSPI attributes.*/
|
||||||
#define STM32_HAS_QUADSPI1 TRUE
|
#define STM32_HAS_QUADSPI1 TRUE
|
||||||
|
#define STM32_QUADSPI1_HANDLER Vector15C
|
||||||
|
#define STM32_QUADSPI1_NUMBER 71
|
||||||
#define STM32_QUADSPI1_DMA_MSK (STM32_DMA_STREAM_ID_MSK(1, 5) |\
|
#define STM32_QUADSPI1_DMA_MSK (STM32_DMA_STREAM_ID_MSK(1, 5) |\
|
||||||
STM32_DMA_STREAM_ID_MSK(2, 7))
|
STM32_DMA_STREAM_ID_MSK(2, 7))
|
||||||
#define STM32_QUADSPI1_DMA_CHN 0x03000000
|
#define STM32_QUADSPI1_DMA_CHN 0x03050000
|
||||||
|
|
||||||
/* RTC attributes.*/
|
/* RTC attributes.*/
|
||||||
#define STM32_HAS_RTC TRUE
|
#define STM32_HAS_RTC TRUE
|
||||||
|
|
Loading…
Reference in New Issue