mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-core.git
synced 2025-06-10 16:55:58 +00:00
113 lines
2.5 KiB
C++
113 lines
2.5 KiB
C++
/**
|
|
* @file
|
|
* @brief SPI bus settings.
|
|
*/
|
|
#ifndef STA_CORE_SPI_SETTINGS_HPP
|
|
#define STA_CORE_SPI_SETTINGS_HPP
|
|
|
|
/**
|
|
* @defgroup sta_core_spi SPI
|
|
* @ingroup sta_core
|
|
* @brief SPI interface.
|
|
*/
|
|
|
|
#include <cstdint>
|
|
|
|
namespace sta
|
|
{
|
|
/**
|
|
* @ingroup sta_core_spi
|
|
* @{
|
|
*/
|
|
|
|
|
|
/**
|
|
* @brief %SPI clock polarity.
|
|
*/
|
|
enum class SPIClkPolarity
|
|
{
|
|
LOW, /**< Low idle clock */
|
|
HIGH /**< High idle clock */
|
|
};
|
|
|
|
/**
|
|
* @brief %SPI clock phase.
|
|
*/
|
|
enum class SPIClkPhase
|
|
{
|
|
EDGE_1, /**< Sample on first edge, shift out on second edge */
|
|
EDGE_2 /**< Shift out on first edge, sample on second edge */
|
|
};
|
|
|
|
/**
|
|
* @brief %SPI clock mode.
|
|
*/
|
|
enum class SPIMode
|
|
{
|
|
MODE_0, /**< Low idle clock, sample on rising edge, shift out on falling edge */
|
|
MODE_1, /**< Low idle clock, sample on falling edge, shift out on rising edge */
|
|
MODE_2, /**< High idle clock, sample on rising edge, shift out on falling edge */
|
|
MODE_3 /**< High idle clock, sample on falling edge, shift out on rising edge */
|
|
};
|
|
|
|
/**
|
|
* @brief %SPI data size.
|
|
*/
|
|
enum class SPIDataSize
|
|
{
|
|
SIZE_8, /**< 8-bit data size */
|
|
SIZE_16 /**< 16-bit data size */
|
|
};
|
|
|
|
/**
|
|
* @brief %SPI bit order.
|
|
*/
|
|
enum class SPIBitOrder
|
|
{
|
|
MSB, /**< Send most significant bit first */
|
|
LSB /**< Send least significant bit first */
|
|
};
|
|
|
|
|
|
/**
|
|
* @brief %SPI settings.
|
|
*/
|
|
struct SPISettings
|
|
{
|
|
SPIMode mode; /**< %SPI clock mode */
|
|
SPIDataSize dataSize; /**< %SPI data size */
|
|
SPIBitOrder bitOrder; /**< %SPI bit order */
|
|
uint32_t clkSpeed; /**< %SPI clock speed */
|
|
};
|
|
|
|
|
|
/**
|
|
* @brief Get %SPI clock polarity from clock mode.
|
|
*
|
|
* @param mode %SPI clock mode
|
|
* @return %SPI clock polarity
|
|
*/
|
|
SPIClkPolarity getSPIClkPolarity(SPIMode mode);
|
|
/**
|
|
* @brief Get %SPI clock phase from clock mode.
|
|
*
|
|
* @param mode %SPI clock mode
|
|
* @return %SPI clock phase
|
|
*/
|
|
SPIClkPhase getSPIClkPhase(SPIMode mode);
|
|
/**
|
|
* @brief Get %SPI clock mode from clock phase and polarity.
|
|
*
|
|
* @param polarity %SPI clock polarity
|
|
* @param phase %SPI clock phase
|
|
* @return %SPI clock mode
|
|
*/
|
|
SPIMode getSPIMode(SPIClkPolarity polarity, SPIClkPhase phase);
|
|
|
|
|
|
/** @} */
|
|
} // namespace sta
|
|
|
|
|
|
#endif // STA_CORE_SPI_SETTINGS_HPP
|