[ion/device] Add SPI registers

Change-Id: I5e91a31e0c4bfc11057714e57e7daad0eba41da3
This commit is contained in:
Romain Goyet
2017-02-27 09:46:05 +01:00
parent 34fa1a4062
commit d0300ff457
3 changed files with 37 additions and 0 deletions

View File

@@ -74,6 +74,7 @@ public:
class APB1ENR : Register32 {
public:
REGS_BOOL_FIELD(TIM3EN, 1);
REGS_BOOL_FIELD(SPI3EN, 15);
REGS_BOOL_FIELD(PWREN, 28);
};

View File

@@ -13,6 +13,7 @@
#include "rcc.h"
#include "rng.h"
#include "sdio.h"
#include "spi.h"
#include "syscfg.h"
#include "tim.h"

35
ion/src/device/regs/spi.h Normal file
View File

@@ -0,0 +1,35 @@
#ifndef REGS_SPI_H
#define REGS_SPI_H
#include "register.h"
class SPI {
public:
class CR1 : Register16 {
public:
REGS_BOOL_FIELD(SPE, 6);
REGS_BOOL_FIELD(LSBFIRST, 7);
REGS_BOOL_FIELD(SSI, 8);
REGS_BOOL_FIELD(SSM, 9);
};
class SR : Register16 {
public:
REGS_BOOL_FIELD(RXNE, 0);
REGS_BOOL_FIELD(TXE, 1);
};
class DR : public Register16 {
};
constexpr SPI(int i) : m_index(i) {}
constexpr operator int() const { return m_index; }
REGS_REGISTER_AT(CR1, 0x00);
REGS_REGISTER_AT(SR, 0x08);
REGS_REGISTER_AT(DR, 0x0C);
private:
constexpr uint32_t Base() const {
return ((uint32_t []){0x40013000, 0x40003800, 0x40003C00})[m_index-1];
};
int m_index;
};
#endif