Example Program for EVAL-AD7606

Dependencies:   platform_drivers

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?

UserRevisionLine numberNew 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 }