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 ad4696_support.c
Kjansen 1:edd760d6380f 3 * @brief AD469x device No-OS driver supports
Kjansen 1:edd760d6380f 4 ******************************************************************************
Kjansen 1:edd760d6380f 5 * Copyright (c) 2021 Analog Devices, Inc.
Kjansen 1:edd760d6380f 6 *
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 <stdint.h>
Kjansen 1:edd760d6380f 19
Kjansen 1:edd760d6380f 20 #include "app_config.h"
Kjansen 1:edd760d6380f 21 #include "ad4696_support.h"
Kjansen 1:edd760d6380f 22 #include "error.h"
Kjansen 1:edd760d6380f 23
Kjansen 1:edd760d6380f 24 /******************************************************************************/
Kjansen 1:edd760d6380f 25 /********************** Macros and Constants Definition ***********************/
Kjansen 1:edd760d6380f 26 /******************************************************************************/
Kjansen 1:edd760d6380f 27
Kjansen 1:edd760d6380f 28 /******************************************************************************/
Kjansen 1:edd760d6380f 29 /********************** Variables and User Defined Data Types *****************/
Kjansen 1:edd760d6380f 30 /******************************************************************************/
Kjansen 1:edd760d6380f 31
Kjansen 1:edd760d6380f 32 /******************************************************************************/
Kjansen 1:edd760d6380f 33 /************************ Functions Definitions *******************************/
Kjansen 1:edd760d6380f 34 /******************************************************************************/
Kjansen 1:edd760d6380f 35 /*!
Kjansen 1:edd760d6380f 36 * @brief Enter Manual Trigger mode
Kjansen 1:edd760d6380f 37 * @param device[in] - device instance
Kjansen 1:edd760d6380f 38 * @return SUCCESS in case of success, negative error code otherwise.
Kjansen 1:edd760d6380f 39 */
Kjansen 1:edd760d6380f 40 int32_t ad4696_enable_manual_trigger_mode(struct ad469x_dev *device)
Kjansen 1:edd760d6380f 41 {
Kjansen 1:edd760d6380f 42 do
Kjansen 1:edd760d6380f 43 {
Kjansen 1:edd760d6380f 44 if (ad469x_spi_reg_write(device,
Kjansen 1:edd760d6380f 45 AD469x_REG_SETUP,
Kjansen 1:edd760d6380f 46 AD469x_REG_SETUP_RESET) != SUCCESS) {
Kjansen 1:edd760d6380f 47 break;
Kjansen 1:edd760d6380f 48 }
Kjansen 1:edd760d6380f 49
Kjansen 1:edd760d6380f 50 if (ad469x_spi_reg_write(device,
Kjansen 1:edd760d6380f 51 AD469x_REG_SEQ_CTRL,
Kjansen 1:edd760d6380f 52 AD469x_REG_SEQ_CTRL_RESET) != SUCCESS) {
Kjansen 1:edd760d6380f 53 break;
Kjansen 1:edd760d6380f 54 }
Kjansen 1:edd760d6380f 55
Kjansen 1:edd760d6380f 56 return SUCCESS;
Kjansen 1:edd760d6380f 57 } while (0);
Kjansen 1:edd760d6380f 58
Kjansen 1:edd760d6380f 59 return FAILURE;
Kjansen 1:edd760d6380f 60 }
Kjansen 1:edd760d6380f 61
Kjansen 1:edd760d6380f 62 /*!
Kjansen 1:edd760d6380f 63 * @brief Select between polarity modes
Kjansen 1:edd760d6380f 64 * @param device[in] - device instance
Kjansen 1:edd760d6380f 65 * @return SUCCESS in case of success, negative error code otherwise.
Kjansen 1:edd760d6380f 66 */
Kjansen 1:edd760d6380f 67 int32_t ad4696_polarity_mode_select(struct ad469x_dev *device)
Kjansen 1:edd760d6380f 68 {
Kjansen 1:edd760d6380f 69 uint8_t data = 0;
Kjansen 1:edd760d6380f 70
Kjansen 1:edd760d6380f 71 for (uint8_t i = 0; i < AD469x_CHANNEL_NO;i++)
Kjansen 1:edd760d6380f 72 {
Kjansen 1:edd760d6380f 73 if (ad469x_spi_reg_read(device,
Kjansen 1:edd760d6380f 74 AD469x_REG_CONFIG_IN(i),
Kjansen 1:edd760d6380f 75 &data) != SUCCESS) {
Kjansen 1:edd760d6380f 76 return FAILURE;
Kjansen 1:edd760d6380f 77 }
Kjansen 1:edd760d6380f 78
Kjansen 1:edd760d6380f 79 #if defined(PSEUDO_BIPOLAR_MODE)
Kjansen 1:edd760d6380f 80 data |= (AD469x_REG_CONFIG_IN_PAIR(AD469x_PSEUDO_BIPOLAR_MODE)
Kjansen 1:edd760d6380f 81 | AD469x_REG_CONFIG_IN_MODE(AD469x_INx_COM));
Kjansen 1:edd760d6380f 82 #else
Kjansen 1:edd760d6380f 83 data |= (AD469x_REG_CONFIG_IN_PAIR(AD469x_UNIPOLAR_MODE)
Kjansen 1:edd760d6380f 84 | AD469x_REG_CONFIG_IN_MODE(AD469x_INx_REF_GND));
Kjansen 1:edd760d6380f 85 #endif
Kjansen 1:edd760d6380f 86
Kjansen 1:edd760d6380f 87 if (ad469x_spi_reg_write(device,
Kjansen 1:edd760d6380f 88 AD469x_REG_CONFIG_IN(i),
Kjansen 1:edd760d6380f 89 data) != SUCCESS) {
Kjansen 1:edd760d6380f 90 return FAILURE;
Kjansen 1:edd760d6380f 91 }
Kjansen 1:edd760d6380f 92 }
Kjansen 1:edd760d6380f 93 return SUCCESS;
Kjansen 1:edd760d6380f 94 }