This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 00eccfd4fa457f9b46b7520e9e283bee6e0f61fe
Author: Daniel P. Carvalho <daniel...@gmail.com>
AuthorDate: Fri Oct 16 14:34:21 2020 -0300

    Added support to STM32L432KC DAC.
---
 boards/arm/stm32l4/nucleo-l432kc/include/board.h   |  6 ++
 boards/arm/stm32l4/nucleo-l432kc/src/Makefile      |  4 +
 .../arm/stm32l4/nucleo-l432kc/src/nucleo-l432kc.h  | 12 +++
 .../arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c  |  6 ++
 boards/arm/stm32l4/nucleo-l432kc/src/stm32_dac.c   | 96 ++++++++++++++++++++++
 5 files changed, 124 insertions(+)

diff --git a/boards/arm/stm32l4/nucleo-l432kc/include/board.h 
b/boards/arm/stm32l4/nucleo-l432kc/include/board.h
index d410e55..f625c2e 100644
--- a/boards/arm/stm32l4/nucleo-l432kc/include/board.h
+++ b/boards/arm/stm32l4/nucleo-l432kc/include/board.h
@@ -221,6 +221,12 @@
 #define LED_ASSERTION    2
 #define LED_PANIC        1
 
+/* DAC
+ * Default is PA4 (same as ADC, do not use both at the same time)
+ */
+
+#define GPIO_DAC1_OUT            GPIO_DAC1_OUT_1
+
 /* Quadrature encoder
  * Default is to use timer 5 (32-bit) and encoder on PA0/PA1
  */
diff --git a/boards/arm/stm32l4/nucleo-l432kc/src/Makefile 
b/boards/arm/stm32l4/nucleo-l432kc/src/Makefile
index a6bda03..17c0d05 100644
--- a/boards/arm/stm32l4/nucleo-l432kc/src/Makefile
+++ b/boards/arm/stm32l4/nucleo-l432kc/src/Makefile
@@ -55,6 +55,10 @@ ifeq ($(CONFIG_STM32L4_ADC),y)
 CSRCS += stm32_adc.c
 endif
 
+ifeq ($(CONFIG_DAC),y)
+CSRCS += stm32_dac.c
+endif
+
 ifeq ($(CONFIG_DAC7571),y)
 CSRCS += stm32_dac7571.c
 endif
diff --git a/boards/arm/stm32l4/nucleo-l432kc/src/nucleo-l432kc.h 
b/boards/arm/stm32l4/nucleo-l432kc/src/nucleo-l432kc.h
index 22aea90..f5dc109 100644
--- a/boards/arm/stm32l4/nucleo-l432kc/src/nucleo-l432kc.h
+++ b/boards/arm/stm32l4/nucleo-l432kc/src/nucleo-l432kc.h
@@ -191,6 +191,18 @@ int stm32l4_adc_setup(void);
 #endif
 
 /****************************************************************************
+ * Name: stm32l4_dac_setup
+ *
+ * Description:
+ *   Initialize DAC and register the DAC driver.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_DAC
+int stm32l4_dac_setup(void);
+#endif
+
+/****************************************************************************
  * Name: stm32_dac7571initialize
  *
  * Description:
diff --git a/boards/arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c 
b/boards/arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c
index bbe7591..842dd36 100644
--- a/boards/arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c
+++ b/boards/arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c
@@ -242,6 +242,12 @@ int board_app_initialize(uintptr_t arg)
     }
 #endif
 
+#ifdef CONFIG_DAC
+  ainfo("Initializing DAC\n");
+
+  stm32l4_dac_setup();
+#endif /* CONFIG_DAC */
+
 #ifdef CONFIG_DAC7571
   /* Initialize and register DAC7571 */
 
diff --git a/boards/arm/stm32l4/nucleo-l432kc/src/stm32_dac.c 
b/boards/arm/stm32l4/nucleo-l432kc/src/stm32_dac.c
new file mode 100644
index 0000000..86b23f7
--- /dev/null
+++ b/boards/arm/stm32l4/nucleo-l432kc/src/stm32_dac.c
@@ -0,0 +1,96 @@
+/*****************************************************************************
+ * boards/arm/stm32l4/nucleo-l432kc/src/stm32_dac.c
+ *
+ *   Copyright (C) 2017 Haltian Ltd. All rights reserved.
+ *   Authors: Juha Niskanen <juha.niska...@haltian.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <errno.h>
+#include <debug.h>
+
+#include <nuttx/board.h>
+#include <nuttx/analog/dac.h>
+
+#include "stm32l4_gpio.h"
+#include "stm32l4_dac.h"
+#include "nucleo-l432kc.h"
+
+#include <arch/board/board.h>
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct dac_dev_s *g_dac;
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: stm32l4_dac_setup
+ ****************************************************************************/
+
+int stm32l4_dac_setup(void)
+{
+  static bool initialized = false;
+
+  if (!initialized)
+    {
+#ifdef CONFIG_STM32L4_DAC1
+      int ret;
+
+      g_dac = stm32l4_dacinitialize(0);
+      if (g_dac == NULL)
+        {
+          aerr("ERROR: Failed to get DAC interface\n");
+          return -ENODEV;
+        }
+
+      /* Register the DAC driver at "/dev/dac0" */
+
+      ret = dac_register("/dev/dac0", g_dac);
+      if (ret < 0)
+        {
+          aerr("ERROR: dac_register failed: %d\n", ret);
+          return ret;
+        }
+#endif
+      initialized = true;
+    }
+
+  return OK;
+}

Reply via email to