mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-core.git
synced 2025-09-29 05:17:33 +00:00
Added I2C support for raspi & first rework of debugging
This commit is contained in:
29
src/bus/spi/device.cpp
Normal file
29
src/bus/spi/device.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
#include <sta/bus/spi/device.hpp>
|
||||
|
||||
#include <sta/assert.hpp>
|
||||
|
||||
|
||||
namespace sta
|
||||
{
|
||||
SPIDevice::SPIDevice(SPI * intf, GpioPin * csPin)
|
||||
: Device{intf}, intf_{intf}, csPin_{csPin}
|
||||
{
|
||||
STA_ASSERT(intf != nullptr);
|
||||
STA_ASSERT(csPin != nullptr);
|
||||
}
|
||||
|
||||
const SPISettings & SPIDevice::settings() const
|
||||
{
|
||||
return intf_->settings();
|
||||
}
|
||||
|
||||
void SPIDevice::select()
|
||||
{
|
||||
csPin_->setState(GpioPinState::GPIO_LOW);
|
||||
}
|
||||
|
||||
void SPIDevice::deselect()
|
||||
{
|
||||
csPin_->setState(GpioPinState::GPIO_HIGH);
|
||||
}
|
||||
} // namespace sta
|
72
src/bus/spi/settings.cpp
Normal file
72
src/bus/spi/settings.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
#include <sta/bus/spi/settings.hpp>
|
||||
|
||||
#include <sta/assert.hpp>
|
||||
#include <sta/lang.hpp>
|
||||
|
||||
|
||||
namespace sta
|
||||
{
|
||||
SPIClkPolarity getSPIClkPolarity(SPIMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case SPIMode::MODE_0:
|
||||
case SPIMode::MODE_1:
|
||||
return SPIClkPolarity::LOW;
|
||||
|
||||
case SPIMode::MODE_2:
|
||||
case SPIMode::MODE_3:
|
||||
return SPIClkPolarity::HIGH;
|
||||
|
||||
default:
|
||||
// Unreachable case
|
||||
STA_ASSERT_MSG(false, "Case for SPIMode enum not handled");
|
||||
STA_UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
SPIClkPhase getSPIClkPhase(SPIMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case SPIMode::MODE_0:
|
||||
case SPIMode::MODE_2:
|
||||
return SPIClkPhase::EDGE_1;
|
||||
|
||||
case SPIMode::MODE_1:
|
||||
case SPIMode::MODE_3:
|
||||
return SPIClkPhase::EDGE_2;
|
||||
|
||||
default:
|
||||
// Unreachable case
|
||||
STA_ASSERT_MSG(false, "Case for SPIMode enum not handled");
|
||||
STA_UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
SPIMode getSPIMode(SPIClkPolarity polarity, SPIClkPhase phase)
|
||||
{
|
||||
if (polarity == SPIClkPolarity::LOW)
|
||||
{
|
||||
if (phase == SPIClkPhase::EDGE_1)
|
||||
{
|
||||
return SPIMode::MODE_0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return SPIMode::MODE_1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (phase == SPIClkPhase::EDGE_1)
|
||||
{
|
||||
return SPIMode::MODE_2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return SPIMode::MODE_3;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace sta
|
17
src/bus/spi/spi.cpp
Normal file
17
src/bus/spi/spi.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <sta/bus/spi/spi.hpp>
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
namespace sta
|
||||
{
|
||||
SPI::SPI(const SPISettings & settings, Mutex * mutex /* = nullptr */)
|
||||
: Interface{mutex}, settings_{settings}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
const SPISettings & SPI::settings()
|
||||
{
|
||||
return settings_;
|
||||
}
|
||||
} // namespace sta
|
Reference in New Issue
Block a user