AD4130 Mbed IIO Firmware

Dependencies:   tempsensors sdp_k1_sdram

Revision:
2:871d585d96ee
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/app_config.c	Fri Jul 15 17:47:44 2022 +0530
@@ -0,0 +1,195 @@
+/***************************************************************************//**
+ *   @file    app_config.c
+ *   @brief   Application configurations module
+ *   @details This module contains the configurations needed for IIO application
+********************************************************************************
+ * Copyright (c) 2020-2022 Analog Devices, Inc.
+ *
+ * This software is proprietary to Analog Devices, Inc. and its licensors.
+ * By using this software you agree to the terms of the associated
+ * Analog Devices Software License Agreement.
+*******************************************************************************/
+
+/******************************************************************************/
+/***************************** Include Files **********************************/
+/******************************************************************************/
+
+#include <stdbool.h>
+
+#include "app_config.h"
+#include "ad4130_data_capture.h"
+#include "no_os_error.h"
+#include "no_os_uart.h"
+#include "no_os_irq.h"
+#include "no_os_gpio.h"
+
+/******************************************************************************/
+/************************ Macros/Constants ************************************/
+/******************************************************************************/
+
+/******************************************************************************/
+/******************** Variables and User Defined Data Types *******************/
+/******************************************************************************/
+
+/* UART init parameters */
+struct no_os_uart_init_param uart_init_params = {
+	.device_id = NULL,
+	.baud_rate = IIO_UART_BAUD_RATE,
+	.size = NO_OS_UART_CS_8,
+	.parity = NO_OS_UART_PAR_NO,
+	.stop = NO_OS_UART_STOP_1_BIT,
+	.extra = &uart_extra_init_params
+};
+
+/* SPI initialization parameters */
+struct no_os_spi_init_param spi_init_params = {
+	.max_speed_hz = 10000000,		// Max SPI Speed
+	.chip_select = SPI_CSB,			// Chip Select
+	.mode = NO_OS_SPI_MODE_3,		// CPOL = 1, CPHA = 1
+	.platform_ops = &spi_ops,
+	.extra = &spi_extra_init_params	// SPI extra configurations
+};
+
+/* External interrupt init parameters */
+static struct no_os_irq_init_param ext_int_init_params = {
+	.irq_ctrl_id = EXT_INT_ID,
+	.platform_ops = &irq_ops,
+	.extra = &ext_int_extra_init_params
+};
+
+/* External interrupt callback descriptor */
+static struct no_os_callback_desc ext_int_callback_desc = {
+#if (DATA_CAPTURE_MODE == CONTINUOUS_DATA_CAPTURE)
+	data_capture_callback,
+#elif (DATA_CAPTURE_MODE == FIFO_DATA_CAPTURE)
+	fifo_data_capture_callback,
+#else
+	NULL,
+#endif
+	NULL,
+	NULL
+};
+
+/* Conversion monitor GPO init parameters */
+static struct no_os_gpio_init_param conv_mon_gpio_init_params = {
+	.number = CONV_MON,
+	.platform_ops = &gpio_ops,
+	.extra = NULL
+};
+
+/* UART descriptor */
+struct no_os_uart_desc *uart_desc;
+
+/* External interrupt descriptor */
+struct no_os_irq_ctrl_desc *external_int_desc;
+
+/* LED GPO descriptor */
+struct no_os_gpio_desc *conv_mon_gpio_desc = NULL;
+
+/******************************************************************************/
+/************************ Functions Prototypes ********************************/
+/******************************************************************************/
+
+/******************************************************************************/
+/************************ Functions Definitions *******************************/
+/******************************************************************************/
+
+/**
+ * @brief 	Initialize the GPIOs
+ * @return	0 in case of success, negative error code otherwise
+ */
+static int32_t init_gpio(void)
+{
+	int32_t ret;
+
+	/* Initialize the conversion monitor GPO */
+	ret = no_os_gpio_get_optional(&conv_mon_gpio_desc,
+				      &conv_mon_gpio_init_params);
+	if (ret) {
+		return ret;
+	}
+
+	ret = no_os_gpio_direction_input(conv_mon_gpio_desc);
+	if (ret) {
+		return ret;
+	}
+
+	return 0;
+}
+
+/**
+ * @brief 	Initialize the UART peripheral
+ * @return	0 in case of success, negative error code otherwise
+ */
+static int32_t init_uart(void)
+{
+	return no_os_uart_init(&uart_desc, &uart_init_params);
+}
+
+/**
+ * @brief 	Initialize the IRQ contoller
+ * @return	0 in case of success, negative error code otherwise
+ */
+static int32_t init_interrupt(void)
+{
+	int32_t ret;
+
+#if (DATA_CAPTURE_MODE != BURST_DATA_CAPTURE_MODE)
+	/* Init interrupt controller for external interrupt (for monitoring
+	 * conversion event on BUSY pin) */
+	ext_int_extra_init_params.ext_int_pin = CONV_MON;
+	ret = no_os_irq_ctrl_init(&external_int_desc, &ext_int_init_params);
+	if (ret) {
+		return ret;
+	}
+
+	/* Register a callback function for external interrupt */
+	ret = no_os_irq_register_callback(external_int_desc,
+					  EXT_INT_ID,
+					  &ext_int_callback_desc);
+	if (ret) {
+		return ret;
+	}
+
+	/* Enable external interrupt */
+	ret = no_os_irq_enable(external_int_desc, EXT_INT_ID);
+	if (ret) {
+		return ret;
+	}
+#endif
+
+	return 0;
+}
+
+/**
+ * @brief 	Initialize the system peripherals
+ * @return	0 in case of success, negative error code otherwise
+ */
+int32_t init_system(void)
+{
+	int32_t ret;
+
+	ret = init_gpio();
+	if (ret) {
+		return ret;
+	}
+
+	ret = init_uart();
+	if (ret) {
+		return ret;
+	}
+
+	ret = init_interrupt();
+	if (ret) {
+		return ret;
+	}
+
+#if defined(USE_SDRAM_CAPTURE_BUFFER)
+	ret = sdram_init();
+	if (ret) {
+		return ret;
+	}
+#endif
+
+	return 0;
+}