git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4220 35acf78f-673a-0410-8e92-d51de3d6d3f4
parent
9be1c67db2
commit
31149b2ffb
|
@ -195,14 +195,14 @@
|
|||
/**
|
||||
* @brief SSP0 clock.
|
||||
*/
|
||||
#define LPC11xx_SERIAL_SSP0_PCLK \
|
||||
(LPC11xx_MAINCLK / LPC11xx_SERIAL_SSP0CLKDIV)
|
||||
#define LPC11xx_SPI_SSP0_PCLK \
|
||||
(LPC11xx_MAINCLK / LPC11xx_SPI_SSP0CLKDIV)
|
||||
|
||||
/**
|
||||
* @brief SSP1 clock.
|
||||
*/
|
||||
#define LPC11xx_SERIAL_SSP1_PCLK \
|
||||
(LPC11xx_MAINCLK / LPC11xx_SERIAL_SSP1CLKDIV)
|
||||
#define LPC11xx_SPI_SSP1_PCLK \
|
||||
(LPC11xx_MAINCLK / LPC11xx_SPI_SSP1CLKDIV)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
|
|
|
@ -40,6 +40,11 @@
|
|||
SPIDriver SPID1;
|
||||
#endif
|
||||
|
||||
#if LPC13xx_SPI_USE_SSP1 || defined(__DOXYGEN__)
|
||||
/** @brief SPI2 driver identifier.*/
|
||||
SPIDriver SPID2;
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local variables. */
|
||||
/*===========================================================================*/
|
||||
|
@ -143,6 +148,22 @@ CH_IRQ_HANDLER(VectorF4) {
|
|||
}
|
||||
#endif
|
||||
|
||||
#if LPC13xx_SPI_USE_SSP1 || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief SSP1 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
CH_IRQ_HANDLER(Vector124) {
|
||||
|
||||
CH_IRQ_PROLOGUE();
|
||||
|
||||
spi_serve_interrupt(&SPID2);
|
||||
|
||||
CH_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
@ -168,6 +189,14 @@ void spi_lld_init(void) {
|
|||
LPC_IOCON->PIO0_8 = 0xC1; /* MISO0 without resistors. */
|
||||
LPC_IOCON->PIO0_9 = 0xC1; /* MOSI0 without resistors. */
|
||||
#endif /* LPC13xx_SPI_USE_SSP0 */
|
||||
|
||||
#if LPC13xx_SPI_USE_SSP1
|
||||
spiObjectInit(&SPID2);
|
||||
SPID2.ssp = LPC_SSP1;
|
||||
LPC_IOCON->PIO2_1 = 0xC2; /* SCK1 without resistors. */
|
||||
LPC_IOCON->PIO2_2 = 0xC2; /* MISO1 without resistors. */
|
||||
LPC_IOCON->PIO2_3 = 0xC2; /* MOSI1 without resistors. */
|
||||
#endif /* LPC13xx_SPI_USE_SSP0 */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -189,6 +218,15 @@ void spi_lld_start(SPIDriver *spip) {
|
|||
nvicEnableVector(SSP0_IRQn,
|
||||
CORTEX_PRIORITY_MASK(LPC13xx_SPI_SSP0_IRQ_PRIORITY));
|
||||
}
|
||||
#endif
|
||||
#if LPC13xx_SPI_USE_SSP1
|
||||
if (&SPID2 == spip) {
|
||||
LPC_SYSCON->SSP1CLKDIV = LPC13xx_SPI_SSP1CLKDIV;
|
||||
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 18);
|
||||
LPC_SYSCON->PRESETCTRL |= 4;
|
||||
nvicEnableVector(SSP1_IRQn,
|
||||
CORTEX_PRIORITY_MASK(LPC13xx_SPI_SSP1_IRQ_PRIORITY));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
/* Configuration.*/
|
||||
|
@ -219,6 +257,14 @@ void spi_lld_stop(SPIDriver *spip) {
|
|||
LPC_SYSCON->SSP0CLKDIV = 0;
|
||||
nvicDisableVector(SSP0_IRQn);
|
||||
}
|
||||
#endif
|
||||
#if LPC13xx_SPI_USE_SSP1
|
||||
if (&SPID2 == spip) {
|
||||
LPC_SYSCON->PRESETCTRL &= ~4;
|
||||
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1 << 18);
|
||||
LPC_SYSCON->SSP1CLKDIV = 0;
|
||||
nvicDisableVector(SSP1_IRQn);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -118,6 +118,15 @@
|
|||
#define LPC13xx_SPI_USE_SSP0 TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief SPI2 driver enable switch.
|
||||
* @details If set to @p TRUE the support for device SSP1 is included.
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(LPC13xx_SPI_USE_SSP1) || defined(__DOXYGEN__)
|
||||
#define LPC13xx_SPI_USE_SSP1 FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief SSP0 PCLK divider.
|
||||
*/
|
||||
|
@ -125,6 +134,13 @@
|
|||
#define LPC13xx_SPI_SSP0CLKDIV 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief SSP1 PCLK divider.
|
||||
*/
|
||||
#if !defined(LPC13xx_SPI_SSP1CLKDIV) || defined(__DOXYGEN__)
|
||||
#define LPC13xx_SPI_SSP1CLKDIV 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief SPI0 interrupt priority level setting.
|
||||
*/
|
||||
|
@ -132,6 +148,13 @@
|
|||
#define LPC13xx_SPI_SSP0_IRQ_PRIORITY 5
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief SPI1 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(LPC13xx_SPI_SSP1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define LPC13xx_SPI_SSP1_IRQ_PRIORITY 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Overflow error hook.
|
||||
* @details The default action is to stop the system.
|
||||
|
@ -155,7 +178,11 @@
|
|||
#error "invalid LPC13xx_SPI_SSP0CLKDIV setting"
|
||||
#endif
|
||||
|
||||
#if !LPC13xx_SPI_USE_SSP0
|
||||
#if (LPC13xx_SPI_SSP1CLKDIV < 1) || (LPC13xx_SPI_SSP1CLKDIV > 255)
|
||||
#error "invalid LPC13xx_SPI_SSP1CLKDIV setting"
|
||||
#endif
|
||||
|
||||
#if !LPC13xx_SPI_USE_SSP0 && !LPC13xx_SPI_USE_SSP1
|
||||
#error "SPI driver activated but no SPI peripheral assigned"
|
||||
#endif
|
||||
|
||||
|
@ -168,8 +195,14 @@
|
|||
/**
|
||||
* @brief SSP0 clock.
|
||||
*/
|
||||
#define LPC13xx_SERIAL_SSP0_PCLK \
|
||||
(LPC13xx_MAINCLK / LPC13xx_SERIAL_SSP0CLKDIV)
|
||||
#define LPC13xx_SPI_SSP0_PCLK \
|
||||
(LPC13xx_MAINCLK / LPC13xx_SPI_SSP0CLKDIV)
|
||||
|
||||
/**
|
||||
* @brief SSP1 clock.
|
||||
*/
|
||||
#define LPC13xx_SPI_SSP1_PCLK \
|
||||
(LPC13xx_MAINCLK / LPC13xx_SPI_SSP1CLKDIV)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
|
@ -281,6 +314,10 @@ struct SPIDriver {
|
|||
extern SPIDriver SPID1;
|
||||
#endif
|
||||
|
||||
#if LPC13xx_SPI_USE_SSP1 && !defined(__DOXYGEN__)
|
||||
extern SPIDriver SPID2;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
|
|
@ -103,6 +103,8 @@ extern void Vector110(void);
|
|||
extern void Vector114(void);
|
||||
extern void Vector118(void);
|
||||
extern void Vector11C(void);
|
||||
extern void Vector120(void);
|
||||
extern void Vector124(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -129,7 +131,8 @@ void (*_vectors[])(void) = {
|
|||
VectorE0, VectorE4, VectorE8, VectorEC,
|
||||
VectorF0, VectorF4, VectorF8, VectorFC,
|
||||
Vector100, Vector104, Vector108, Vector10C,
|
||||
Vector110, Vector114, Vector118, Vector11C
|
||||
Vector110, Vector114, Vector118, Vector11C,
|
||||
Vector120, Vector124
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -218,5 +221,7 @@ void Vector110(void) __attribute__((weak, alias("_unhandled_exception")));
|
|||
void Vector114(void) __attribute__((weak, alias("_unhandled_exception")));
|
||||
void Vector118(void) __attribute__((weak, alias("_unhandled_exception")));
|
||||
void Vector11C(void) __attribute__((weak, alias("_unhandled_exception")));
|
||||
void Vector120(void) __attribute__((weak, alias("_unhandled_exception")));
|
||||
void Vector124(void) __attribute__((weak, alias("_unhandled_exception")));
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -104,6 +104,8 @@ __vector_table:
|
|||
DCD Vector114
|
||||
DCD Vector118
|
||||
DCD Vector11C
|
||||
DCD Vector120
|
||||
DCD Vector124
|
||||
|
||||
/*
|
||||
* Default interrupt handlers.
|
||||
|
@ -178,6 +180,8 @@ __vector_table:
|
|||
PUBWEAK Vector114
|
||||
PUBWEAK Vector118
|
||||
PUBWEAK Vector11C
|
||||
PUBWEAK Vector120
|
||||
PUBWEAK Vector124
|
||||
PUBLIC _unhandled_exception
|
||||
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
|
@ -253,6 +257,8 @@ Vector110
|
|||
Vector114
|
||||
Vector118
|
||||
Vector11C
|
||||
Vector120
|
||||
Vector124
|
||||
_unhandled_exception
|
||||
b _unhandled_exception
|
||||
|
||||
|
|
|
@ -99,6 +99,8 @@ __Vectors
|
|||
DCD Vector114
|
||||
DCD Vector118
|
||||
DCD Vector11C
|
||||
DCD Vector120
|
||||
DCD Vector124
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
THUMB
|
||||
|
@ -178,6 +180,8 @@ _unhandled_exception PROC
|
|||
EXPORT Vector114 [WEAK]
|
||||
EXPORT Vector118 [WEAK]
|
||||
EXPORT Vector11C [WEAK]
|
||||
EXPORT Vector120 [WEAK]
|
||||
EXPORT Vector124 [WEAK]
|
||||
|
||||
NMIVector
|
||||
HardFaultVector
|
||||
|
@ -249,6 +253,8 @@ Vector110
|
|||
Vector114
|
||||
Vector118
|
||||
Vector11C
|
||||
Vector120
|
||||
Vector124
|
||||
b _unhandled_exception
|
||||
ENDP
|
||||
|
||||
|
|
|
@ -131,6 +131,7 @@
|
|||
3484947)(backported to 2.4.1).
|
||||
- FIX: Fixed various minor documentation errors (bug 3484942)(backported
|
||||
to 2.4.1).
|
||||
- NEW: Added SSP1 capability to the LPC13xx SPI driver.
|
||||
- NEW: Updated vendor headers for LPC11xx and LPC13xx, the new headers
|
||||
support several new devices.
|
||||
- NEW: Demo for STM32F0-Discovery board.
|
||||
|
|
Loading…
Reference in New Issue