Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/thirdpin/libopencm3.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Palsson <karlp@tweak.net.au>2018-07-29 23:53:38 +0300
committerKarl Palsson <karlp@tweak.net.au>2018-08-17 03:15:01 +0300
commit0e58ee2f657deb37ce5e1c2b5b297b82a794c3ce (patch)
tree47e51ea2227654778c0c1e2a23237346da3d91d5
parentb8ede60d9d2c54a90b4065fdd9a2cca655495fba (diff)
stm32: support i2c3 properly
I2C3 is on many parts, but wasn't properly supported with the register definitions. Declare them centrally, just depending on the memorymap defining them. On some parts, the rcc bits were defined, but not the base registers. Fixes: https://github.com/libopencm3/libopencm3/issues/820
-rw-r--r--include/libopencm3/stm32/common/i2c_common_v1.h16
-rw-r--r--include/libopencm3/stm32/common/i2c_common_v2.h16
-rw-r--r--include/libopencm3/stm32/f2/i2c.h2
-rw-r--r--include/libopencm3/stm32/f3/memorymap.h1
-rw-r--r--include/libopencm3/stm32/f4/i2c.h2
-rw-r--r--include/libopencm3/stm32/l0/memorymap.h1
-rw-r--r--include/libopencm3/stm32/l4/i2c.h2
7 files changed, 34 insertions, 6 deletions
diff --git a/include/libopencm3/stm32/common/i2c_common_v1.h b/include/libopencm3/stm32/common/i2c_common_v1.h
index e4998c61..16c8982a 100644
--- a/include/libopencm3/stm32/common/i2c_common_v1.h
+++ b/include/libopencm3/stm32/common/i2c_common_v1.h
@@ -47,6 +47,9 @@ specific memorymap.h header before including this header file.*/
@{*/
#define I2C1 I2C1_BASE
#define I2C2 I2C2_BASE
+#ifdef I2C3_BASE
+#define I2C3 I2C3_BASE
+#endif
/**@}*/
/* --- I2C registers ------------------------------------------------------- */
@@ -96,6 +99,19 @@ specific memorymap.h header before including this header file.*/
#define I2C1_TRISE I2C_TRISE(I2C1)
#define I2C2_TRISE I2C_TRISE(I2C2)
+/* Not all parts have i2c3 */
+#ifdef I2C3_BASE
+#define I2C3_CR1 I2C_CR1(I2C3)
+#define I2C3_CR2 I2C_CR2(I2C3)
+#define I2C3_OAR1 I2C_OAR1(I2C3)
+#define I2C3_OAR2 I2C_OAR2(I2C3)
+#define I2C3_DR I2C_DR(I2C3)
+#define I2C3_SR1 I2C_SR1(I2C3)
+#define I2C3_SR2 I2C_SR2(I2C3)
+#define I2C3_CCR I2C_CCR(I2C3)
+#define I2C3_TRISE I2C_TRISE(I2C3)
+#endif
+
/* --- I2Cx_CR1 values ----------------------------------------------------- */
/* SWRST: Software reset */
diff --git a/include/libopencm3/stm32/common/i2c_common_v2.h b/include/libopencm3/stm32/common/i2c_common_v2.h
index c5f5bafe..cd311064 100644
--- a/include/libopencm3/stm32/common/i2c_common_v2.h
+++ b/include/libopencm3/stm32/common/i2c_common_v2.h
@@ -43,6 +43,9 @@ specific memorymap.h header before including this header file.*/
* @{*/
#define I2C1 I2C1_BASE
#define I2C2 I2C2_BASE
+#ifdef I2C3_BASE
+#define I2C3 I2C3_BASE
+#endif
/**@}*/
/* --- I2C registers ------------------------------------------------------- */
@@ -102,6 +105,19 @@ specific memorymap.h header before including this header file.*/
#define I2C1_TXDR I2C_TXDR(I2C1)
#define I2C2_TXDR I2C_TXDR(I2C2)
+/* Not all parts have i2c3 */
+#ifdef I2C3_BASE
+#define I2C3_CR1 I2C_CR1(I2C3)
+#define I2C3_CR2 I2C_CR2(I2C3)
+#define I2C3_OAR1 I2C_OAR1(I2C3)
+#define I2C3_OAR2 I2C_OAR2(I2C3)
+#define I2C3_DR I2C_DR(I2C3)
+#define I2C3_SR1 I2C_SR1(I2C3)
+#define I2C3_SR2 I2C_SR2(I2C3)
+#define I2C3_CCR I2C_CCR(I2C3)
+#define I2C3_TRISE I2C_TRISE(I2C3)
+#endif
+
/* --- I2Cx_CR1 values ----------------------------------------------------- */
/* PECEN: PEC enable */
diff --git a/include/libopencm3/stm32/f2/i2c.h b/include/libopencm3/stm32/f2/i2c.h
index 9c8afc94..a658c112 100644
--- a/include/libopencm3/stm32/f2/i2c.h
+++ b/include/libopencm3/stm32/f2/i2c.h
@@ -35,8 +35,6 @@ LGPL License Terms @ref lgpl_license
/**@{*/
-#define I2C3 I2C3_BASE
-
/**@}*/
#endif
diff --git a/include/libopencm3/stm32/f3/memorymap.h b/include/libopencm3/stm32/f3/memorymap.h
index 0eead68f..53441fad 100644
--- a/include/libopencm3/stm32/f3/memorymap.h
+++ b/include/libopencm3/stm32/f3/memorymap.h
@@ -64,6 +64,7 @@
/* PERIPH_BASE_APB1 + 0x6C00 (0x4000 6C00 - 0x4000 6FFF): Reserved */
#define POWER_CONTROL_BASE (PERIPH_BASE_APB1 + 0x7000)
#define DAC_BASE (PERIPH_BASE_APB1 + 0x7400)
+#define I2C3_BASE (PERIPH_BASE_APB1 + 0x7800)
/* PERIPH_BASE_APB1 + 0x7800 (0x4000 7800 - 0x4000 7FFF): Reserved */
diff --git a/include/libopencm3/stm32/f4/i2c.h b/include/libopencm3/stm32/f4/i2c.h
index 890d412f..e2a65e16 100644
--- a/include/libopencm3/stm32/f4/i2c.h
+++ b/include/libopencm3/stm32/f4/i2c.h
@@ -35,8 +35,6 @@ LGPL License Terms @ref lgpl_license
/**@{*/
-#define I2C3 I2C3_BASE
-
/**@}*/
#endif
diff --git a/include/libopencm3/stm32/l0/memorymap.h b/include/libopencm3/stm32/l0/memorymap.h
index d1466b7d..e384c5c2 100644
--- a/include/libopencm3/stm32/l0/memorymap.h
+++ b/include/libopencm3/stm32/l0/memorymap.h
@@ -51,6 +51,7 @@
#define CRS_BASE (PERIPH_BASE_APB1 + 0x6C00)
#define POWER_CONTROL_BASE (PERIPH_BASE_APB1 + 0x7000)
#define DAC_BASE (PERIPH_BASE_APB1 + 0x7400)
+#define I2C3_BASE (PERIPH_BASE_APB1 + 0x7800)
#define LPTIM1_BASE (PERIPH_BASE_APB1 + 0x7c00)
diff --git a/include/libopencm3/stm32/l4/i2c.h b/include/libopencm3/stm32/l4/i2c.h
index 27a0f362..033d5701 100644
--- a/include/libopencm3/stm32/l4/i2c.h
+++ b/include/libopencm3/stm32/l4/i2c.h
@@ -35,8 +35,6 @@ LGPL License Terms @ref lgpl_license
/**@{*/
-#define I2C3 I2C3_BASE
-
/**@}*/
#endif