48 lines
825 B
C++
48 lines
825 B
C++
#pragma once
|
|
|
|
#include "../io/io.hpp"
|
|
|
|
namespace spi {
|
|
|
|
enum class ClockDiv {
|
|
DIV_4 = 0,
|
|
DIV_16 = 1,
|
|
DIV_64 = 2,
|
|
DIV_128 = 3,
|
|
|
|
DIV_2X_2 = 4,
|
|
DIV_2X_8 = 5,
|
|
DIV_2X_32 = 6,
|
|
DIV_2X_64 = 7,
|
|
};
|
|
|
|
enum class Mode {
|
|
MODE_0 = 0,
|
|
MODE_1 = 1,
|
|
MODE_2 = 2,
|
|
MODE_3 = 3,
|
|
};
|
|
|
|
enum class Side {
|
|
MASTER,
|
|
SLAVE,
|
|
};
|
|
|
|
enum class BitOrder {
|
|
LSB_FIRST,
|
|
MSB_FIRST,
|
|
};
|
|
|
|
template <ClockDiv freq = ClockDiv::DIV_128, Mode mode = Mode::MODE_0, Side side = Side::MASTER,
|
|
BitOrder bitOrder = BitOrder::MSB_FIRST, io::P ssPin = io::P::B2, bool pullup = false>
|
|
struct Config {
|
|
static constexpr auto FREQ = freq;
|
|
static constexpr auto MODE = mode;
|
|
static constexpr auto SIDE = side;
|
|
static constexpr auto BIT_ORDER = bitOrder;
|
|
static constexpr auto SS_PIN = ssPin;
|
|
static constexpr auto PULLUP = pullup;
|
|
};
|
|
|
|
} // namespace spi
|