Example program for EVAL-AD4696.

Dependencies:   platform_drivers

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?

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