Example program for EVAL-AD4696.
Dependencies: platform_drivers
app/app_config.c@1:edd760d6380f, 2021-09-30 (annotated)
- Committer:
- Kjansen
- Date:
- Thu Sep 30 11:58:20 2021 +0100
- Revision:
- 1:edd760d6380f
AD4696 IIO Application- Initial Revision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kjansen |
1:edd760d6380f | 1 | /***************************************************************************//** |
Kjansen |
1:edd760d6380f | 2 | * @file app_config.c |
Kjansen |
1:edd760d6380f | 3 | * @brief Application configurations module |
Kjansen |
1:edd760d6380f | 4 | * @details This module contains the configurations needed for IIO application |
Kjansen |
1:edd760d6380f | 5 | ******************************************************************************** |
Kjansen |
1:edd760d6380f | 6 | * Copyright (c) 2021 Analog Devices, Inc. |
Kjansen |
1:edd760d6380f | 7 | * All rights reserved. |
Kjansen |
1:edd760d6380f | 8 | * |
Kjansen |
1:edd760d6380f | 9 | * This software is proprietary to Analog Devices, Inc. and its licensors. |
Kjansen |
1:edd760d6380f | 10 | * By using this software you agree to the terms of the associated |
Kjansen |
1:edd760d6380f | 11 | * Analog Devices Software License Agreement. |
Kjansen |
1:edd760d6380f | 12 | *******************************************************************************/ |
Kjansen |
1:edd760d6380f | 13 | |
Kjansen |
1:edd760d6380f | 14 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 15 | /***************************** Include Files **********************************/ |
Kjansen |
1:edd760d6380f | 16 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 17 | |
Kjansen |
1:edd760d6380f | 18 | #include <stdbool.h> |
Kjansen |
1:edd760d6380f | 19 | #include "app_config.h" |
Kjansen |
1:edd760d6380f | 20 | #include "adc_data_capture.h" |
Kjansen |
1:edd760d6380f | 21 | #include "error.h" |
Kjansen |
1:edd760d6380f | 22 | #include "gpio.h" |
Kjansen |
1:edd760d6380f | 23 | #include "irq.h" |
Kjansen |
1:edd760d6380f | 24 | #include "pwm.h" |
Kjansen |
1:edd760d6380f | 25 | #include "uart.h" |
Kjansen |
1:edd760d6380f | 26 | |
Kjansen |
1:edd760d6380f | 27 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 28 | /************************ Macros/Constants ************************************/ |
Kjansen |
1:edd760d6380f | 29 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 30 | |
Kjansen |
1:edd760d6380f | 31 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 32 | /*************************** Types Declarations *******************************/ |
Kjansen |
1:edd760d6380f | 33 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 34 | |
Kjansen |
1:edd760d6380f | 35 | /* External interrupt init parameters */ |
Kjansen |
1:edd760d6380f | 36 | static struct irq_init_param ext_int_init_params = { |
Kjansen |
1:edd760d6380f | 37 | .irq_ctrl_id = EXTERNAL_INT_ID1, |
Kjansen |
1:edd760d6380f | 38 | .extra = &ext_int_extra_init_params |
Kjansen |
1:edd760d6380f | 39 | }; |
Kjansen |
1:edd760d6380f | 40 | |
Kjansen |
1:edd760d6380f | 41 | /* External interrupt callback descriptor */ |
Kjansen |
1:edd760d6380f | 42 | static struct callback_desc ext_int_callback_desc = { |
Kjansen |
1:edd760d6380f | 43 | data_capture_callback, |
Kjansen |
1:edd760d6380f | 44 | NULL, |
Kjansen |
1:edd760d6380f | 45 | NULL |
Kjansen |
1:edd760d6380f | 46 | }; |
Kjansen |
1:edd760d6380f | 47 | |
Kjansen |
1:edd760d6380f | 48 | /* PWM init parameters */ |
Kjansen |
1:edd760d6380f | 49 | static struct pwm_init_param pwm_init_params = { |
Kjansen |
1:edd760d6380f | 50 | .id = EXT_TRIGGER_PIN, // GPIO used for PWM |
Kjansen |
1:edd760d6380f | 51 | .period_ns = CONV_TRIGGER_PERIOD_NSEC, // PWM period in nsec |
Kjansen |
1:edd760d6380f | 52 | .duty_cycle_ns = CONV_TRIGGER_DUTY_CYCLE_NSEC // PWM duty cycle in nsec |
Kjansen |
1:edd760d6380f | 53 | }; |
Kjansen |
1:edd760d6380f | 54 | |
Kjansen |
1:edd760d6380f | 55 | /* PWM descriptor */ |
Kjansen |
1:edd760d6380f | 56 | struct pwm_desc *pwm_desc; |
Kjansen |
1:edd760d6380f | 57 | |
Kjansen |
1:edd760d6380f | 58 | /* UART init parameters structure */ |
Kjansen |
1:edd760d6380f | 59 | struct uart_init_param uart_init_params = { |
Kjansen |
1:edd760d6380f | 60 | .device_id = NULL, |
Kjansen |
1:edd760d6380f | 61 | .baud_rate = IIO_UART_BAUD_RATE, |
Kjansen |
1:edd760d6380f | 62 | .extra = &uart_extra_init_params |
Kjansen |
1:edd760d6380f | 63 | }; |
Kjansen |
1:edd760d6380f | 64 | |
Kjansen |
1:edd760d6380f | 65 | /* External interrupt descriptor */ |
Kjansen |
1:edd760d6380f | 66 | struct irq_ctrl_desc *ext_int_desc; |
Kjansen |
1:edd760d6380f | 67 | |
Kjansen |
1:edd760d6380f | 68 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 69 | /************************ Functions Prototypes ********************************/ |
Kjansen |
1:edd760d6380f | 70 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 71 | |
Kjansen |
1:edd760d6380f | 72 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 73 | /************************ Functions Definitions *******************************/ |
Kjansen |
1:edd760d6380f | 74 | /******************************************************************************/ |
Kjansen |
1:edd760d6380f | 75 | |
Kjansen |
1:edd760d6380f | 76 | /** |
Kjansen |
1:edd760d6380f | 77 | * @brief Initialize the IRQ contoller |
Kjansen |
1:edd760d6380f | 78 | * @return SUCCESS in case of success, negative error code otherwise. |
Kjansen |
1:edd760d6380f | 79 | * @details This function initialize the interrupts for system peripherals |
Kjansen |
1:edd760d6380f | 80 | */ |
Kjansen |
1:edd760d6380f | 81 | static int32_t init_interrupt(void) |
Kjansen |
1:edd760d6380f | 82 | { |
Kjansen |
1:edd760d6380f | 83 | do { |
Kjansen |
1:edd760d6380f | 84 | /* Init interrupt controller for external interrupt */ |
Kjansen |
1:edd760d6380f | 85 | if (irq_ctrl_init(&ext_int_desc, &ext_int_init_params) != SUCCESS) { |
Kjansen |
1:edd760d6380f | 86 | break; |
Kjansen |
1:edd760d6380f | 87 | } |
Kjansen |
1:edd760d6380f | 88 | /* Register a callback function for external interrupt */ |
Kjansen |
1:edd760d6380f | 89 | if (irq_register_callback(ext_int_desc, |
Kjansen |
1:edd760d6380f | 90 | EXTERNAL_INT_ID1, |
Kjansen |
1:edd760d6380f | 91 | &ext_int_callback_desc) != SUCCESS) { |
Kjansen |
1:edd760d6380f | 92 | break; |
Kjansen |
1:edd760d6380f | 93 | } |
Kjansen |
1:edd760d6380f | 94 | return SUCCESS; |
Kjansen |
1:edd760d6380f | 95 | } while (0); |
Kjansen |
1:edd760d6380f | 96 | |
Kjansen |
1:edd760d6380f | 97 | return FAILURE; |
Kjansen |
1:edd760d6380f | 98 | } |
Kjansen |
1:edd760d6380f | 99 | |
Kjansen |
1:edd760d6380f | 100 | /** |
Kjansen |
1:edd760d6380f | 101 | * @brief Initializing system peripherals |
Kjansen |
1:edd760d6380f | 102 | * @return SUCCESS in case of success, negative error code otherwise. |
Kjansen |
1:edd760d6380f | 103 | * @details This function initializes system peripherals for the application |
Kjansen |
1:edd760d6380f | 104 | */ |
Kjansen |
1:edd760d6380f | 105 | int32_t init_system(void) |
Kjansen |
1:edd760d6380f | 106 | { |
Kjansen |
1:edd760d6380f | 107 | if (init_interrupt() != SUCCESS) |
Kjansen |
1:edd760d6380f | 108 | return FAILURE; |
Kjansen |
1:edd760d6380f | 109 | |
Kjansen |
1:edd760d6380f | 110 | /* Initialize the PWM interface to generate PWM signal |
Kjansen |
1:edd760d6380f | 111 | * on conversion trigger event pin */ |
Kjansen |
1:edd760d6380f | 112 | if (pwm_init(&pwm_desc, &pwm_init_params) != SUCCESS) { |
Kjansen |
1:edd760d6380f | 113 | return FAILURE; |
Kjansen |
1:edd760d6380f | 114 | } |
Kjansen |
1:edd760d6380f | 115 | |
Kjansen |
1:edd760d6380f | 116 | return SUCCESS; |
Kjansen |
1:edd760d6380f | 117 | } |