AD4130 Mbed IIO Firmware

Dependencies:   tempsensors sdp_k1_sdram

Committer:
MPhalke@MPHALKE-L02.ad.analog.com
Date:
Fri Jul 15 17:47:44 2022 +0530
Revision:
2:871d585d96ee
AD4130 firmware - initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 1 /***************************************************************************//**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 2 * @file app_config.c
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 3 * @brief Application configurations module
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 4 * @details This module contains the configurations needed for IIO application
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 5 ********************************************************************************
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 6 * Copyright (c) 2020-2022 Analog Devices, Inc.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 7 *
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 8 * This software is proprietary to Analog Devices, Inc. and its licensors.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 9 * By using this software you agree to the terms of the associated
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 10 * Analog Devices Software License Agreement.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 11 *******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 12
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 13 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 14 /***************************** Include Files **********************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 15 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 16
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 17 #include <stdbool.h>
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 18
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 19 #include "app_config.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 20 #include "ad4130_data_capture.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 21 #include "no_os_error.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 22 #include "no_os_uart.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 23 #include "no_os_irq.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 24 #include "no_os_gpio.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 25
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 26 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 27 /************************ Macros/Constants ************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 28 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 29
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 30 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 31 /******************** Variables and User Defined Data Types *******************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 32 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 33
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 34 /* UART init parameters */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 35 struct no_os_uart_init_param uart_init_params = {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 36 .device_id = NULL,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 37 .baud_rate = IIO_UART_BAUD_RATE,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 38 .size = NO_OS_UART_CS_8,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 39 .parity = NO_OS_UART_PAR_NO,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 40 .stop = NO_OS_UART_STOP_1_BIT,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 41 .extra = &uart_extra_init_params
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 42 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 43
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 44 /* SPI initialization parameters */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 45 struct no_os_spi_init_param spi_init_params = {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 46 .max_speed_hz = 10000000, // Max SPI Speed
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 47 .chip_select = SPI_CSB, // Chip Select
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 48 .mode = NO_OS_SPI_MODE_3, // CPOL = 1, CPHA = 1
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 49 .platform_ops = &spi_ops,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 50 .extra = &spi_extra_init_params // SPI extra configurations
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 51 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 52
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 53 /* External interrupt init parameters */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 54 static struct no_os_irq_init_param ext_int_init_params = {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 55 .irq_ctrl_id = EXT_INT_ID,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 56 .platform_ops = &irq_ops,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 57 .extra = &ext_int_extra_init_params
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 58 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 59
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 60 /* External interrupt callback descriptor */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 61 static struct no_os_callback_desc ext_int_callback_desc = {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 62 #if (DATA_CAPTURE_MODE == CONTINUOUS_DATA_CAPTURE)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 63 data_capture_callback,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 64 #elif (DATA_CAPTURE_MODE == FIFO_DATA_CAPTURE)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 65 fifo_data_capture_callback,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 66 #else
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 67 NULL,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 68 #endif
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 69 NULL,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 70 NULL
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 71 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 72
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 73 /* Conversion monitor GPO init parameters */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 74 static struct no_os_gpio_init_param conv_mon_gpio_init_params = {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 75 .number = CONV_MON,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 76 .platform_ops = &gpio_ops,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 77 .extra = NULL
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 78 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 79
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 80 /* UART descriptor */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 81 struct no_os_uart_desc *uart_desc;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 82
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 83 /* External interrupt descriptor */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 84 struct no_os_irq_ctrl_desc *external_int_desc;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 85
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 86 /* LED GPO descriptor */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 87 struct no_os_gpio_desc *conv_mon_gpio_desc = NULL;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 88
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 89 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 90 /************************ Functions Prototypes ********************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 91 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 92
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 93 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 94 /************************ Functions Definitions *******************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 95 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 96
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 97 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 98 * @brief Initialize the GPIOs
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 99 * @return 0 in case of success, negative error code otherwise
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 100 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 101 static int32_t init_gpio(void)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 102 {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 103 int32_t ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 104
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 105 /* Initialize the conversion monitor GPO */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 106 ret = no_os_gpio_get_optional(&conv_mon_gpio_desc,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 107 &conv_mon_gpio_init_params);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 108 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 109 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 110 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 111
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 112 ret = no_os_gpio_direction_input(conv_mon_gpio_desc);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 113 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 114 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 115 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 116
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 117 return 0;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 118 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 119
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 120 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 121 * @brief Initialize the UART peripheral
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 122 * @return 0 in case of success, negative error code otherwise
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 123 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 124 static int32_t init_uart(void)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 125 {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 126 return no_os_uart_init(&uart_desc, &uart_init_params);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 127 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 128
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 129 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 130 * @brief Initialize the IRQ contoller
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 131 * @return 0 in case of success, negative error code otherwise
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 132 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 133 static int32_t init_interrupt(void)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 134 {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 135 int32_t ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 136
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 137 #if (DATA_CAPTURE_MODE != BURST_DATA_CAPTURE_MODE)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 138 /* Init interrupt controller for external interrupt (for monitoring
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 139 * conversion event on BUSY pin) */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 140 ext_int_extra_init_params.ext_int_pin = CONV_MON;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 141 ret = no_os_irq_ctrl_init(&external_int_desc, &ext_int_init_params);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 142 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 143 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 144 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 145
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 146 /* Register a callback function for external interrupt */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 147 ret = no_os_irq_register_callback(external_int_desc,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 148 EXT_INT_ID,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 149 &ext_int_callback_desc);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 150 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 151 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 152 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 153
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 154 /* Enable external interrupt */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 155 ret = no_os_irq_enable(external_int_desc, EXT_INT_ID);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 156 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 157 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 158 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 159 #endif
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 160
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 161 return 0;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 162 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 163
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 164 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 165 * @brief Initialize the system peripherals
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 166 * @return 0 in case of success, negative error code otherwise
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 167 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 168 int32_t init_system(void)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 169 {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 170 int32_t ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 171
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 172 ret = init_gpio();
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 173 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 174 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 175 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 176
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 177 ret = init_uart();
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 178 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 179 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 180 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 181
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 182 ret = init_interrupt();
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 183 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 184 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 185 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 186
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 187 #if defined(USE_SDRAM_CAPTURE_BUFFER)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 188 ret = sdram_init();
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 189 if (ret) {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 190 return ret;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 191 }
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 192 #endif
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 193
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 194 return 0;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 195 }