AD4130 Mbed IIO Firmware
Dependencies: tempsensors sdp_k1_sdram
app/app_config.c@2:871d585d96ee, 2022-07-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |