added basic outline of spi structure

interrupts
polymurph 4 years ago
parent 41bfb2cdd7
commit 43a61d02b7

@ -0,0 +1,16 @@
#ifndef _SPI_HPP_
#define _SPI_HPP_
#include <stdint.h>
template <typename Derived>
struct SPI
{
uint8_t trx_u8(const uint8_t& data);
void tx(const uint8_t& data);
uint8_t rx();
};
#endif // _SPI_HPP_

@ -0,0 +1,68 @@
#ifndef _SPICH_HPP_
#define _SPICH_HPP_
#include "pin.hpp"
#include "spi.hpp"
template <typename DerivedPin,
typename DerivedSPI>
struct SPICH
{
SPICH(Pin<DerivedPin>& csPin,
SPI<DerivedSPI>& spi) :
chipSelect(csPin),
spiHwCH(spi)
{
}
uint8_t read_write_u8(const uint8_t& data)
{
uint8_t temp;
chipSelect.write(false);
temp = spiHwCH.trx_u8(data);
chipSelect.write(true);
return temp;
}
void readArray(const uint8_t& address,
uint8_t[] buffer,
const uint8_t& len)
{
chipSelect.write(false);
spiHwCH.tx(address);
for(uint8_t i = 0; i < len;i++) {
buffer[i] = spiHwCH.rx();
};
chipSelect.write(true);
}
void writeArray(const uint8_t& address,
const uint8_t[] buffer,
const uint8_t& len)
{
chipSelect.write(false);
spiHwCH.tx(address);
for(uint8_t i = 0; i < len;i++) {
spiHwCH.tx(buffer[i]);
};
chipSelect.write(true);
}
private:
// hardware resources
Pin<DerivedPin> chipSelect;
SPI<DerivedSPI> spiHwCH;
};
#endif // _SPICH_HPP_

Binary file not shown.
Loading…
Cancel
Save