summaryrefslogtreecommitdiff
path: root/i2c/stm32_i2c.h
diff options
context:
space:
mode:
authorVegard Storheil Eriksen <zyp@jvnv.net>2022-04-16 20:44:24 +0200
committerVegard Storheil Eriksen <zyp@jvnv.net>2022-04-16 21:01:57 +0200
commit4ba824dab86433bb5295878f2380a9bd9536d67e (patch)
tree0b8a25c8c65b350f2e2266c9992a385c0ec9c681 /i2c/stm32_i2c.h
parent32df2ae55601f1ad135247ad79a913514d018032 (diff)
i2c: stm32: Add v2 support.
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;
+};