Eric Pena / Mbed OS EVAL-AD7768-1

Dependencies:   platform_drivers

Committer:
epena
Date:
Fri Sep 24 18:39:34 2021 +0800
Revision:
1:c0429edee15b
Adding Released source code of ad7768-1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
epena 1:c0429edee15b 1 /***************************************************************************//**
epena 1:c0429edee15b 2 * @file app_config.c
epena 1:c0429edee15b 3 * @brief Application configurations module
epena 1:c0429edee15b 4 * @details This module contains the configurations needed for IIO application
epena 1:c0429edee15b 5 ********************************************************************************
epena 1:c0429edee15b 6 * Copyright (c) 2021 Analog Devices, Inc.
epena 1:c0429edee15b 7 * All rights reserved.
epena 1:c0429edee15b 8 *
epena 1:c0429edee15b 9 * This software is proprietary to Analog Devices, Inc. and its licensors.
epena 1:c0429edee15b 10 * By using this software you agree to the terms of the associated
epena 1:c0429edee15b 11 * Analog Devices Software License Agreement.
epena 1:c0429edee15b 12 *******************************************************************************/
epena 1:c0429edee15b 13
epena 1:c0429edee15b 14 /******************************************************************************/
epena 1:c0429edee15b 15 /***************************** Include Files **********************************/
epena 1:c0429edee15b 16 /******************************************************************************/
epena 1:c0429edee15b 17
epena 1:c0429edee15b 18 #include <stdbool.h>
epena 1:c0429edee15b 19
epena 1:c0429edee15b 20 #include "app_config.h"
epena 1:c0429edee15b 21 #include "adc_data_capture.h"
epena 1:c0429edee15b 22 #include "ad77681_iio.h"
epena 1:c0429edee15b 23 #include "error.h"
epena 1:c0429edee15b 24 #include "uart.h"
epena 1:c0429edee15b 25 #include "irq.h"
epena 1:c0429edee15b 26 #include "gpio.h"
epena 1:c0429edee15b 27
epena 1:c0429edee15b 28 /******************************************************************************/
epena 1:c0429edee15b 29 /************************ Macros/Constants ************************************/
epena 1:c0429edee15b 30 /******************************************************************************/
epena 1:c0429edee15b 31
epena 1:c0429edee15b 32 /******************************************************************************/
epena 1:c0429edee15b 33 /*************************** Types Declarations *******************************/
epena 1:c0429edee15b 34 /******************************************************************************/
epena 1:c0429edee15b 35
epena 1:c0429edee15b 36 /*
epena 1:c0429edee15b 37 * UART init parameters structure
epena 1:c0429edee15b 38 */
epena 1:c0429edee15b 39 struct uart_init_param uart_init_params = {
epena 1:c0429edee15b 40 .device_id = NULL,
epena 1:c0429edee15b 41 .baud_rate = IIO_UART_BAUD_RATE,
epena 1:c0429edee15b 42 .extra = &uart_init_extra_params
epena 1:c0429edee15b 43 };
epena 1:c0429edee15b 44
epena 1:c0429edee15b 45 /* LED GPIO descriptor */
epena 1:c0429edee15b 46 struct gpio_init_param gpio_init_led_green = {
epena 1:c0429edee15b 47 .number = LED_GREEN,
epena 1:c0429edee15b 48 .extra = NULL
epena 1:c0429edee15b 49 };
epena 1:c0429edee15b 50
epena 1:c0429edee15b 51 /* External interrupt init parameters */
epena 1:c0429edee15b 52 struct irq_init_param external_int_init_param = {
epena 1:c0429edee15b 53 .irq_ctrl_id = EXTERNAL_INT_ID1,
epena 1:c0429edee15b 54 .extra = &mbed_ext_int_init_param
epena 1:c0429edee15b 55 };
epena 1:c0429edee15b 56
epena 1:c0429edee15b 57 /* External interrupt callback descriptor */
epena 1:c0429edee15b 58 struct callback_desc external_int_callback_desc = {
epena 1:c0429edee15b 59 data_capture_callback,
epena 1:c0429edee15b 60 NULL,
epena 1:c0429edee15b 61 NULL
epena 1:c0429edee15b 62 };
epena 1:c0429edee15b 63
epena 1:c0429edee15b 64 /* LED GPIO descriptor */
epena 1:c0429edee15b 65 gpio_desc *led_green_gpio_desc = NULL;
epena 1:c0429edee15b 66
epena 1:c0429edee15b 67 /* External interrupt descriptor */
epena 1:c0429edee15b 68 struct irq_ctrl_desc *external_int_desc;
epena 1:c0429edee15b 69
epena 1:c0429edee15b 70 /******************************************************************************/
epena 1:c0429edee15b 71 /************************ Functions Prototypes ********************************/
epena 1:c0429edee15b 72 /******************************************************************************/
epena 1:c0429edee15b 73
epena 1:c0429edee15b 74 /******************************************************************************/
epena 1:c0429edee15b 75 /************************ Functions Definitions *******************************/
epena 1:c0429edee15b 76 /******************************************************************************/
epena 1:c0429edee15b 77
epena 1:c0429edee15b 78 /**
epena 1:c0429edee15b 79 * @brief Initialize the GPIOs
epena 1:c0429edee15b 80 * @return SUCCESS in case of success, FAILURE otherwise
epena 1:c0429edee15b 81 * @details This function initialize the GPIOs used by application
epena 1:c0429edee15b 82 */
epena 1:c0429edee15b 83 static int32_t init_gpio(void)
epena 1:c0429edee15b 84 {
epena 1:c0429edee15b 85 /* Initialize the LED GREEN GPIO */
epena 1:c0429edee15b 86 if (gpio_get_optional(&led_green_gpio_desc, &gpio_init_led_green) != SUCCESS) {
epena 1:c0429edee15b 87 return FAILURE;
epena 1:c0429edee15b 88 }
epena 1:c0429edee15b 89
epena 1:c0429edee15b 90 if (led_green_gpio_desc) {
epena 1:c0429edee15b 91 if (gpio_direction_output(led_green_gpio_desc, GPIO_HIGH) != SUCCESS) {
epena 1:c0429edee15b 92 return FAILURE;
epena 1:c0429edee15b 93 }
epena 1:c0429edee15b 94 }
epena 1:c0429edee15b 95
epena 1:c0429edee15b 96 return SUCCESS;
epena 1:c0429edee15b 97 }
epena 1:c0429edee15b 98
epena 1:c0429edee15b 99 /**
epena 1:c0429edee15b 100 * @brief Initialize the IRQ contoller
epena 1:c0429edee15b 101 * @return SUCCESS in case of success, FAILURE otherwise
epena 1:c0429edee15b 102 * @details This function initialize the interrupts for system peripherals
epena 1:c0429edee15b 103 */
epena 1:c0429edee15b 104 static int32_t init_interrupt(void)
epena 1:c0429edee15b 105 {
epena 1:c0429edee15b 106 /* Init interrupt controller for external interrupt */
epena 1:c0429edee15b 107 if (irq_ctrl_init(&external_int_desc, &external_int_init_param) == FAILURE) {
epena 1:c0429edee15b 108 return FAILURE;
epena 1:c0429edee15b 109 }
epena 1:c0429edee15b 110
epena 1:c0429edee15b 111 /* Register a callback function for external interrupt */
epena 1:c0429edee15b 112 if (irq_register_callback(external_int_desc,
epena 1:c0429edee15b 113 EXTERNAL_INT_ID1,
epena 1:c0429edee15b 114 &external_int_callback_desc) == FAILURE) {
epena 1:c0429edee15b 115 return FAILURE;
epena 1:c0429edee15b 116 }
epena 1:c0429edee15b 117
epena 1:c0429edee15b 118 return SUCCESS;
epena 1:c0429edee15b 119 }
epena 1:c0429edee15b 120
epena 1:c0429edee15b 121 /**
epena 1:c0429edee15b 122 * @brief Initialize the system peripherals
epena 1:c0429edee15b 123 * @return SUCCESS in case of success, FAILURE otherwise
epena 1:c0429edee15b 124 */
epena 1:c0429edee15b 125 int32_t init_system(void)
epena 1:c0429edee15b 126 {
epena 1:c0429edee15b 127 if (init_gpio() != SUCCESS) {
epena 1:c0429edee15b 128 return FAILURE;
epena 1:c0429edee15b 129 }
epena 1:c0429edee15b 130
epena 1:c0429edee15b 131 if (init_interrupt() != SUCCESS) {
epena 1:c0429edee15b 132 return FAILURE;
epena 1:c0429edee15b 133 }
epena 1:c0429edee15b 134
epena 1:c0429edee15b 135 return SUCCESS;
epena 1:c0429edee15b 136 }