mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-core.git
synced 2025-12-18 01:08:03 +00:00
Add SPI subdir
This commit is contained in:
114
include/sta/spi/settings.hpp
Normal file
114
include/sta/spi/settings.hpp
Normal file
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* @file
|
||||
* @brief SPI settings.
|
||||
*/
|
||||
#ifndef STA_SPI_SETTINGS_HPP
|
||||
#define STA_SPI_SETTINGS_HPP
|
||||
|
||||
/**
|
||||
* @defgroup staCoreSPI SPI
|
||||
* @ingroup staCore
|
||||
* @brief SPI interface.
|
||||
*/
|
||||
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
|
||||
namespace sta
|
||||
{
|
||||
/**
|
||||
* @ingroup staCoreSPI
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @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_SPI_SETTINGS_HPP
|
||||
Reference in New Issue
Block a user