Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: platform_drivers
app/app_config.c@1:c0429edee15b, 2021-09-24 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |