Example program for EVAL-CN0540-ARDZ.

Dependencies:   platform_drivers LTC26X6 AD77681

Committer:
jngarlitos
Date:
Mon Dec 06 05:22:28 2021 +0000
Revision:
1:9dd7c64b4a64
EVAL-CN0540-ARDZ mbed example program Initial Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jngarlitos 1:9dd7c64b4a64 1 /******************************************************************************
jngarlitos 1:9dd7c64b4a64 2 *Copyright (c)2020 Analog Devices, Inc.
jngarlitos 1:9dd7c64b4a64 3 *
jngarlitos 1:9dd7c64b4a64 4 * Licensed under the 2020-04-27-CN0540EC License(the "License");
jngarlitos 1:9dd7c64b4a64 5 * you may not use this file except in compliance with the License.
jngarlitos 1:9dd7c64b4a64 6 *
jngarlitos 1:9dd7c64b4a64 7 ****************************************************************************/
jngarlitos 1:9dd7c64b4a64 8
jngarlitos 1:9dd7c64b4a64 9 #ifndef _INIT_PARAMS_H_
jngarlitos 1:9dd7c64b4a64 10 #define _INIT_PARAMS_H_
jngarlitos 1:9dd7c64b4a64 11
jngarlitos 1:9dd7c64b4a64 12 #ifdef __cplusplus
jngarlitos 1:9dd7c64b4a64 13 extern "C"
jngarlitos 1:9dd7c64b4a64 14 {
jngarlitos 1:9dd7c64b4a64 15 #endif
jngarlitos 1:9dd7c64b4a64 16
jngarlitos 1:9dd7c64b4a64 17 #include <mbed.h>
jngarlitos 1:9dd7c64b4a64 18 #include <stdint.h>
jngarlitos 1:9dd7c64b4a64 19 #include "ad77681.h"
jngarlitos 1:9dd7c64b4a64 20 #include "ltc26x6.h"
jngarlitos 1:9dd7c64b4a64 21 //#include "cn0540_piezo.h"
jngarlitos 1:9dd7c64b4a64 22 #include "platform_drivers.h"
jngarlitos 1:9dd7c64b4a64 23 #include "platform_support.h"
jngarlitos 1:9dd7c64b4a64 24 #include "spi_extra.h"
jngarlitos 1:9dd7c64b4a64 25 #include "i2c_extra.h"
jngarlitos 1:9dd7c64b4a64 26 #include "gpio.h"
jngarlitos 1:9dd7c64b4a64 27
jngarlitos 1:9dd7c64b4a64 28 /******************************************************************************/
jngarlitos 1:9dd7c64b4a64 29 /********************** Macros and Constants Definitions **********************/
jngarlitos 1:9dd7c64b4a64 30 /******************************************************************************/
jngarlitos 1:9dd7c64b4a64 31
jngarlitos 1:9dd7c64b4a64 32 //DAC address
jngarlitos 1:9dd7c64b4a64 33 #define LTC2606_I2C_ADDRESS 0x10
jngarlitos 1:9dd7c64b4a64 34 //GPIOs pins
jngarlitos 1:9dd7c64b4a64 35 #define ARD_RED_LED_PIN D0
jngarlitos 1:9dd7c64b4a64 36 #define ARD_BLUE_LED_PIN D1
jngarlitos 1:9dd7c64b4a64 37 #define DRDY_PIN D2
jngarlitos 1:9dd7c64b4a64 38 #define ADC_RST_PIN D7
jngarlitos 1:9dd7c64b4a64 39 #define ARD_BUF_EN_PIN D9
jngarlitos 1:9dd7c64b4a64 40
jngarlitos 1:9dd7c64b4a64 41 // Init params
jngarlitos 1:9dd7c64b4a64 42
jngarlitos 1:9dd7c64b4a64 43 // Init SPI extra parameters structure
jngarlitos 1:9dd7c64b4a64 44 mbed_spi_init_param spi_init_extra_params = {
jngarlitos 1:9dd7c64b4a64 45 .spi_clk_pin = SPI_SCK,
jngarlitos 1:9dd7c64b4a64 46 .spi_miso_pin = SPI_MISO,
jngarlitos 1:9dd7c64b4a64 47 .spi_mosi_pin = SPI_MOSI
jngarlitos 1:9dd7c64b4a64 48 };
jngarlitos 1:9dd7c64b4a64 49 // SPI bus init parameters
jngarlitos 1:9dd7c64b4a64 50 spi_init_param spi_params = {
jngarlitos 1:9dd7c64b4a64 51 20000000, // SPI Speed
jngarlitos 1:9dd7c64b4a64 52 SPI_CS, // SPI CS select index
jngarlitos 1:9dd7c64b4a64 53 SPI_MODE_3, // SPI Mode
jngarlitos 1:9dd7c64b4a64 54 &spi_init_extra_params, // SPI extra configurations
jngarlitos 1:9dd7c64b4a64 55 };
jngarlitos 1:9dd7c64b4a64 56
jngarlitos 1:9dd7c64b4a64 57 // Initial parameters for the ADC AD7768-1
jngarlitos 1:9dd7c64b4a64 58 ad77681_init_param init_params = {
jngarlitos 1:9dd7c64b4a64 59
jngarlitos 1:9dd7c64b4a64 60 spi_params, // SPI parameters
jngarlitos 1:9dd7c64b4a64 61 AD77681_ECO, // power_mode
jngarlitos 1:9dd7c64b4a64 62 AD77681_MCLK_DIV_16, // mclk_div
jngarlitos 1:9dd7c64b4a64 63 AD77681_CONV_CONTINUOUS, // conv_mode
jngarlitos 1:9dd7c64b4a64 64 AD77681_AIN_SHORT, // diag_mux_sel
jngarlitos 1:9dd7c64b4a64 65 false, // conv_diag_sel
jngarlitos 1:9dd7c64b4a64 66 AD77681_CONV_24BIT, // conv_len
jngarlitos 1:9dd7c64b4a64 67 AD77681_NO_CRC, // crc_sel
jngarlitos 1:9dd7c64b4a64 68 0, // status bit
jngarlitos 1:9dd7c64b4a64 69 AD77681_VCM_HALF_VCC, // VCM setup
jngarlitos 1:9dd7c64b4a64 70 AD77681_AINn_ENABLED, // AIN- precharge buffer
jngarlitos 1:9dd7c64b4a64 71 AD77681_AINp_ENABLED, // AIN+ precharge buffer
jngarlitos 1:9dd7c64b4a64 72 AD77681_BUFn_ENABLED, // REF- buffer
jngarlitos 1:9dd7c64b4a64 73 AD77681_BUFp_ENABLED, // REF+ buffer
jngarlitos 1:9dd7c64b4a64 74 AD77681_FIR, // FIR Filter
jngarlitos 1:9dd7c64b4a64 75 AD77681_SINC5_FIR_DECx32, // Decimate by 32
jngarlitos 1:9dd7c64b4a64 76 0, // OS ratio of SINC3
jngarlitos 1:9dd7c64b4a64 77 4096, // Reference voltage
jngarlitos 1:9dd7c64b4a64 78 16384, // MCLK in kHz
jngarlitos 1:9dd7c64b4a64 79 32000, // Sample rate in Hz
jngarlitos 1:9dd7c64b4a64 80 1, // Data frame bytes
jngarlitos 1:9dd7c64b4a64 81 };
jngarlitos 1:9dd7c64b4a64 82
jngarlitos 1:9dd7c64b4a64 83 //Extra mbed_i2c_init_param
jngarlitos 1:9dd7c64b4a64 84 mbed_i2c_init_param mbed_i2c_init_dac_extra_params = {
jngarlitos 1:9dd7c64b4a64 85 .i2c_sda_pin = I2C_SDA,
jngarlitos 1:9dd7c64b4a64 86 .i2c_scl_pin = I2C_SCL,
jngarlitos 1:9dd7c64b4a64 87 };
jngarlitos 1:9dd7c64b4a64 88
jngarlitos 1:9dd7c64b4a64 89 // Initial parameters for the DAC LTC2606's I2C bus
jngarlitos 1:9dd7c64b4a64 90 i2c_init_param i2c_params_dac = {
jngarlitos 1:9dd7c64b4a64 91 100000, // I2C speed (hz)
jngarlitos 1:9dd7c64b4a64 92 LTC26X6_WRITE_ADDRESS(LTC2606_I2C_ADDRESS), // I2C slave address
jngarlitos 1:9dd7c64b4a64 93 &mbed_i2c_init_dac_extra_params,
jngarlitos 1:9dd7c64b4a64 94 };
jngarlitos 1:9dd7c64b4a64 95
jngarlitos 1:9dd7c64b4a64 96 // Initial parameters for the DAC LTC2606 itself
jngarlitos 1:9dd7c64b4a64 97 ltc26x6_init_param init_params_dac = {
jngarlitos 1:9dd7c64b4a64 98 i2c_params_dac, // I2C parameters
jngarlitos 1:9dd7c64b4a64 99 16, // Resolution (LTC2606)
jngarlitos 1:9dd7c64b4a64 100 2.5, // Reference Voltage
jngarlitos 1:9dd7c64b4a64 101 -0.001 // Typical offset
jngarlitos 1:9dd7c64b4a64 102 };
jngarlitos 1:9dd7c64b4a64 103
jngarlitos 1:9dd7c64b4a64 104 /*
jngarlitos 1:9dd7c64b4a64 105 * User-defined coefficients for programmable FIR filter, max 56 coeffs
jngarlitos 1:9dd7c64b4a64 106 *
jngarlitos 1:9dd7c64b4a64 107 * Please note that, inserted coefficiets will be mirrored afterwards,
jngarlitos 1:9dd7c64b4a64 108 * so you must insert only one half of all the coefficients.
jngarlitos 1:9dd7c64b4a64 109 *
jngarlitos 1:9dd7c64b4a64 110 * Please note your original filer must have ODD count of coefficients,
jngarlitos 1:9dd7c64b4a64 111 * allowing internal ADC circuitry to mirror the coefficients properly.
jngarlitos 1:9dd7c64b4a64 112 *
jngarlitos 1:9dd7c64b4a64 113 * In case of usage lower count of coeffs than 56, please make sure, that
jngarlitos 1:9dd7c64b4a64 114 * the variable 'count_of_active_coeffs' bellow, carries the correct number
jngarlitos 1:9dd7c64b4a64 115 * of coeficients, allowing to fill the rest of the coeffs by zeroes
jngarlitos 1:9dd7c64b4a64 116 *
jngarlitos 1:9dd7c64b4a64 117 * Default coeffs:
jngarlitos 1:9dd7c64b4a64 118 **/
jngarlitos 1:9dd7c64b4a64 119 const uint8_t count_of_active_coeffs = 56;
jngarlitos 1:9dd7c64b4a64 120
jngarlitos 1:9dd7c64b4a64 121 const float programmable_FIR[56] = {
jngarlitos 1:9dd7c64b4a64 122
jngarlitos 1:9dd7c64b4a64 123 -9.53674E-07,
jngarlitos 1:9dd7c64b4a64 124 3.33786E-06,
jngarlitos 1:9dd7c64b4a64 125 5.48363E-06,
jngarlitos 1:9dd7c64b4a64 126 - 5.48363E-06,
jngarlitos 1:9dd7c64b4a64 127 - 1.54972E-05,
jngarlitos 1:9dd7c64b4a64 128 5.24521E-06,
jngarlitos 1:9dd7c64b4a64 129 3.40939E-05,
jngarlitos 1:9dd7c64b4a64 130 3.57628E-06,
jngarlitos 1:9dd7c64b4a64 131 - 6.17504E-05,
jngarlitos 1:9dd7c64b4a64 132 - 3.05176E-05,
jngarlitos 1:9dd7c64b4a64 133 9.56059E-05,
jngarlitos 1:9dd7c64b4a64 134 8.74996E-05,
jngarlitos 1:9dd7c64b4a64 135 - 0.000124693,
jngarlitos 1:9dd7c64b4a64 136 - 0.000186205,
jngarlitos 1:9dd7c64b4a64 137 0.000128746,
jngarlitos 1:9dd7c64b4a64 138 0.000333548,
jngarlitos 1:9dd7c64b4a64 139 - 7.70092E-05,
jngarlitos 1:9dd7c64b4a64 140 - 0.000524998,
jngarlitos 1:9dd7c64b4a64 141 - 6.98566E-05,
jngarlitos 1:9dd7c64b4a64 142 0.000738144,
jngarlitos 1:9dd7c64b4a64 143 0.000353813,
jngarlitos 1:9dd7c64b4a64 144 - 0.000924349,
jngarlitos 1:9dd7c64b4a64 145 - 0.000809193,
jngarlitos 1:9dd7c64b4a64 146 0.001007795,
jngarlitos 1:9dd7c64b4a64 147 0.00144887,
jngarlitos 1:9dd7c64b4a64 148 - 0.000886202,
jngarlitos 1:9dd7c64b4a64 149 - 0.002248049,
jngarlitos 1:9dd7c64b4a64 150 0.000440598,
jngarlitos 1:9dd7c64b4a64 151 0.00312829,
jngarlitos 1:9dd7c64b4a64 152 0.000447273,
jngarlitos 1:9dd7c64b4a64 153 - 0.00394845,
jngarlitos 1:9dd7c64b4a64 154 - 0.001870632,
jngarlitos 1:9dd7c64b4a64 155 0.004499197,
jngarlitos 1:9dd7c64b4a64 156 0.003867388,
jngarlitos 1:9dd7c64b4a64 157 - 0.004512072,
jngarlitos 1:9dd7c64b4a64 158 - 0.006392241,
jngarlitos 1:9dd7c64b4a64 159 0.003675938,
jngarlitos 1:9dd7c64b4a64 160 0.009288311,
jngarlitos 1:9dd7c64b4a64 161 - 0.001663446,
jngarlitos 1:9dd7c64b4a64 162 - 0.012270451,
jngarlitos 1:9dd7c64b4a64 163 - 0.001842737,
jngarlitos 1:9dd7c64b4a64 164 0.014911652,
jngarlitos 1:9dd7c64b4a64 165 0.007131577,
jngarlitos 1:9dd7c64b4a64 166 - 0.016633987,
jngarlitos 1:9dd7c64b4a64 167 - 0.014478207,
jngarlitos 1:9dd7c64b4a64 168 0.016674042,
jngarlitos 1:9dd7c64b4a64 169 0.024231672,
jngarlitos 1:9dd7c64b4a64 170 - 0.013958216,
jngarlitos 1:9dd7c64b4a64 171 - 0.037100792,
jngarlitos 1:9dd7c64b4a64 172 0.006659508,
jngarlitos 1:9dd7c64b4a64 173 0.055086851,
jngarlitos 1:9dd7c64b4a64 174 0.009580374,
jngarlitos 1:9dd7c64b4a64 175 - 0.085582495,
jngarlitos 1:9dd7c64b4a64 176 - 0.052207232,
jngarlitos 1:9dd7c64b4a64 177 0.177955151,
jngarlitos 1:9dd7c64b4a64 178 0.416601658,
jngarlitos 1:9dd7c64b4a64 179 };
jngarlitos 1:9dd7c64b4a64 180
jngarlitos 1:9dd7c64b4a64 181 #ifdef __cplusplus
jngarlitos 1:9dd7c64b4a64 182 }
jngarlitos 1:9dd7c64b4a64 183 #endif // __cplusplus
jngarlitos 1:9dd7c64b4a64 184 #endif // !_INIT_PARAMS_H_
jngarlitos 1:9dd7c64b4a64 185
jngarlitos 1:9dd7c64b4a64 186