Example Program for EVAL-AD7606
Dependencies: platform_drivers
app/app_config.c@7:054dbd5e1f45, 2021-08-03 (annotated)
- Committer:
- Kjansen
- Date:
- Tue Aug 03 11:54:49 2021 +0100
- Revision:
- 7:054dbd5e1f45
- Parent:
- 6:32de160dce43
Modified the ADC data capture module to remove dependancy on type of ADC and it's specific operations
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kjansen |
6:32de160dce43 | 1 | /***************************************************************************//** |
Kjansen |
6:32de160dce43 | 2 | * @file app_config.c |
Kjansen |
6:32de160dce43 | 3 | * @brief Application configurations module (platform-agnostic) |
Kjansen |
6:32de160dce43 | 4 | * @details This module performs the system configurations |
Kjansen |
6:32de160dce43 | 5 | ******************************************************************************** |
Kjansen |
6:32de160dce43 | 6 | * Copyright (c) 2020-2021 Analog Devices, Inc. |
Kjansen |
6:32de160dce43 | 7 | * All rights reserved. |
Kjansen |
6:32de160dce43 | 8 | * |
Kjansen |
6:32de160dce43 | 9 | * This software is proprietary to Analog Devices, Inc. and its licensors. |
Kjansen |
6:32de160dce43 | 10 | * By using this software you agree to the terms of the associated |
Kjansen |
6:32de160dce43 | 11 | * Analog Devices Software License Agreement. |
Kjansen |
6:32de160dce43 | 12 | *******************************************************************************/ |
Kjansen |
6:32de160dce43 | 13 | |
Kjansen |
6:32de160dce43 | 14 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 15 | /***************************** Include Files **********************************/ |
Kjansen |
6:32de160dce43 | 16 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 17 | |
Kjansen |
6:32de160dce43 | 18 | #include <stdbool.h> |
Kjansen |
6:32de160dce43 | 19 | |
Kjansen |
6:32de160dce43 | 20 | #include "app_config.h" |
Kjansen |
7:054dbd5e1f45 | 21 | #include "adc_data_capture.h" |
Kjansen |
6:32de160dce43 | 22 | #include "error.h" |
Kjansen |
6:32de160dce43 | 23 | #include "uart.h" |
Kjansen |
6:32de160dce43 | 24 | #include "gpio.h" |
Kjansen |
6:32de160dce43 | 25 | #include "irq.h" |
Kjansen |
6:32de160dce43 | 26 | #include "pwm.h" |
Kjansen |
6:32de160dce43 | 27 | |
Kjansen |
6:32de160dce43 | 28 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 29 | /************************ Macros/Constants ************************************/ |
Kjansen |
6:32de160dce43 | 30 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 31 | |
Kjansen |
6:32de160dce43 | 32 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 33 | /******************** Variables and User Defined Data Types *******************/ |
Kjansen |
6:32de160dce43 | 34 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 35 | |
Kjansen |
6:32de160dce43 | 36 | /* UART init parameters */ |
Kjansen |
6:32de160dce43 | 37 | struct uart_init_param uart_init_params = { |
Kjansen |
6:32de160dce43 | 38 | .device_id = NULL, |
Kjansen |
6:32de160dce43 | 39 | .baud_rate = IIO_UART_BAUD_RATE, |
Kjansen |
6:32de160dce43 | 40 | .extra = &uart_extra_init_params |
Kjansen |
6:32de160dce43 | 41 | }; |
Kjansen |
6:32de160dce43 | 42 | |
Kjansen |
6:32de160dce43 | 43 | /* LED GPO init parameters */ |
Kjansen |
6:32de160dce43 | 44 | static struct gpio_init_param led_gpio_init_params = { |
Kjansen |
6:32de160dce43 | 45 | .number = LED_GPO, |
Kjansen |
6:32de160dce43 | 46 | .extra = NULL |
Kjansen |
6:32de160dce43 | 47 | }; |
Kjansen |
6:32de160dce43 | 48 | |
Kjansen |
6:32de160dce43 | 49 | /* External interrupt init parameters */ |
Kjansen |
6:32de160dce43 | 50 | static struct irq_init_param ext_int_init_params = { |
Kjansen |
6:32de160dce43 | 51 | .irq_ctrl_id = EXTERNAL_INT_ID1, |
Kjansen |
6:32de160dce43 | 52 | .extra = &ext_int_extra_init_params |
Kjansen |
6:32de160dce43 | 53 | }; |
Kjansen |
6:32de160dce43 | 54 | |
Kjansen |
6:32de160dce43 | 55 | /* External interrupt callback descriptor */ |
Kjansen |
6:32de160dce43 | 56 | static struct callback_desc ext_int_callback_desc = { |
Kjansen |
7:054dbd5e1f45 | 57 | data_capture_callback, |
Kjansen |
6:32de160dce43 | 58 | NULL, |
Kjansen |
6:32de160dce43 | 59 | NULL |
Kjansen |
6:32de160dce43 | 60 | }; |
Kjansen |
6:32de160dce43 | 61 | |
Kjansen |
6:32de160dce43 | 62 | /* PWM init parameters */ |
Kjansen |
6:32de160dce43 | 63 | static struct pwm_init_param pwm_init_params = { |
Kjansen |
6:32de160dce43 | 64 | .id = PWM_TRIGGER, // GPIO used for PWM |
Kjansen |
6:32de160dce43 | 65 | .period_ns = CONV_TRIGGER_PERIOD_NSEC, // PWM period in nsec |
Kjansen |
6:32de160dce43 | 66 | .duty_cycle_ns = CONV_TRIGGER_DUTY_CYCLE_NSEC // PWM duty cycle in nsec |
Kjansen |
6:32de160dce43 | 67 | }; |
Kjansen |
6:32de160dce43 | 68 | |
Kjansen |
6:32de160dce43 | 69 | /* LED GPO descriptor */ |
Kjansen |
6:32de160dce43 | 70 | gpio_desc *led_gpio_desc; |
Kjansen |
6:32de160dce43 | 71 | |
Kjansen |
6:32de160dce43 | 72 | /* External interrupt descriptor */ |
Kjansen |
6:32de160dce43 | 73 | struct irq_ctrl_desc *ext_int_desc; |
Kjansen |
6:32de160dce43 | 74 | |
Kjansen |
6:32de160dce43 | 75 | /* PWM descriptor */ |
Kjansen |
6:32de160dce43 | 76 | struct pwm_desc *pwm_desc; |
Kjansen |
6:32de160dce43 | 77 | |
Kjansen |
6:32de160dce43 | 78 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 79 | /************************** Functions Declarations ****************************/ |
Kjansen |
6:32de160dce43 | 80 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 81 | |
Kjansen |
6:32de160dce43 | 82 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 83 | /************************** Functions Definitions *****************************/ |
Kjansen |
6:32de160dce43 | 84 | /******************************************************************************/ |
Kjansen |
6:32de160dce43 | 85 | |
Kjansen |
6:32de160dce43 | 86 | /** |
Kjansen |
6:32de160dce43 | 87 | * @brief Initialize the GPIOs |
Kjansen |
6:32de160dce43 | 88 | * @return SUCCESS in case of success, FAILURE otherwise |
Kjansen |
6:32de160dce43 | 89 | * @details This function initialize the GPIOs used by application |
Kjansen |
6:32de160dce43 | 90 | */ |
Kjansen |
6:32de160dce43 | 91 | static int32_t init_gpio(void) |
Kjansen |
6:32de160dce43 | 92 | { |
Kjansen |
6:32de160dce43 | 93 | do { |
Kjansen |
6:32de160dce43 | 94 | /* Initialize the LED GPO */ |
Kjansen |
6:32de160dce43 | 95 | if (gpio_get_optional(&led_gpio_desc, &led_gpio_init_params) != SUCCESS) { |
Kjansen |
6:32de160dce43 | 96 | break; |
Kjansen |
6:32de160dce43 | 97 | } |
Kjansen |
6:32de160dce43 | 98 | |
Kjansen |
6:32de160dce43 | 99 | if (gpio_direction_output(led_gpio_desc, GPIO_HIGH) != SUCCESS) { |
Kjansen |
6:32de160dce43 | 100 | break; |
Kjansen |
6:32de160dce43 | 101 | } |
Kjansen |
6:32de160dce43 | 102 | |
Kjansen |
6:32de160dce43 | 103 | return SUCCESS; |
Kjansen |
6:32de160dce43 | 104 | } while (0); |
Kjansen |
6:32de160dce43 | 105 | |
Kjansen |
6:32de160dce43 | 106 | return FAILURE; |
Kjansen |
6:32de160dce43 | 107 | } |
Kjansen |
6:32de160dce43 | 108 | |
Kjansen |
6:32de160dce43 | 109 | |
Kjansen |
6:32de160dce43 | 110 | /** |
Kjansen |
6:32de160dce43 | 111 | * @brief Initialize the IRQ contoller |
Kjansen |
6:32de160dce43 | 112 | * @return SUCCESS in case of success, FAILURE otherwise |
Kjansen |
6:32de160dce43 | 113 | * @details This function initialize the interrupts for system peripherals |
Kjansen |
6:32de160dce43 | 114 | */ |
Kjansen |
6:32de160dce43 | 115 | static int32_t init_interrupt(void) |
Kjansen |
6:32de160dce43 | 116 | { |
Kjansen |
6:32de160dce43 | 117 | do { |
Kjansen |
6:32de160dce43 | 118 | /* Init interrupt controller for external interrupt */ |
Kjansen |
6:32de160dce43 | 119 | if (irq_ctrl_init(&ext_int_desc, &ext_int_init_params) != SUCCESS) { |
Kjansen |
6:32de160dce43 | 120 | break; |
Kjansen |
6:32de160dce43 | 121 | } |
Kjansen |
6:32de160dce43 | 122 | |
Kjansen |
6:32de160dce43 | 123 | /* Register a callback function for external interrupt */ |
Kjansen |
6:32de160dce43 | 124 | if (irq_register_callback(ext_int_desc, |
Kjansen |
6:32de160dce43 | 125 | EXTERNAL_INT_ID1, |
Kjansen |
6:32de160dce43 | 126 | &ext_int_callback_desc) != SUCCESS) { |
Kjansen |
6:32de160dce43 | 127 | break; |
Kjansen |
6:32de160dce43 | 128 | } |
Kjansen |
6:32de160dce43 | 129 | |
Kjansen |
6:32de160dce43 | 130 | return SUCCESS; |
Kjansen |
6:32de160dce43 | 131 | } while (0); |
Kjansen |
6:32de160dce43 | 132 | |
Kjansen |
6:32de160dce43 | 133 | return FAILURE; |
Kjansen |
6:32de160dce43 | 134 | } |
Kjansen |
6:32de160dce43 | 135 | |
Kjansen |
6:32de160dce43 | 136 | |
Kjansen |
6:32de160dce43 | 137 | /** |
Kjansen |
6:32de160dce43 | 138 | * @brief Initialize the PWM contoller |
Kjansen |
6:32de160dce43 | 139 | * @return SUCCESS in case of success, FAILURE otherwise |
Kjansen |
6:32de160dce43 | 140 | */ |
Kjansen |
6:32de160dce43 | 141 | static int32_t init_pwm(void) |
Kjansen |
6:32de160dce43 | 142 | { |
Kjansen |
6:32de160dce43 | 143 | do { |
Kjansen |
6:32de160dce43 | 144 | /* Initialize the PWM interface to generate PWM signal |
Kjansen |
6:32de160dce43 | 145 | * on conversion trigger event pin */ |
Kjansen |
6:32de160dce43 | 146 | if (pwm_init(&pwm_desc, &pwm_init_params) != SUCCESS) { |
Kjansen |
6:32de160dce43 | 147 | break; |
Kjansen |
6:32de160dce43 | 148 | } |
Kjansen |
6:32de160dce43 | 149 | |
Kjansen |
6:32de160dce43 | 150 | if (pwm_enable(pwm_desc) != SUCCESS) { |
Kjansen |
6:32de160dce43 | 151 | break; |
Kjansen |
6:32de160dce43 | 152 | } |
Kjansen |
6:32de160dce43 | 153 | |
Kjansen |
6:32de160dce43 | 154 | return SUCCESS; |
Kjansen |
6:32de160dce43 | 155 | } while (0); |
Kjansen |
6:32de160dce43 | 156 | |
Kjansen |
6:32de160dce43 | 157 | return FAILURE; |
Kjansen |
6:32de160dce43 | 158 | } |
Kjansen |
6:32de160dce43 | 159 | |
Kjansen |
6:32de160dce43 | 160 | |
Kjansen |
6:32de160dce43 | 161 | /** |
Kjansen |
6:32de160dce43 | 162 | * @brief Initialize the system peripherals |
Kjansen |
6:32de160dce43 | 163 | * @return SUCCESS in case of success, FAILURE otherwise |
Kjansen |
6:32de160dce43 | 164 | */ |
Kjansen |
6:32de160dce43 | 165 | int32_t init_system(void) |
Kjansen |
6:32de160dce43 | 166 | { |
Kjansen |
6:32de160dce43 | 167 | if (init_gpio() != SUCCESS) { |
Kjansen |
6:32de160dce43 | 168 | return FAILURE; |
Kjansen |
6:32de160dce43 | 169 | } |
Kjansen |
6:32de160dce43 | 170 | |
Kjansen |
6:32de160dce43 | 171 | if (init_interrupt() != SUCCESS) { |
Kjansen |
6:32de160dce43 | 172 | return FAILURE; |
Kjansen |
6:32de160dce43 | 173 | } |
Kjansen |
6:32de160dce43 | 174 | |
Kjansen |
6:32de160dce43 | 175 | if (init_pwm() != SUCCESS) { |
Kjansen |
6:32de160dce43 | 176 | return FAILURE; |
Kjansen |
6:32de160dce43 | 177 | } |
Kjansen |
6:32de160dce43 | 178 | |
Kjansen |
6:32de160dce43 | 179 | return SUCCESS; |
Kjansen |
6:32de160dce43 | 180 | } |