cc2538: spi: Add enable and disable functions

This makes it possible to reduce the power consumption when the SPI is unused.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
This commit is contained in:
Benoît Thébaudeau 2013-11-15 15:58:44 +01:00
parent b134e35450
commit e8a8870d1d
2 changed files with 30 additions and 2 deletions

View file

@ -74,8 +74,7 @@
void
spi_init(void)
{
/* Enable the SSI peripheral */
REG(SYS_CTRL_RCGCSSI) |= 1;
spi_enable();
/* Start by disabling the peripheral before configuring it */
REG(SSI0_BASE + SSI_CR1) = 0;
@ -110,4 +109,18 @@ spi_init(void)
/* Enable the SSI */
REG(SSI0_BASE + SSI_CR1) |= SSI_CR1_SSE;
}
/*---------------------------------------------------------------------------*/
void
spi_enable(void)
{
/* Enable the clock for the SSI peripheral */
REG(SYS_CTRL_RCGCSSI) |= 1;
}
/*---------------------------------------------------------------------------*/
void
spi_disable(void)
{
/* Gate the clock for the SSI peripheral */
REG(SYS_CTRL_RCGCSSI) &= ~1;
}
/** @} */

View file

@ -57,6 +57,21 @@
#define SPI_WAITFOREORx() do { \
while(!(REG(SSI0_BASE + SSI_SR) & SSI_SR_RNE)); \
} while (0)
/*---------------------------------------------------------------------------*/
/** \name Arch-specific SPI functions
* @{
*/
/** \brief Enables the SPI peripheral
*/
void spi_enable(void);
/** \brief Disables the SPI peripheral
* \note Call this function to save power when the SPI is unused.
*/
void spi_disable(void);
/** @} */
#endif /* SPI_ARCH_H_ */