summaryrefslogtreecommitdiff
path: root/i2c/stm32_i2c.h
diff options
context:
space:
mode:
Diffstat (limited to 'i2c/stm32_i2c.h')
-rw-r--r--i2c/stm32_i2c.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/i2c/stm32_i2c.h b/i2c/stm32_i2c.h
new file mode 100644
index 0000000..63bda09
--- /dev/null
+++ b/i2c/stm32_i2c.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#include <mmio/mmio.h>
+
+struct STM32_I2C_reg_v1_t {
+ volatile uint32_t CR1;
+ volatile uint32_t CR2;
+ volatile uint32_t OAR1;
+ volatile uint32_t OAR2;
+ volatile uint32_t DR;
+ volatile uint32_t SR1;
+ volatile uint32_t SR2;
+ volatile uint32_t CCR;
+ volatile uint32_t TRISE;
+};
+
+struct STM32_I2C_reg_v2_t {
+ volatile uint32_t CR1;
+ volatile uint32_t CR2;
+ volatile uint32_t OAR1;
+ volatile uint32_t OAR2;
+ volatile uint32_t TIMINGR;
+ volatile uint32_t TIMEOUTR;
+ volatile uint32_t ISR;
+ volatile uint32_t ICR;
+ volatile uint32_t PECR;
+ volatile uint32_t RXDR;
+ volatile uint32_t TXDR;
+};
+
+template <typename T>
+class STM32_I2C_t : public mmio_ptr<T> {
+ public:
+ using mmio_ptr<T>::ptr;
+};