stm32: spi: Standard mode selection

Allow setting cpol/cpha via standard mode numbers, instead of separate calls
for each bit.
This commit is contained in:
Kuldeep Singh Dhaka 2014-07-25 02:10:12 +05:30 committed by Karl Palsson
parent fb1a365423
commit c28d7bc187
2 changed files with 26 additions and 0 deletions

View File

@ -391,6 +391,7 @@ void spi_enable_tx_dma(uint32_t spi);
void spi_disable_tx_dma(uint32_t spi);
void spi_enable_rx_dma(uint32_t spi);
void spi_disable_rx_dma(uint32_t spi);
void spi_set_standard_mode(uint32_t spi, uint8_t mode);
END_DECLS

View File

@ -709,4 +709,29 @@ void spi_disable_rx_dma(uint32_t spi)
SPI_CR2(spi) &= ~SPI_CR2_RXDMAEN;
}
/*---------------------------------------------------------------------------*/
/** @brief SPI Standard Mode selection
@details Set SPI standard Modes
Mode | CPOL | CPHA
---- | ---- | ----
0 | 0 | 0
1 | 0 | 1
2 | 1 | 0
3 | 1 | 1
@param[in] spi Unsigned int32. SPI peripheral identifier @ref spi_reg_base.
@param[in] mode Unsigned int8. Standard SPI mode (0, 1, 2, 3)
@sa spi_set_clock_phase_0 spi_set_clock_phase_1
@sa spi_set_clock_polarity_0 spi_set_clock_polarity_1
*/
void spi_set_standard_mode(uint32_t spi, uint8_t mode)
{
if(mode > 3) {
return;
}
uint32_t reg32 = SPI_CR1(spi) & ~(SPI_CR1_CPOL | SPI_CR1_CPHA);
SPI_CR1(spi) = reg32 | mode;
}
/**@}*/