You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ac...@apache.org on 2019/12/20 21:55:38 UTC
[incubator-nuttx] 01/02: boards/arm/stm32f0l0g0/nucleo-g070rb:
Enable i2C
This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch stage
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit dfaafc31d0a4e74fcb7b1987e9754f4e4394ef2d
Author: Guillherme Amaral <gv...@certi.org.br>
AuthorDate: Mon Dec 16 16:36:26 2019 -0300
boards/arm/stm32f0l0g0/nucleo-g070rb: Enable i2C
---
boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt | 1 +
.../nucleo-g070rb/configs/nsh/defconfig | 5 ++
.../stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c | 65 ++++++++++++++++++++++
3 files changed, 71 insertions(+)
diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt b/boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt
index 73c0433..932a270 100644
--- a/boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt
+++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt
@@ -12,3 +12,4 @@ STATUS
2019-10-04: Enable basic timer TIM6. Timer example working.
2019-10-17: Add PWM support. PWM example working.
2019-11-04: Add button driver and GPIO driver support. Buttons and GPIO examples working.
+ 2019-12-20: Add i2C driver driver support and i2C tool.
diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/configs/nsh/defconfig b/boards/arm/stm32f0l0g0/nucleo-g070rb/configs/nsh/defconfig
index 2843665..da26cc3 100644
--- a/boards/arm/stm32f0l0g0/nucleo-g070rb/configs/nsh/defconfig
+++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/configs/nsh/defconfig
@@ -34,6 +34,9 @@ CONFIG_EXAMPLES_GPIO=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_EXAMPLES_PWM=y
CONFIG_EXAMPLES_TIMER=y
+CONFIG_I2C=y
+CONFIG_I2CTOOL_MAXADDR=0xff
+CONFIG_I2CTOOL_MINADDR=0x00
CONFIG_INPUT=y
CONFIG_INTELHEX_BINARY=y
CONFIG_MAX_TASKS=8
@@ -60,6 +63,7 @@ CONFIG_START_DAY=19
CONFIG_START_MONTH=5
CONFIG_START_YEAR=2013
CONFIG_STDIO_DISABLE_BUFFERING=y
+CONFIG_STM32F0L0G0_I2C1=y
CONFIG_STM32F0L0G0_PWM_MULTICHAN=y
CONFIG_STM32F0L0G0_PWR=y
CONFIG_STM32F0L0G0_TIM14=y
@@ -100,6 +104,7 @@ CONFIG_STM32F0L0G0_TIM3_CHANNEL4=y
CONFIG_STM32F0L0G0_TIM3_PWM=y
CONFIG_STM32F0L0G0_TIM6=y
CONFIG_STM32F0L0G0_USART2=y
+CONFIG_SYSTEM_I2CTOOL=y
CONFIG_SYSTEM_NSH=y
CONFIG_TASK_NAME_SIZE=0
CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1536
diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c b/boards/arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c
index 53c640c..e3a4263 100644
--- a/boards/arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c
+++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c
@@ -3,6 +3,10 @@
*
* Copyright (C) 2019 Gregory Nutt. All rights reserved.
* Author: Daniel Pereira Volpato <dp...@certi.org.br>
+ * Guillherme da Silva Amaral <gv...@certi.org.br>
+ *
+ * Based on: boards/arm/stm32h7/stm32h747i-disco/src/stm32_bringup.c
+ * Author: Gregory Nutt <gn...@nuttx.org>
*
* Based on: boards/arm/stm32f0l0g0/nucleo-g071rb/src/stm32_bringup.c
* Author: Mateusz Szafoni <ra...@railab.me>
@@ -50,6 +54,7 @@
#include <nuttx/leds/userled.h>
#include "nucleo-g070rb.h"
+#include "stm32_i2c.h"
/****************************************************************************
* Pre-processor Definitions
@@ -70,6 +75,62 @@
#endif
/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: stm32_i2c_register
+ *
+ * Description:
+ * Register one I2C drivers for the I2C tool.
+ *
+ ****************************************************************************/
+
+#if defined(CONFIG_I2C) && defined(CONFIG_SYSTEM_I2CTOOL)
+static void stm32_i2c_register(int bus)
+{
+ struct i2c_master_s *i2c;
+ int ret;
+
+ i2c = stm32_i2cbus_initialize(bus);
+ if (i2c == NULL)
+ {
+ syslog(LOG_ERR, "ERROR: Failed to get I2C%d interface\n", bus);
+ }
+ else
+ {
+ ret = i2c_register(i2c, bus);
+ if (ret < 0)
+ {
+ syslog(LOG_ERR, "ERROR: Failed to register I2C%d driver: %d\n",
+ bus, ret);
+ stm32_i2cbus_uninitialize(i2c);
+ }
+ }
+}
+#endif
+
+/****************************************************************************
+ * Name: stm32_i2ctool
+ *
+ * Description:
+ * Register I2C drivers for the I2C tool.
+ *
+ ****************************************************************************/
+
+#if defined(CONFIG_I2C) && defined(CONFIG_SYSTEM_I2CTOOL)
+static void stm32_i2ctool(void)
+{
+#ifdef CONFIG_STM32F0L0G0_I2C1
+ stm32_i2c_register(1);
+#endif
+#ifdef CONFIG_STM32F0L0G0_I2C2
+ stm32_i2c_register(2);
+#endif
+}
+#endif
+
+/****************************************************************************
* Public Functions
****************************************************************************/
@@ -102,6 +163,10 @@ int stm32_bringup(void)
}
#endif
+#if defined(CONFIG_I2C) && defined(CONFIG_SYSTEM_I2CTOOL)
+ stm32_i2ctool();
+#endif
+
#ifdef CONFIG_BUTTONS
/* Register the BUTTON driver */