Maxim Integrated MAX11131 SPI 12-bit 16-channel ADC with SampleSet

Dependents:   MAX11131BOB_Tester MAX11131BOB_12bit_16ch_SampleSet_SPI_ADC MAX11131BOB_Serial_Tester

Committer:
whismanoid
Date:
Sun Jun 06 03:47:56 2021 -0700
Revision:
11:eaaf13fe381e
Parent:
10:92aedaa14cce
selftest SPIfrequency SPIgetFrequency

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 9:8d47cb713984 1 // /*******************************************************************************
whismanoid 9:8d47cb713984 2 // * Copyright (C) 2021 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 0:f7d706d2904d 3 // *
whismanoid 0:f7d706d2904d 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 0:f7d706d2904d 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 0:f7d706d2904d 6 // * to deal in the Software without restriction, including without limitation
whismanoid 0:f7d706d2904d 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 0:f7d706d2904d 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 0:f7d706d2904d 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 0:f7d706d2904d 10 // *
whismanoid 0:f7d706d2904d 11 // * The above copyright notice and this permission notice shall be included
whismanoid 0:f7d706d2904d 12 // * in all copies or substantial portions of the Software.
whismanoid 0:f7d706d2904d 13 // *
whismanoid 0:f7d706d2904d 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 0:f7d706d2904d 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 0:f7d706d2904d 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 0:f7d706d2904d 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 0:f7d706d2904d 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 0:f7d706d2904d 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 0:f7d706d2904d 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 0:f7d706d2904d 21 // *
whismanoid 0:f7d706d2904d 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 0:f7d706d2904d 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 0:f7d706d2904d 24 // * Products, Inc. Branding Policy.
whismanoid 0:f7d706d2904d 25 // *
whismanoid 0:f7d706d2904d 26 // * The mere transfer of this software does not imply any licenses
whismanoid 0:f7d706d2904d 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 0:f7d706d2904d 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 0:f7d706d2904d 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 0:f7d706d2904d 30 // * ownership rights.
whismanoid 0:f7d706d2904d 31 // *******************************************************************************
whismanoid 0:f7d706d2904d 32 // */
whismanoid 0:f7d706d2904d 33 // *********************************************************************
whismanoid 0:f7d706d2904d 34 // @file MAX11131.h
whismanoid 0:f7d706d2904d 35 // *********************************************************************
whismanoid 0:f7d706d2904d 36 // Header file
whismanoid 0:f7d706d2904d 37 // DO NOT EDIT; except areas designated "CUSTOMIZE". Automatically generated file.
whismanoid 0:f7d706d2904d 38 // generated by XMLSystemOfDevicesToMBED.py
whismanoid 0:f7d706d2904d 39 // System Name = ExampleSystem
whismanoid 0:f7d706d2904d 40 // System Description = Device driver example
whismanoid 0:f7d706d2904d 41 // Device Name = MAX11131
whismanoid 0:f7d706d2904d 42 // Device Description = 3Msps, Low-Power, Serial SPI 12-Bit, 16-Channel, Differential/Single-Ended Input, SAR ADC
whismanoid 6:cb7bdeb185d0 43 // Device DeviceBriefDescription = 12-bit 3Msps 16-ch ADC
whismanoid 0:f7d706d2904d 44 // Device Manufacturer = Maxim Integrated
whismanoid 0:f7d706d2904d 45 // Device PartNumber = MAX11131ATI+
whismanoid 0:f7d706d2904d 46 // Device RegValue_Width = DataWidth16bit_HL
whismanoid 0:f7d706d2904d 47 //
whismanoid 0:f7d706d2904d 48 // ADC MaxOutputDataRate = 3Msps
whismanoid 0:f7d706d2904d 49 // ADC NumChannels = 16
whismanoid 0:f7d706d2904d 50 // ADC ResolutionBits = 12
whismanoid 0:f7d706d2904d 51 //
whismanoid 0:f7d706d2904d 52 // SPI CS = ActiveLow
whismanoid 0:f7d706d2904d 53 // SPI FrameStart = CS
whismanoid 0:f7d706d2904d 54 // SPI CPOL = 1
whismanoid 0:f7d706d2904d 55 // SPI CPHA = 1
whismanoid 0:f7d706d2904d 56 // SPI MOSI and MISO Data are both stable on Rising edge of SCLK
whismanoid 0:f7d706d2904d 57 // SPI SCLK Idle High
whismanoid 0:f7d706d2904d 58 // SPI SCLKMaxMHz = 48
whismanoid 0:f7d706d2904d 59 // SPI SCLKMinMHz = 0.48
whismanoid 0:f7d706d2904d 60 //
whismanoid 0:f7d706d2904d 61
whismanoid 0:f7d706d2904d 62
whismanoid 0:f7d706d2904d 63 // Prevent multiple declaration
whismanoid 0:f7d706d2904d 64 #ifndef __MAX11131_H__
whismanoid 0:f7d706d2904d 65 #define __MAX11131_H__
whismanoid 0:f7d706d2904d 66
whismanoid 6:cb7bdeb185d0 67 // standard include for target platform -- Platform_Include_Boilerplate
whismanoid 0:f7d706d2904d 68 #include "mbed.h"
whismanoid 6:cb7bdeb185d0 69 // Platforms:
whismanoid 6:cb7bdeb185d0 70 // - MAX32625MBED
whismanoid 6:cb7bdeb185d0 71 // - supports mbed-os-5.11, requires USBDevice library
whismanoid 6:cb7bdeb185d0 72 // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/
whismanoid 6:cb7bdeb185d0 73 // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 74 // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 75 // - MAX32600MBED
whismanoid 9:8d47cb713984 76 // - Please note the last supported version is Mbed OS 6.3.
whismanoid 6:cb7bdeb185d0 77 // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 78 // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 79 // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board.
whismanoid 6:cb7bdeb185d0 80 // - NUCLEO_F446RE
whismanoid 6:cb7bdeb185d0 81 // - remove USBDevice library
whismanoid 6:cb7bdeb185d0 82 // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 83 // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 84 // - NUCLEO_F401RE
whismanoid 6:cb7bdeb185d0 85 // - remove USBDevice library
whismanoid 6:cb7bdeb185d0 86 // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 87 // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 88 // - MAX32630FTHR
whismanoid 6:cb7bdeb185d0 89 // - #include "max32630fthr.h"
whismanoid 9:8d47cb713984 90 // - add http://developer.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 6:cb7bdeb185d0 91 // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 92 // - MAX32620FTHR
whismanoid 6:cb7bdeb185d0 93 // - #include "MAX32620FTHR.h"
whismanoid 6:cb7bdeb185d0 94 // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 95 // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 6:cb7bdeb185d0 96 // - not tested yet
whismanoid 6:cb7bdeb185d0 97 // - MAX32625PICO
whismanoid 9:8d47cb713984 98 // - #include "max32625pico.h"
whismanoid 9:8d47cb713984 99 // - add https://os.mbed.com/users/switches/code/max32625pico/
whismanoid 6:cb7bdeb185d0 100 // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 101 // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 102 // - not tested yet
whismanoid 9:8d47cb713984 103 // - see https://os.mbed.com/users/switches/code/max32625pico/
whismanoid 9:8d47cb713984 104 // - see https://os.mbed.com/users/switches/code/PICO_board_demo/
whismanoid 9:8d47cb713984 105 // - see https://os.mbed.com/users/switches/code/PICO_USB_I2C_SPI/
whismanoid 9:8d47cb713984 106 // - see https://os.mbed.com/users/switches/code/SerialInterface/
whismanoid 9:8d47cb713984 107 // - Note: To load the MAX32625PICO firmware, hold the button while
whismanoid 9:8d47cb713984 108 // connecting the USB cable, then copy firmware bin file
whismanoid 9:8d47cb713984 109 // to the MAINTENANCE drive.
whismanoid 9:8d47cb713984 110 // - see https://os.mbed.com/platforms/MAX32625PICO/
whismanoid 9:8d47cb713984 111 // - see https://os.mbed.com/teams/MaximIntegrated/wiki/MAX32625PICO-Firmware-Updates
whismanoid 6:cb7bdeb185d0 112 //
whismanoid 6:cb7bdeb185d0 113 // end Platform_Include_Boilerplate
whismanoid 0:f7d706d2904d 114
whismanoid 0:f7d706d2904d 115 //----------------------------------------
whismanoid 0:f7d706d2904d 116 // Global setting for all channels: ADC_CONFIGURATION.REFSEL
whismanoid 0:f7d706d2904d 117 //
whismanoid 0:f7d706d2904d 118 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 119 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 120 //--------------------
whismanoid 0:f7d706d2904d 121 // external single-ended reference
whismanoid 0:f7d706d2904d 122 //~ #define REFSEL_0 1
whismanoid 0:f7d706d2904d 123 //
whismanoid 0:f7d706d2904d 124 //--------------------
whismanoid 0:f7d706d2904d 125 // external differential reference (For the 16-channel chips: channel AIN15 is unavailable, the pin is assigned to REF-.)
whismanoid 0:f7d706d2904d 126 //~ #define REFSEL_1 1
whismanoid 0:f7d706d2904d 127 //
whismanoid 0:f7d706d2904d 128 //--------------------
whismanoid 0:f7d706d2904d 129 //
whismanoid 0:f7d706d2904d 130 // Default settings if not defined at project level
whismanoid 0:f7d706d2904d 131 #ifndef REFSEL_0
whismanoid 0:f7d706d2904d 132 # ifndef REFSEL_1
whismanoid 0:f7d706d2904d 133 # define REFSEL_0 1
whismanoid 0:f7d706d2904d 134 # define REFSEL_1 0
whismanoid 0:f7d706d2904d 135 # endif // REFSEL_1
whismanoid 0:f7d706d2904d 136 #endif // REFSEL_0
whismanoid 0:f7d706d2904d 137 //
whismanoid 0:f7d706d2904d 138 // (optional diagnostic) pragma message the active setting
whismanoid 0:f7d706d2904d 139 #if REFSEL_0
whismanoid 0:f7d706d2904d 140 //~ # pragma message("REFSEL_0: external single-ended reference")
whismanoid 0:f7d706d2904d 141 #endif // REFSEL_0
whismanoid 0:f7d706d2904d 142 #if REFSEL_1
whismanoid 0:f7d706d2904d 143 //~ # pragma message("REFSEL_1: external differential reference (For the 16-channel chips: channel AIN15 is unavailable, the pin is assigned to REF-.)")
whismanoid 0:f7d706d2904d 144 #endif // REFSEL_1
whismanoid 0:f7d706d2904d 145 //
whismanoid 0:f7d706d2904d 146 // Validate the REFSEL_0 setting
whismanoid 0:f7d706d2904d 147 #if REFSEL_0
whismanoid 0:f7d706d2904d 148 # if REFSEL_1
whismanoid 0:f7d706d2904d 149 # error("cannot have both REFSEL_0 and REFSEL_1; choose one")
whismanoid 0:f7d706d2904d 150 # endif // REFSEL_1
whismanoid 0:f7d706d2904d 151 #endif // REFSEL_0
whismanoid 0:f7d706d2904d 152
whismanoid 0:f7d706d2904d 153 //----------------------------------------
whismanoid 0:f7d706d2904d 154 // Global setting for all channels: UNIPOLAR.PDIFF_COMM
whismanoid 0:f7d706d2904d 155 //
whismanoid 0:f7d706d2904d 156 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 157 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 158 //--------------------
whismanoid 5:6ef046dbe77e 159 // all single-ended channels use GND as common
whismanoid 5:6ef046dbe77e 160 //~ #define PDIFF_COMM_0 1
whismanoid 5:6ef046dbe77e 161 //
whismanoid 5:6ef046dbe77e 162 //--------------------
whismanoid 0:f7d706d2904d 163 // all single-ended channels are pseudo-differential with REF- as common
whismanoid 0:f7d706d2904d 164 //~ #define PDIFF_COMM_1 1
whismanoid 0:f7d706d2904d 165 //
whismanoid 0:f7d706d2904d 166 //--------------------
whismanoid 0:f7d706d2904d 167 //
whismanoid 0:f7d706d2904d 168 // Default settings if not defined at project level
whismanoid 5:6ef046dbe77e 169 #ifndef PDIFF_COMM_0
whismanoid 5:6ef046dbe77e 170 # ifndef PDIFF_COMM_1
whismanoid 5:6ef046dbe77e 171 # define PDIFF_COMM_0 1
whismanoid 0:f7d706d2904d 172 # define PDIFF_COMM_1 0
whismanoid 5:6ef046dbe77e 173 # endif // PDIFF_COMM_1
whismanoid 5:6ef046dbe77e 174 #endif // PDIFF_COMM_0
whismanoid 0:f7d706d2904d 175 //
whismanoid 0:f7d706d2904d 176 // (optional diagnostic) pragma message the active setting
whismanoid 5:6ef046dbe77e 177 #if PDIFF_COMM_0
whismanoid 5:6ef046dbe77e 178 //~ # pragma message("PDIFF_COMM_0: all single-ended channels use GND as common")
whismanoid 5:6ef046dbe77e 179 #endif // PDIFF_COMM_0
whismanoid 0:f7d706d2904d 180 #if PDIFF_COMM_1
whismanoid 0:f7d706d2904d 181 //~ # pragma message("PDIFF_COMM_1: all single-ended channels are pseudo-differential with REF- as common")
whismanoid 0:f7d706d2904d 182 #endif // PDIFF_COMM_1
whismanoid 5:6ef046dbe77e 183 //
whismanoid 5:6ef046dbe77e 184 // Validate the PDIFF_COMM_0 setting
whismanoid 0:f7d706d2904d 185 #if PDIFF_COMM_0
whismanoid 5:6ef046dbe77e 186 # if PDIFF_COMM_1
whismanoid 5:6ef046dbe77e 187 # error("cannot have both PDIFF_COMM_0 and PDIFF_COMM_1; choose one")
whismanoid 5:6ef046dbe77e 188 # endif // PDIFF_COMM_1
whismanoid 0:f7d706d2904d 189 #endif // PDIFF_COMM_0
whismanoid 0:f7d706d2904d 190
whismanoid 0:f7d706d2904d 191 //----------------------------------------
whismanoid 0:f7d706d2904d 192 // ADC Channels AIN0, AIN1
whismanoid 0:f7d706d2904d 193 //
whismanoid 0:f7d706d2904d 194 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 195 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 196 //--------------------
whismanoid 5:6ef046dbe77e 197 // ADC Channels AIN0, AIN1 = Differential Bipolar
whismanoid 5:6ef046dbe77e 198 // Full Scale = 2 * VREF
whismanoid 0:f7d706d2904d 199 // Voltage per LSB count = VREF/2048
whismanoid 5:6ef046dbe77e 200 // AIN0, AIN1 are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 0:f7d706d2904d 201 // AIN0 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 202 // AIN1 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 203 //
whismanoid 5:6ef046dbe77e 204 //~ #define AIN_0_1_DifferentialBipolarFS2Vref 1
whismanoid 0:f7d706d2904d 205 //
whismanoid 0:f7d706d2904d 206 //--------------------
whismanoid 0:f7d706d2904d 207 // ADC Channels AIN0, AIN1 = Differential Bipolar
whismanoid 0:f7d706d2904d 208 // Full Scale = VREF
whismanoid 0:f7d706d2904d 209 // Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 210 // AIN0, AIN1 are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 211 // AIN0 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 212 // AIN1 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 213 //
whismanoid 0:f7d706d2904d 214 //~ #define AIN_0_1_DifferentialBipolarFSVref 1
whismanoid 0:f7d706d2904d 215 //
whismanoid 0:f7d706d2904d 216 //--------------------
whismanoid 5:6ef046dbe77e 217 // ADC Channels AIN0, AIN1 = Differential Unipolar (AIN0 > AIN1)
whismanoid 5:6ef046dbe77e 218 // Full Scale = VREF
whismanoid 0:f7d706d2904d 219 // Voltage per LSB count = VREF/2048
whismanoid 5:6ef046dbe77e 220 // AIN0, AIN1 are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 221 // AIN0 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 222 // AIN1 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 223 //
whismanoid 5:6ef046dbe77e 224 //~ #define AIN_0_1_DifferentialUnipolar 1
whismanoid 0:f7d706d2904d 225 //
whismanoid 0:f7d706d2904d 226 //--------------------
whismanoid 0:f7d706d2904d 227 // ADC Channels AIN0, AIN1 = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 228 // Full Scale = VREF
whismanoid 0:f7d706d2904d 229 // Voltage per LSB count = VREF/2048
whismanoid 0:f7d706d2904d 230 // AIN0 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 231 // AIN1 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 232 // If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 233 // AIN0 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 234 // AIN1 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 235 //
whismanoid 0:f7d706d2904d 236 //~ #define AIN_0_1_SingleEnded 1
whismanoid 0:f7d706d2904d 237 //
whismanoid 0:f7d706d2904d 238 //--------------------
whismanoid 0:f7d706d2904d 239 //
whismanoid 0:f7d706d2904d 240 // Default settings if not defined at project level
whismanoid 6:cb7bdeb185d0 241 #ifndef AIN_0_1_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 242 # ifndef AIN_0_1_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 243 # ifndef AIN_0_1_DifferentialUnipolar
whismanoid 0:f7d706d2904d 244 # ifndef AIN_0_1_SingleEnded
whismanoid 6:cb7bdeb185d0 245 # define AIN_0_1_DifferentialBipolarFS2Vref 0
whismanoid 6:cb7bdeb185d0 246 # define AIN_0_1_DifferentialBipolarFSVref 0
whismanoid 0:f7d706d2904d 247 # define AIN_0_1_DifferentialUnipolar 0
whismanoid 0:f7d706d2904d 248 # define AIN_0_1_SingleEnded 1
whismanoid 0:f7d706d2904d 249 # endif // AIN_0_1_SingleEnded
whismanoid 6:cb7bdeb185d0 250 # endif // AIN_0_1_DifferentialUnipolar
whismanoid 0:f7d706d2904d 251 # endif // AIN_0_1_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 252 #endif // AIN_0_1_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 253 //
whismanoid 0:f7d706d2904d 254 // (optional diagnostic) pragma message the active setting
whismanoid 5:6ef046dbe77e 255 #if AIN_0_1_DifferentialBipolarFS2Vref
whismanoid 5:6ef046dbe77e 256 //~ # pragma message("AIN_0_1_DifferentialBipolarFS2Vref: ADC Channels AIN0, AIN1 = Differential Bipolar")
whismanoid 5:6ef046dbe77e 257 #endif // AIN_0_1_DifferentialBipolarFS2Vref
whismanoid 5:6ef046dbe77e 258 #if AIN_0_1_DifferentialBipolarFSVref
whismanoid 5:6ef046dbe77e 259 //~ # pragma message("AIN_0_1_DifferentialBipolarFSVref: ADC Channels AIN0, AIN1 = Differential Bipolar")
whismanoid 5:6ef046dbe77e 260 #endif // AIN_0_1_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 261 #if AIN_0_1_DifferentialUnipolar
whismanoid 0:f7d706d2904d 262 //~ # pragma message("AIN_0_1_DifferentialUnipolar: ADC Channels AIN0, AIN1 = Differential Unipolar (AIN0 > AIN1)")
whismanoid 0:f7d706d2904d 263 #endif // AIN_0_1_DifferentialUnipolar
whismanoid 0:f7d706d2904d 264 #if AIN_0_1_SingleEnded
whismanoid 0:f7d706d2904d 265 //~ # pragma message("AIN_0_1_SingleEnded: ADC Channels AIN0, AIN1 = Both Single-Ended, Unipolar")
whismanoid 0:f7d706d2904d 266 #endif // AIN_0_1_SingleEnded
whismanoid 0:f7d706d2904d 267 //
whismanoid 6:cb7bdeb185d0 268 // Validate the AIN_0_1_DifferentialBipolarFS2Vref setting
whismanoid 6:cb7bdeb185d0 269 #if AIN_0_1_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 270 # if AIN_0_1_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 271 # error("cannot have both AIN_0_1_DifferentialBipolarFS2Vref and AIN_0_1_DifferentialBipolarFSVref; choose one")
whismanoid 0:f7d706d2904d 272 # endif // AIN_0_1_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 273 # if AIN_0_1_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 274 # error("cannot have both AIN_0_1_DifferentialBipolarFS2Vref and AIN_0_1_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 275 # endif // AIN_0_1_DifferentialUnipolar
whismanoid 0:f7d706d2904d 276 # if AIN_0_1_SingleEnded
whismanoid 6:cb7bdeb185d0 277 # error("cannot have both AIN_0_1_DifferentialBipolarFS2Vref and AIN_0_1_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 278 # endif // AIN_0_1_SingleEnded
whismanoid 6:cb7bdeb185d0 279 #endif // AIN_0_1_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 280 //
whismanoid 0:f7d706d2904d 281 // Validate the AIN_0_1_DifferentialBipolarFSVref setting
whismanoid 0:f7d706d2904d 282 #if AIN_0_1_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 283 # if AIN_0_1_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 284 # error("cannot have both AIN_0_1_DifferentialBipolarFSVref and AIN_0_1_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 285 # endif // AIN_0_1_DifferentialUnipolar
whismanoid 0:f7d706d2904d 286 # if AIN_0_1_SingleEnded
whismanoid 0:f7d706d2904d 287 # error("cannot have both AIN_0_1_DifferentialBipolarFSVref and AIN_0_1_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 288 # endif // AIN_0_1_SingleEnded
whismanoid 0:f7d706d2904d 289 #endif // AIN_0_1_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 290 //
whismanoid 6:cb7bdeb185d0 291 // Validate the AIN_0_1_DifferentialUnipolar setting
whismanoid 6:cb7bdeb185d0 292 #if AIN_0_1_DifferentialUnipolar
whismanoid 0:f7d706d2904d 293 # if AIN_0_1_SingleEnded
whismanoid 6:cb7bdeb185d0 294 # error("cannot have both AIN_0_1_DifferentialUnipolar and AIN_0_1_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 295 # endif // AIN_0_1_SingleEnded
whismanoid 6:cb7bdeb185d0 296 #endif // AIN_0_1_DifferentialUnipolar
whismanoid 0:f7d706d2904d 297
whismanoid 0:f7d706d2904d 298 //----------------------------------------
whismanoid 0:f7d706d2904d 299 // ADC Channels AIN2, AIN3
whismanoid 0:f7d706d2904d 300 //
whismanoid 0:f7d706d2904d 301 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 302 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 303 //--------------------
whismanoid 0:f7d706d2904d 304 // ADC Channels AIN2, AIN3 = Differential Bipolar
whismanoid 5:6ef046dbe77e 305 // Full Scale = 2 * VREF
whismanoid 5:6ef046dbe77e 306 // Voltage per LSB count = VREF/2048
whismanoid 5:6ef046dbe77e 307 // AIN2, AIN3 are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 5:6ef046dbe77e 308 // AIN2 voltage must always be between 0 and VREF.
whismanoid 5:6ef046dbe77e 309 // AIN3 voltage must always be between 0 and VREF.
whismanoid 5:6ef046dbe77e 310 //
whismanoid 5:6ef046dbe77e 311 //~ #define AIN_2_3_DifferentialBipolarFS2Vref 1
whismanoid 5:6ef046dbe77e 312 //
whismanoid 5:6ef046dbe77e 313 //--------------------
whismanoid 5:6ef046dbe77e 314 // ADC Channels AIN2, AIN3 = Differential Bipolar
whismanoid 0:f7d706d2904d 315 // Full Scale = VREF
whismanoid 0:f7d706d2904d 316 // Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 317 // AIN2, AIN3 are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 318 // AIN2 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 319 // AIN3 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 320 //
whismanoid 0:f7d706d2904d 321 //~ #define AIN_2_3_DifferentialBipolarFSVref 1
whismanoid 0:f7d706d2904d 322 //
whismanoid 0:f7d706d2904d 323 //--------------------
whismanoid 5:6ef046dbe77e 324 // ADC Channels AIN2, AIN3 = Differential Unipolar (AIN2 > AIN3)
whismanoid 5:6ef046dbe77e 325 // Full Scale = VREF
whismanoid 0:f7d706d2904d 326 // Voltage per LSB count = VREF/2048
whismanoid 5:6ef046dbe77e 327 // AIN2, AIN3 are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 328 // AIN2 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 329 // AIN3 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 330 //
whismanoid 5:6ef046dbe77e 331 //~ #define AIN_2_3_DifferentialUnipolar 1
whismanoid 0:f7d706d2904d 332 //
whismanoid 0:f7d706d2904d 333 //--------------------
whismanoid 0:f7d706d2904d 334 // ADC Channels AIN2, AIN3 = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 335 // Full Scale = VREF
whismanoid 0:f7d706d2904d 336 // Voltage per LSB count = VREF/2048
whismanoid 0:f7d706d2904d 337 // AIN2 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 338 // AIN3 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 339 // If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 340 // AIN2 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 341 // AIN3 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 342 //
whismanoid 0:f7d706d2904d 343 //~ #define AIN_2_3_SingleEnded 1
whismanoid 0:f7d706d2904d 344 //
whismanoid 0:f7d706d2904d 345 //--------------------
whismanoid 0:f7d706d2904d 346 //
whismanoid 0:f7d706d2904d 347 // Default settings if not defined at project level
whismanoid 6:cb7bdeb185d0 348 #ifndef AIN_2_3_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 349 # ifndef AIN_2_3_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 350 # ifndef AIN_2_3_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 351 # ifndef AIN_2_3_SingleEnded
whismanoid 6:cb7bdeb185d0 352 # define AIN_2_3_DifferentialBipolarFS2Vref 0
whismanoid 0:f7d706d2904d 353 # define AIN_2_3_DifferentialBipolarFSVref 0
whismanoid 6:cb7bdeb185d0 354 # define AIN_2_3_DifferentialUnipolar 0
whismanoid 0:f7d706d2904d 355 # define AIN_2_3_SingleEnded 1
whismanoid 6:cb7bdeb185d0 356 # endif // AIN_2_3_SingleEnded
whismanoid 6:cb7bdeb185d0 357 # endif // AIN_2_3_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 358 # endif // AIN_2_3_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 359 #endif // AIN_2_3_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 360 //
whismanoid 0:f7d706d2904d 361 // (optional diagnostic) pragma message the active setting
whismanoid 6:cb7bdeb185d0 362 #if AIN_2_3_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 363 //~ # pragma message("AIN_2_3_DifferentialBipolarFS2Vref: ADC Channels AIN2, AIN3 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 364 #endif // AIN_2_3_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 365 #if AIN_2_3_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 366 //~ # pragma message("AIN_2_3_DifferentialBipolarFSVref: ADC Channels AIN2, AIN3 = Differential Bipolar")
whismanoid 0:f7d706d2904d 367 #endif // AIN_2_3_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 368 #if AIN_2_3_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 369 //~ # pragma message("AIN_2_3_DifferentialUnipolar: ADC Channels AIN2, AIN3 = Differential Unipolar (AIN2 > AIN3)")
whismanoid 6:cb7bdeb185d0 370 #endif // AIN_2_3_DifferentialUnipolar
whismanoid 0:f7d706d2904d 371 #if AIN_2_3_SingleEnded
whismanoid 0:f7d706d2904d 372 //~ # pragma message("AIN_2_3_SingleEnded: ADC Channels AIN2, AIN3 = Both Single-Ended, Unipolar")
whismanoid 0:f7d706d2904d 373 #endif // AIN_2_3_SingleEnded
whismanoid 6:cb7bdeb185d0 374 //
whismanoid 6:cb7bdeb185d0 375 // Validate the AIN_2_3_DifferentialBipolarFS2Vref setting
whismanoid 6:cb7bdeb185d0 376 #if AIN_2_3_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 377 # if AIN_2_3_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 378 # error("cannot have both AIN_2_3_DifferentialBipolarFS2Vref and AIN_2_3_DifferentialBipolarFSVref; choose one")
whismanoid 6:cb7bdeb185d0 379 # endif // AIN_2_3_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 380 # if AIN_2_3_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 381 # error("cannot have both AIN_2_3_DifferentialBipolarFS2Vref and AIN_2_3_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 382 # endif // AIN_2_3_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 383 # if AIN_2_3_SingleEnded
whismanoid 6:cb7bdeb185d0 384 # error("cannot have both AIN_2_3_DifferentialBipolarFS2Vref and AIN_2_3_SingleEnded; choose one")
whismanoid 6:cb7bdeb185d0 385 # endif // AIN_2_3_SingleEnded
whismanoid 6:cb7bdeb185d0 386 #endif // AIN_2_3_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 387 //
whismanoid 0:f7d706d2904d 388 // Validate the AIN_2_3_DifferentialBipolarFSVref setting
whismanoid 0:f7d706d2904d 389 #if AIN_2_3_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 390 # if AIN_2_3_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 391 # error("cannot have both AIN_2_3_DifferentialBipolarFSVref and AIN_2_3_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 392 # endif // AIN_2_3_DifferentialUnipolar
whismanoid 0:f7d706d2904d 393 # if AIN_2_3_SingleEnded
whismanoid 0:f7d706d2904d 394 # error("cannot have both AIN_2_3_DifferentialBipolarFSVref and AIN_2_3_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 395 # endif // AIN_2_3_SingleEnded
whismanoid 0:f7d706d2904d 396 #endif // AIN_2_3_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 397 //
whismanoid 6:cb7bdeb185d0 398 // Validate the AIN_2_3_DifferentialUnipolar setting
whismanoid 6:cb7bdeb185d0 399 #if AIN_2_3_DifferentialUnipolar
whismanoid 0:f7d706d2904d 400 # if AIN_2_3_SingleEnded
whismanoid 6:cb7bdeb185d0 401 # error("cannot have both AIN_2_3_DifferentialUnipolar and AIN_2_3_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 402 # endif // AIN_2_3_SingleEnded
whismanoid 6:cb7bdeb185d0 403 #endif // AIN_2_3_DifferentialUnipolar
whismanoid 0:f7d706d2904d 404
whismanoid 0:f7d706d2904d 405 //----------------------------------------
whismanoid 0:f7d706d2904d 406 // ADC Channels AIN4, AIN5
whismanoid 0:f7d706d2904d 407 //
whismanoid 0:f7d706d2904d 408 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 409 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 410 //--------------------
whismanoid 5:6ef046dbe77e 411 // ADC Channels AIN4, AIN5 = Differential Bipolar
whismanoid 5:6ef046dbe77e 412 // Full Scale = 2 * VREF
whismanoid 0:f7d706d2904d 413 // Voltage per LSB count = VREF/2048
whismanoid 5:6ef046dbe77e 414 // AIN4, AIN5 are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 0:f7d706d2904d 415 // AIN4 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 416 // AIN5 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 417 //
whismanoid 5:6ef046dbe77e 418 //~ #define AIN_4_5_DifferentialBipolarFS2Vref 1
whismanoid 0:f7d706d2904d 419 //
whismanoid 0:f7d706d2904d 420 //--------------------
whismanoid 0:f7d706d2904d 421 // ADC Channels AIN4, AIN5 = Differential Bipolar
whismanoid 0:f7d706d2904d 422 // Full Scale = VREF
whismanoid 0:f7d706d2904d 423 // Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 424 // AIN4, AIN5 are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 425 // AIN4 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 426 // AIN5 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 427 //
whismanoid 0:f7d706d2904d 428 //~ #define AIN_4_5_DifferentialBipolarFSVref 1
whismanoid 0:f7d706d2904d 429 //
whismanoid 0:f7d706d2904d 430 //--------------------
whismanoid 5:6ef046dbe77e 431 // ADC Channels AIN4, AIN5 = Differential Unipolar (AIN4 > AIN5)
whismanoid 5:6ef046dbe77e 432 // Full Scale = VREF
whismanoid 0:f7d706d2904d 433 // Voltage per LSB count = VREF/2048
whismanoid 5:6ef046dbe77e 434 // AIN4, AIN5 are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 435 // AIN4 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 436 // AIN5 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 437 //
whismanoid 5:6ef046dbe77e 438 //~ #define AIN_4_5_DifferentialUnipolar 1
whismanoid 0:f7d706d2904d 439 //
whismanoid 0:f7d706d2904d 440 //--------------------
whismanoid 0:f7d706d2904d 441 // ADC Channels AIN4, AIN5 = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 442 // Full Scale = VREF
whismanoid 0:f7d706d2904d 443 // Voltage per LSB count = VREF/2048
whismanoid 0:f7d706d2904d 444 // AIN4 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 445 // AIN5 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 446 // If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 447 // AIN4 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 448 // AIN5 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 449 //
whismanoid 0:f7d706d2904d 450 //~ #define AIN_4_5_SingleEnded 1
whismanoid 0:f7d706d2904d 451 //
whismanoid 0:f7d706d2904d 452 //--------------------
whismanoid 0:f7d706d2904d 453 //
whismanoid 0:f7d706d2904d 454 // Default settings if not defined at project level
whismanoid 6:cb7bdeb185d0 455 #ifndef AIN_4_5_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 456 # ifndef AIN_4_5_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 457 # ifndef AIN_4_5_DifferentialUnipolar
whismanoid 0:f7d706d2904d 458 # ifndef AIN_4_5_SingleEnded
whismanoid 6:cb7bdeb185d0 459 # define AIN_4_5_DifferentialBipolarFS2Vref 0
whismanoid 6:cb7bdeb185d0 460 # define AIN_4_5_DifferentialBipolarFSVref 0
whismanoid 0:f7d706d2904d 461 # define AIN_4_5_DifferentialUnipolar 0
whismanoid 0:f7d706d2904d 462 # define AIN_4_5_SingleEnded 1
whismanoid 0:f7d706d2904d 463 # endif // AIN_4_5_SingleEnded
whismanoid 6:cb7bdeb185d0 464 # endif // AIN_4_5_DifferentialUnipolar
whismanoid 0:f7d706d2904d 465 # endif // AIN_4_5_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 466 #endif // AIN_4_5_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 467 //
whismanoid 0:f7d706d2904d 468 // (optional diagnostic) pragma message the active setting
whismanoid 6:cb7bdeb185d0 469 #if AIN_4_5_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 470 //~ # pragma message("AIN_4_5_DifferentialBipolarFS2Vref: ADC Channels AIN4, AIN5 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 471 #endif // AIN_4_5_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 472 #if AIN_4_5_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 473 //~ # pragma message("AIN_4_5_DifferentialBipolarFSVref: ADC Channels AIN4, AIN5 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 474 #endif // AIN_4_5_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 475 #if AIN_4_5_DifferentialUnipolar
whismanoid 0:f7d706d2904d 476 //~ # pragma message("AIN_4_5_DifferentialUnipolar: ADC Channels AIN4, AIN5 = Differential Unipolar (AIN4 > AIN5)")
whismanoid 0:f7d706d2904d 477 #endif // AIN_4_5_DifferentialUnipolar
whismanoid 0:f7d706d2904d 478 #if AIN_4_5_SingleEnded
whismanoid 0:f7d706d2904d 479 //~ # pragma message("AIN_4_5_SingleEnded: ADC Channels AIN4, AIN5 = Both Single-Ended, Unipolar")
whismanoid 0:f7d706d2904d 480 #endif // AIN_4_5_SingleEnded
whismanoid 0:f7d706d2904d 481 //
whismanoid 6:cb7bdeb185d0 482 // Validate the AIN_4_5_DifferentialBipolarFS2Vref setting
whismanoid 6:cb7bdeb185d0 483 #if AIN_4_5_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 484 # if AIN_4_5_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 485 # error("cannot have both AIN_4_5_DifferentialBipolarFS2Vref and AIN_4_5_DifferentialBipolarFSVref; choose one")
whismanoid 0:f7d706d2904d 486 # endif // AIN_4_5_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 487 # if AIN_4_5_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 488 # error("cannot have both AIN_4_5_DifferentialBipolarFS2Vref and AIN_4_5_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 489 # endif // AIN_4_5_DifferentialUnipolar
whismanoid 0:f7d706d2904d 490 # if AIN_4_5_SingleEnded
whismanoid 6:cb7bdeb185d0 491 # error("cannot have both AIN_4_5_DifferentialBipolarFS2Vref and AIN_4_5_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 492 # endif // AIN_4_5_SingleEnded
whismanoid 6:cb7bdeb185d0 493 #endif // AIN_4_5_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 494 //
whismanoid 0:f7d706d2904d 495 // Validate the AIN_4_5_DifferentialBipolarFSVref setting
whismanoid 0:f7d706d2904d 496 #if AIN_4_5_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 497 # if AIN_4_5_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 498 # error("cannot have both AIN_4_5_DifferentialBipolarFSVref and AIN_4_5_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 499 # endif // AIN_4_5_DifferentialUnipolar
whismanoid 0:f7d706d2904d 500 # if AIN_4_5_SingleEnded
whismanoid 0:f7d706d2904d 501 # error("cannot have both AIN_4_5_DifferentialBipolarFSVref and AIN_4_5_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 502 # endif // AIN_4_5_SingleEnded
whismanoid 0:f7d706d2904d 503 #endif // AIN_4_5_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 504 //
whismanoid 6:cb7bdeb185d0 505 // Validate the AIN_4_5_DifferentialUnipolar setting
whismanoid 6:cb7bdeb185d0 506 #if AIN_4_5_DifferentialUnipolar
whismanoid 0:f7d706d2904d 507 # if AIN_4_5_SingleEnded
whismanoid 6:cb7bdeb185d0 508 # error("cannot have both AIN_4_5_DifferentialUnipolar and AIN_4_5_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 509 # endif // AIN_4_5_SingleEnded
whismanoid 6:cb7bdeb185d0 510 #endif // AIN_4_5_DifferentialUnipolar
whismanoid 0:f7d706d2904d 511
whismanoid 0:f7d706d2904d 512 //----------------------------------------
whismanoid 0:f7d706d2904d 513 // ADC Channels AIN6, AIN7
whismanoid 0:f7d706d2904d 514 //
whismanoid 0:f7d706d2904d 515 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 516 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 517 //--------------------
whismanoid 0:f7d706d2904d 518 // ADC Channels AIN6, AIN7 = Differential Bipolar
whismanoid 6:cb7bdeb185d0 519 // Full Scale = 2 * VREF
whismanoid 6:cb7bdeb185d0 520 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 521 // AIN6, AIN7 are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 6:cb7bdeb185d0 522 // AIN6 voltage must always be between 0 and VREF.
whismanoid 6:cb7bdeb185d0 523 // AIN7 voltage must always be between 0 and VREF.
whismanoid 6:cb7bdeb185d0 524 //
whismanoid 6:cb7bdeb185d0 525 //~ #define AIN_6_7_DifferentialBipolarFS2Vref 1
whismanoid 6:cb7bdeb185d0 526 //
whismanoid 6:cb7bdeb185d0 527 //--------------------
whismanoid 6:cb7bdeb185d0 528 // ADC Channels AIN6, AIN7 = Differential Bipolar
whismanoid 0:f7d706d2904d 529 // Full Scale = VREF
whismanoid 0:f7d706d2904d 530 // Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 531 // AIN6, AIN7 are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 532 // AIN6 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 533 // AIN7 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 534 //
whismanoid 0:f7d706d2904d 535 //~ #define AIN_6_7_DifferentialBipolarFSVref 1
whismanoid 0:f7d706d2904d 536 //
whismanoid 0:f7d706d2904d 537 //--------------------
whismanoid 6:cb7bdeb185d0 538 // ADC Channels AIN6, AIN7 = Differential Unipolar (AIN6 > AIN7)
whismanoid 6:cb7bdeb185d0 539 // Full Scale = VREF
whismanoid 0:f7d706d2904d 540 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 541 // AIN6, AIN7 are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 542 // AIN6 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 543 // AIN7 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 544 //
whismanoid 6:cb7bdeb185d0 545 //~ #define AIN_6_7_DifferentialUnipolar 1
whismanoid 0:f7d706d2904d 546 //
whismanoid 0:f7d706d2904d 547 //--------------------
whismanoid 0:f7d706d2904d 548 // ADC Channels AIN6, AIN7 = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 549 // Full Scale = VREF
whismanoid 0:f7d706d2904d 550 // Voltage per LSB count = VREF/2048
whismanoid 0:f7d706d2904d 551 // AIN6 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 552 // AIN7 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 553 // If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 554 // AIN6 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 555 // AIN7 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 556 //
whismanoid 0:f7d706d2904d 557 //~ #define AIN_6_7_SingleEnded 1
whismanoid 0:f7d706d2904d 558 //
whismanoid 0:f7d706d2904d 559 //--------------------
whismanoid 0:f7d706d2904d 560 //
whismanoid 0:f7d706d2904d 561 // Default settings if not defined at project level
whismanoid 6:cb7bdeb185d0 562 #ifndef AIN_6_7_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 563 # ifndef AIN_6_7_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 564 # ifndef AIN_6_7_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 565 # ifndef AIN_6_7_SingleEnded
whismanoid 6:cb7bdeb185d0 566 # define AIN_6_7_DifferentialBipolarFS2Vref 0
whismanoid 0:f7d706d2904d 567 # define AIN_6_7_DifferentialBipolarFSVref 0
whismanoid 6:cb7bdeb185d0 568 # define AIN_6_7_DifferentialUnipolar 0
whismanoid 0:f7d706d2904d 569 # define AIN_6_7_SingleEnded 1
whismanoid 6:cb7bdeb185d0 570 # endif // AIN_6_7_SingleEnded
whismanoid 6:cb7bdeb185d0 571 # endif // AIN_6_7_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 572 # endif // AIN_6_7_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 573 #endif // AIN_6_7_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 574 //
whismanoid 0:f7d706d2904d 575 // (optional diagnostic) pragma message the active setting
whismanoid 6:cb7bdeb185d0 576 #if AIN_6_7_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 577 //~ # pragma message("AIN_6_7_DifferentialBipolarFS2Vref: ADC Channels AIN6, AIN7 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 578 #endif // AIN_6_7_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 579 #if AIN_6_7_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 580 //~ # pragma message("AIN_6_7_DifferentialBipolarFSVref: ADC Channels AIN6, AIN7 = Differential Bipolar")
whismanoid 0:f7d706d2904d 581 #endif // AIN_6_7_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 582 #if AIN_6_7_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 583 //~ # pragma message("AIN_6_7_DifferentialUnipolar: ADC Channels AIN6, AIN7 = Differential Unipolar (AIN6 > AIN7)")
whismanoid 6:cb7bdeb185d0 584 #endif // AIN_6_7_DifferentialUnipolar
whismanoid 0:f7d706d2904d 585 #if AIN_6_7_SingleEnded
whismanoid 0:f7d706d2904d 586 //~ # pragma message("AIN_6_7_SingleEnded: ADC Channels AIN6, AIN7 = Both Single-Ended, Unipolar")
whismanoid 0:f7d706d2904d 587 #endif // AIN_6_7_SingleEnded
whismanoid 6:cb7bdeb185d0 588 //
whismanoid 6:cb7bdeb185d0 589 // Validate the AIN_6_7_DifferentialBipolarFS2Vref setting
whismanoid 6:cb7bdeb185d0 590 #if AIN_6_7_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 591 # if AIN_6_7_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 592 # error("cannot have both AIN_6_7_DifferentialBipolarFS2Vref and AIN_6_7_DifferentialBipolarFSVref; choose one")
whismanoid 6:cb7bdeb185d0 593 # endif // AIN_6_7_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 594 # if AIN_6_7_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 595 # error("cannot have both AIN_6_7_DifferentialBipolarFS2Vref and AIN_6_7_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 596 # endif // AIN_6_7_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 597 # if AIN_6_7_SingleEnded
whismanoid 6:cb7bdeb185d0 598 # error("cannot have both AIN_6_7_DifferentialBipolarFS2Vref and AIN_6_7_SingleEnded; choose one")
whismanoid 6:cb7bdeb185d0 599 # endif // AIN_6_7_SingleEnded
whismanoid 6:cb7bdeb185d0 600 #endif // AIN_6_7_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 601 //
whismanoid 0:f7d706d2904d 602 // Validate the AIN_6_7_DifferentialBipolarFSVref setting
whismanoid 0:f7d706d2904d 603 #if AIN_6_7_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 604 # if AIN_6_7_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 605 # error("cannot have both AIN_6_7_DifferentialBipolarFSVref and AIN_6_7_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 606 # endif // AIN_6_7_DifferentialUnipolar
whismanoid 0:f7d706d2904d 607 # if AIN_6_7_SingleEnded
whismanoid 0:f7d706d2904d 608 # error("cannot have both AIN_6_7_DifferentialBipolarFSVref and AIN_6_7_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 609 # endif // AIN_6_7_SingleEnded
whismanoid 0:f7d706d2904d 610 #endif // AIN_6_7_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 611 //
whismanoid 6:cb7bdeb185d0 612 // Validate the AIN_6_7_DifferentialUnipolar setting
whismanoid 6:cb7bdeb185d0 613 #if AIN_6_7_DifferentialUnipolar
whismanoid 0:f7d706d2904d 614 # if AIN_6_7_SingleEnded
whismanoid 6:cb7bdeb185d0 615 # error("cannot have both AIN_6_7_DifferentialUnipolar and AIN_6_7_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 616 # endif // AIN_6_7_SingleEnded
whismanoid 6:cb7bdeb185d0 617 #endif // AIN_6_7_DifferentialUnipolar
whismanoid 0:f7d706d2904d 618
whismanoid 0:f7d706d2904d 619 //----------------------------------------
whismanoid 0:f7d706d2904d 620 // ADC Channels AIN8, AIN9
whismanoid 0:f7d706d2904d 621 //
whismanoid 0:f7d706d2904d 622 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 623 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 624 //--------------------
whismanoid 6:cb7bdeb185d0 625 // ADC Channels AIN8, AIN9 = Differential Bipolar
whismanoid 6:cb7bdeb185d0 626 // Full Scale = 2 * VREF
whismanoid 0:f7d706d2904d 627 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 628 // AIN8, AIN9 are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 0:f7d706d2904d 629 // AIN8 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 630 // AIN9 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 631 //
whismanoid 6:cb7bdeb185d0 632 //~ #define AIN_8_9_DifferentialBipolarFS2Vref 1
whismanoid 0:f7d706d2904d 633 //
whismanoid 0:f7d706d2904d 634 //--------------------
whismanoid 0:f7d706d2904d 635 // ADC Channels AIN8, AIN9 = Differential Bipolar
whismanoid 0:f7d706d2904d 636 // Full Scale = VREF
whismanoid 0:f7d706d2904d 637 // Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 638 // AIN8, AIN9 are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 639 // AIN8 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 640 // AIN9 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 641 //
whismanoid 0:f7d706d2904d 642 //~ #define AIN_8_9_DifferentialBipolarFSVref 1
whismanoid 0:f7d706d2904d 643 //
whismanoid 0:f7d706d2904d 644 //--------------------
whismanoid 6:cb7bdeb185d0 645 // ADC Channels AIN8, AIN9 = Differential Unipolar (AIN8 > AIN9)
whismanoid 6:cb7bdeb185d0 646 // Full Scale = VREF
whismanoid 0:f7d706d2904d 647 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 648 // AIN8, AIN9 are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 649 // AIN8 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 650 // AIN9 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 651 //
whismanoid 6:cb7bdeb185d0 652 //~ #define AIN_8_9_DifferentialUnipolar 1
whismanoid 0:f7d706d2904d 653 //
whismanoid 0:f7d706d2904d 654 //--------------------
whismanoid 0:f7d706d2904d 655 // ADC Channels AIN8, AIN9 = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 656 // Full Scale = VREF
whismanoid 0:f7d706d2904d 657 // Voltage per LSB count = VREF/2048
whismanoid 0:f7d706d2904d 658 // AIN8 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 659 // AIN9 is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 660 // If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 661 // AIN8 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 662 // AIN9 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 663 //
whismanoid 0:f7d706d2904d 664 //~ #define AIN_8_9_SingleEnded 1
whismanoid 0:f7d706d2904d 665 //
whismanoid 0:f7d706d2904d 666 //--------------------
whismanoid 0:f7d706d2904d 667 //
whismanoid 0:f7d706d2904d 668 // Default settings if not defined at project level
whismanoid 6:cb7bdeb185d0 669 #ifndef AIN_8_9_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 670 # ifndef AIN_8_9_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 671 # ifndef AIN_8_9_DifferentialUnipolar
whismanoid 0:f7d706d2904d 672 # ifndef AIN_8_9_SingleEnded
whismanoid 6:cb7bdeb185d0 673 # define AIN_8_9_DifferentialBipolarFS2Vref 0
whismanoid 6:cb7bdeb185d0 674 # define AIN_8_9_DifferentialBipolarFSVref 0
whismanoid 0:f7d706d2904d 675 # define AIN_8_9_DifferentialUnipolar 0
whismanoid 0:f7d706d2904d 676 # define AIN_8_9_SingleEnded 1
whismanoid 0:f7d706d2904d 677 # endif // AIN_8_9_SingleEnded
whismanoid 6:cb7bdeb185d0 678 # endif // AIN_8_9_DifferentialUnipolar
whismanoid 0:f7d706d2904d 679 # endif // AIN_8_9_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 680 #endif // AIN_8_9_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 681 //
whismanoid 0:f7d706d2904d 682 // (optional diagnostic) pragma message the active setting
whismanoid 6:cb7bdeb185d0 683 #if AIN_8_9_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 684 //~ # pragma message("AIN_8_9_DifferentialBipolarFS2Vref: ADC Channels AIN8, AIN9 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 685 #endif // AIN_8_9_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 686 #if AIN_8_9_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 687 //~ # pragma message("AIN_8_9_DifferentialBipolarFSVref: ADC Channels AIN8, AIN9 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 688 #endif // AIN_8_9_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 689 #if AIN_8_9_DifferentialUnipolar
whismanoid 0:f7d706d2904d 690 //~ # pragma message("AIN_8_9_DifferentialUnipolar: ADC Channels AIN8, AIN9 = Differential Unipolar (AIN8 > AIN9)")
whismanoid 0:f7d706d2904d 691 #endif // AIN_8_9_DifferentialUnipolar
whismanoid 0:f7d706d2904d 692 #if AIN_8_9_SingleEnded
whismanoid 0:f7d706d2904d 693 //~ # pragma message("AIN_8_9_SingleEnded: ADC Channels AIN8, AIN9 = Both Single-Ended, Unipolar")
whismanoid 0:f7d706d2904d 694 #endif // AIN_8_9_SingleEnded
whismanoid 0:f7d706d2904d 695 //
whismanoid 6:cb7bdeb185d0 696 // Validate the AIN_8_9_DifferentialBipolarFS2Vref setting
whismanoid 6:cb7bdeb185d0 697 #if AIN_8_9_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 698 # if AIN_8_9_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 699 # error("cannot have both AIN_8_9_DifferentialBipolarFS2Vref and AIN_8_9_DifferentialBipolarFSVref; choose one")
whismanoid 0:f7d706d2904d 700 # endif // AIN_8_9_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 701 # if AIN_8_9_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 702 # error("cannot have both AIN_8_9_DifferentialBipolarFS2Vref and AIN_8_9_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 703 # endif // AIN_8_9_DifferentialUnipolar
whismanoid 0:f7d706d2904d 704 # if AIN_8_9_SingleEnded
whismanoid 6:cb7bdeb185d0 705 # error("cannot have both AIN_8_9_DifferentialBipolarFS2Vref and AIN_8_9_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 706 # endif // AIN_8_9_SingleEnded
whismanoid 6:cb7bdeb185d0 707 #endif // AIN_8_9_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 708 //
whismanoid 0:f7d706d2904d 709 // Validate the AIN_8_9_DifferentialBipolarFSVref setting
whismanoid 0:f7d706d2904d 710 #if AIN_8_9_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 711 # if AIN_8_9_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 712 # error("cannot have both AIN_8_9_DifferentialBipolarFSVref and AIN_8_9_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 713 # endif // AIN_8_9_DifferentialUnipolar
whismanoid 0:f7d706d2904d 714 # if AIN_8_9_SingleEnded
whismanoid 0:f7d706d2904d 715 # error("cannot have both AIN_8_9_DifferentialBipolarFSVref and AIN_8_9_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 716 # endif // AIN_8_9_SingleEnded
whismanoid 0:f7d706d2904d 717 #endif // AIN_8_9_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 718 //
whismanoid 6:cb7bdeb185d0 719 // Validate the AIN_8_9_DifferentialUnipolar setting
whismanoid 6:cb7bdeb185d0 720 #if AIN_8_9_DifferentialUnipolar
whismanoid 0:f7d706d2904d 721 # if AIN_8_9_SingleEnded
whismanoid 6:cb7bdeb185d0 722 # error("cannot have both AIN_8_9_DifferentialUnipolar and AIN_8_9_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 723 # endif // AIN_8_9_SingleEnded
whismanoid 6:cb7bdeb185d0 724 #endif // AIN_8_9_DifferentialUnipolar
whismanoid 0:f7d706d2904d 725
whismanoid 0:f7d706d2904d 726 //----------------------------------------
whismanoid 0:f7d706d2904d 727 // ADC Channels AIN10, AIN11
whismanoid 0:f7d706d2904d 728 //
whismanoid 0:f7d706d2904d 729 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 730 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 731 //--------------------
whismanoid 0:f7d706d2904d 732 // ADC Channels AIN10, AIN11 = Differential Bipolar
whismanoid 0:f7d706d2904d 733 // Full Scale = 2 * VREF
whismanoid 0:f7d706d2904d 734 // Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 735 // AIN10, AIN11 are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 0:f7d706d2904d 736 // AIN10 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 737 // AIN11 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 738 //
whismanoid 0:f7d706d2904d 739 //~ #define AIN_10_11_DifferentialBipolarFS2Vref 1
whismanoid 0:f7d706d2904d 740 //
whismanoid 0:f7d706d2904d 741 //--------------------
whismanoid 6:cb7bdeb185d0 742 // ADC Channels AIN10, AIN11 = Differential Bipolar
whismanoid 0:f7d706d2904d 743 // Full Scale = VREF
whismanoid 0:f7d706d2904d 744 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 745 // AIN10, AIN11 are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 746 // AIN10 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 747 // AIN11 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 748 //
whismanoid 6:cb7bdeb185d0 749 //~ #define AIN_10_11_DifferentialBipolarFSVref 1
whismanoid 0:f7d706d2904d 750 //
whismanoid 0:f7d706d2904d 751 //--------------------
whismanoid 0:f7d706d2904d 752 // ADC Channels AIN10, AIN11 = Differential Unipolar (AIN10 > AIN11)
whismanoid 0:f7d706d2904d 753 // Full Scale = VREF
whismanoid 0:f7d706d2904d 754 // Voltage per LSB count = VREF/2048
whismanoid 0:f7d706d2904d 755 // AIN10, AIN11 are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 756 // AIN10 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 757 // AIN11 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 758 //
whismanoid 0:f7d706d2904d 759 //~ #define AIN_10_11_DifferentialUnipolar 1
whismanoid 0:f7d706d2904d 760 //
whismanoid 0:f7d706d2904d 761 //--------------------
whismanoid 6:cb7bdeb185d0 762 // ADC Channels AIN10, AIN11 = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 763 // Full Scale = VREF
whismanoid 0:f7d706d2904d 764 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 765 // AIN10 is a Single-Ended input using Unipolar transfer function.
whismanoid 6:cb7bdeb185d0 766 // AIN11 is a Single-Ended input using Unipolar transfer function.
whismanoid 6:cb7bdeb185d0 767 // If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 768 // AIN10 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 769 // AIN11 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 770 //
whismanoid 6:cb7bdeb185d0 771 //~ #define AIN_10_11_SingleEnded 1
whismanoid 0:f7d706d2904d 772 //
whismanoid 0:f7d706d2904d 773 //--------------------
whismanoid 0:f7d706d2904d 774 //
whismanoid 0:f7d706d2904d 775 // Default settings if not defined at project level
whismanoid 0:f7d706d2904d 776 #ifndef AIN_10_11_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 777 # ifndef AIN_10_11_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 778 # ifndef AIN_10_11_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 779 # ifndef AIN_10_11_SingleEnded
whismanoid 0:f7d706d2904d 780 # define AIN_10_11_DifferentialBipolarFS2Vref 0
whismanoid 6:cb7bdeb185d0 781 # define AIN_10_11_DifferentialBipolarFSVref 0
whismanoid 6:cb7bdeb185d0 782 # define AIN_10_11_DifferentialUnipolar 0
whismanoid 0:f7d706d2904d 783 # define AIN_10_11_SingleEnded 1
whismanoid 6:cb7bdeb185d0 784 # endif // AIN_10_11_SingleEnded
whismanoid 0:f7d706d2904d 785 # endif // AIN_10_11_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 786 # endif // AIN_10_11_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 787 #endif // AIN_10_11_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 788 //
whismanoid 0:f7d706d2904d 789 // (optional diagnostic) pragma message the active setting
whismanoid 0:f7d706d2904d 790 #if AIN_10_11_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 791 //~ # pragma message("AIN_10_11_DifferentialBipolarFS2Vref: ADC Channels AIN10, AIN11 = Differential Bipolar")
whismanoid 0:f7d706d2904d 792 #endif // AIN_10_11_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 793 #if AIN_10_11_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 794 //~ # pragma message("AIN_10_11_DifferentialBipolarFSVref: ADC Channels AIN10, AIN11 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 795 #endif // AIN_10_11_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 796 #if AIN_10_11_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 797 //~ # pragma message("AIN_10_11_DifferentialUnipolar: ADC Channels AIN10, AIN11 = Differential Unipolar (AIN10 > AIN11)")
whismanoid 6:cb7bdeb185d0 798 #endif // AIN_10_11_DifferentialUnipolar
whismanoid 0:f7d706d2904d 799 #if AIN_10_11_SingleEnded
whismanoid 0:f7d706d2904d 800 //~ # pragma message("AIN_10_11_SingleEnded: ADC Channels AIN10, AIN11 = Both Single-Ended, Unipolar")
whismanoid 0:f7d706d2904d 801 #endif // AIN_10_11_SingleEnded
whismanoid 0:f7d706d2904d 802 //
whismanoid 0:f7d706d2904d 803 // Validate the AIN_10_11_DifferentialBipolarFS2Vref setting
whismanoid 0:f7d706d2904d 804 #if AIN_10_11_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 805 # if AIN_10_11_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 806 # error("cannot have both AIN_10_11_DifferentialBipolarFS2Vref and AIN_10_11_DifferentialBipolarFSVref; choose one")
whismanoid 6:cb7bdeb185d0 807 # endif // AIN_10_11_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 808 # if AIN_10_11_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 809 # error("cannot have both AIN_10_11_DifferentialBipolarFS2Vref and AIN_10_11_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 810 # endif // AIN_10_11_DifferentialUnipolar
whismanoid 0:f7d706d2904d 811 # if AIN_10_11_SingleEnded
whismanoid 0:f7d706d2904d 812 # error("cannot have both AIN_10_11_DifferentialBipolarFS2Vref and AIN_10_11_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 813 # endif // AIN_10_11_SingleEnded
whismanoid 0:f7d706d2904d 814 #endif // AIN_10_11_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 815 //
whismanoid 6:cb7bdeb185d0 816 // Validate the AIN_10_11_DifferentialBipolarFSVref setting
whismanoid 6:cb7bdeb185d0 817 #if AIN_10_11_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 818 # if AIN_10_11_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 819 # error("cannot have both AIN_10_11_DifferentialBipolarFSVref and AIN_10_11_DifferentialUnipolar; choose one")
whismanoid 0:f7d706d2904d 820 # endif // AIN_10_11_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 821 # if AIN_10_11_SingleEnded
whismanoid 6:cb7bdeb185d0 822 # error("cannot have both AIN_10_11_DifferentialBipolarFSVref and AIN_10_11_SingleEnded; choose one")
whismanoid 6:cb7bdeb185d0 823 # endif // AIN_10_11_SingleEnded
whismanoid 6:cb7bdeb185d0 824 #endif // AIN_10_11_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 825 //
whismanoid 0:f7d706d2904d 826 // Validate the AIN_10_11_DifferentialUnipolar setting
whismanoid 0:f7d706d2904d 827 #if AIN_10_11_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 828 # if AIN_10_11_SingleEnded
whismanoid 6:cb7bdeb185d0 829 # error("cannot have both AIN_10_11_DifferentialUnipolar and AIN_10_11_SingleEnded; choose one")
whismanoid 6:cb7bdeb185d0 830 # endif // AIN_10_11_SingleEnded
whismanoid 0:f7d706d2904d 831 #endif // AIN_10_11_DifferentialUnipolar
whismanoid 0:f7d706d2904d 832
whismanoid 0:f7d706d2904d 833 //----------------------------------------
whismanoid 0:f7d706d2904d 834 // ADC Channels AIN12, AIN13
whismanoid 0:f7d706d2904d 835 //
whismanoid 0:f7d706d2904d 836 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 837 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 838 //--------------------
whismanoid 0:f7d706d2904d 839 // ADC Channels AIN12, AIN13 = Differential Bipolar
whismanoid 0:f7d706d2904d 840 // Full Scale = 2 * VREF
whismanoid 0:f7d706d2904d 841 // Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 842 // AIN12, AIN13 are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 0:f7d706d2904d 843 // AIN12 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 844 // AIN13 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 845 //
whismanoid 0:f7d706d2904d 846 //~ #define AIN_12_13_DifferentialBipolarFS2Vref 1
whismanoid 0:f7d706d2904d 847 //
whismanoid 0:f7d706d2904d 848 //--------------------
whismanoid 6:cb7bdeb185d0 849 // ADC Channels AIN12, AIN13 = Differential Bipolar
whismanoid 0:f7d706d2904d 850 // Full Scale = VREF
whismanoid 0:f7d706d2904d 851 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 852 // AIN12, AIN13 are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 853 // AIN12 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 854 // AIN13 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 855 //
whismanoid 6:cb7bdeb185d0 856 //~ #define AIN_12_13_DifferentialBipolarFSVref 1
whismanoid 0:f7d706d2904d 857 //
whismanoid 0:f7d706d2904d 858 //--------------------
whismanoid 0:f7d706d2904d 859 // ADC Channels AIN12, AIN13 = Differential Unipolar (AIN12 > AIN13)
whismanoid 0:f7d706d2904d 860 // Full Scale = VREF
whismanoid 0:f7d706d2904d 861 // Voltage per LSB count = VREF/2048
whismanoid 0:f7d706d2904d 862 // AIN12, AIN13 are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 863 // AIN12 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 864 // AIN13 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 865 //
whismanoid 0:f7d706d2904d 866 //~ #define AIN_12_13_DifferentialUnipolar 1
whismanoid 0:f7d706d2904d 867 //
whismanoid 0:f7d706d2904d 868 //--------------------
whismanoid 6:cb7bdeb185d0 869 // ADC Channels AIN12, AIN13 = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 870 // Full Scale = VREF
whismanoid 0:f7d706d2904d 871 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 872 // AIN12 is a Single-Ended input using Unipolar transfer function.
whismanoid 6:cb7bdeb185d0 873 // AIN13 is a Single-Ended input using Unipolar transfer function.
whismanoid 6:cb7bdeb185d0 874 // If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 875 // AIN12 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 876 // AIN13 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 877 //
whismanoid 6:cb7bdeb185d0 878 //~ #define AIN_12_13_SingleEnded 1
whismanoid 0:f7d706d2904d 879 //
whismanoid 0:f7d706d2904d 880 //--------------------
whismanoid 0:f7d706d2904d 881 //
whismanoid 0:f7d706d2904d 882 // Default settings if not defined at project level
whismanoid 0:f7d706d2904d 883 #ifndef AIN_12_13_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 884 # ifndef AIN_12_13_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 885 # ifndef AIN_12_13_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 886 # ifndef AIN_12_13_SingleEnded
whismanoid 0:f7d706d2904d 887 # define AIN_12_13_DifferentialBipolarFS2Vref 0
whismanoid 6:cb7bdeb185d0 888 # define AIN_12_13_DifferentialBipolarFSVref 0
whismanoid 6:cb7bdeb185d0 889 # define AIN_12_13_DifferentialUnipolar 0
whismanoid 0:f7d706d2904d 890 # define AIN_12_13_SingleEnded 1
whismanoid 6:cb7bdeb185d0 891 # endif // AIN_12_13_SingleEnded
whismanoid 0:f7d706d2904d 892 # endif // AIN_12_13_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 893 # endif // AIN_12_13_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 894 #endif // AIN_12_13_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 895 //
whismanoid 0:f7d706d2904d 896 // (optional diagnostic) pragma message the active setting
whismanoid 0:f7d706d2904d 897 #if AIN_12_13_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 898 //~ # pragma message("AIN_12_13_DifferentialBipolarFS2Vref: ADC Channels AIN12, AIN13 = Differential Bipolar")
whismanoid 0:f7d706d2904d 899 #endif // AIN_12_13_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 900 #if AIN_12_13_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 901 //~ # pragma message("AIN_12_13_DifferentialBipolarFSVref: ADC Channels AIN12, AIN13 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 902 #endif // AIN_12_13_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 903 #if AIN_12_13_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 904 //~ # pragma message("AIN_12_13_DifferentialUnipolar: ADC Channels AIN12, AIN13 = Differential Unipolar (AIN12 > AIN13)")
whismanoid 6:cb7bdeb185d0 905 #endif // AIN_12_13_DifferentialUnipolar
whismanoid 0:f7d706d2904d 906 #if AIN_12_13_SingleEnded
whismanoid 0:f7d706d2904d 907 //~ # pragma message("AIN_12_13_SingleEnded: ADC Channels AIN12, AIN13 = Both Single-Ended, Unipolar")
whismanoid 0:f7d706d2904d 908 #endif // AIN_12_13_SingleEnded
whismanoid 0:f7d706d2904d 909 //
whismanoid 0:f7d706d2904d 910 // Validate the AIN_12_13_DifferentialBipolarFS2Vref setting
whismanoid 0:f7d706d2904d 911 #if AIN_12_13_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 912 # if AIN_12_13_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 913 # error("cannot have both AIN_12_13_DifferentialBipolarFS2Vref and AIN_12_13_DifferentialBipolarFSVref; choose one")
whismanoid 6:cb7bdeb185d0 914 # endif // AIN_12_13_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 915 # if AIN_12_13_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 916 # error("cannot have both AIN_12_13_DifferentialBipolarFS2Vref and AIN_12_13_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 917 # endif // AIN_12_13_DifferentialUnipolar
whismanoid 0:f7d706d2904d 918 # if AIN_12_13_SingleEnded
whismanoid 0:f7d706d2904d 919 # error("cannot have both AIN_12_13_DifferentialBipolarFS2Vref and AIN_12_13_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 920 # endif // AIN_12_13_SingleEnded
whismanoid 0:f7d706d2904d 921 #endif // AIN_12_13_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 922 //
whismanoid 6:cb7bdeb185d0 923 // Validate the AIN_12_13_DifferentialBipolarFSVref setting
whismanoid 6:cb7bdeb185d0 924 #if AIN_12_13_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 925 # if AIN_12_13_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 926 # error("cannot have both AIN_12_13_DifferentialBipolarFSVref and AIN_12_13_DifferentialUnipolar; choose one")
whismanoid 0:f7d706d2904d 927 # endif // AIN_12_13_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 928 # if AIN_12_13_SingleEnded
whismanoid 6:cb7bdeb185d0 929 # error("cannot have both AIN_12_13_DifferentialBipolarFSVref and AIN_12_13_SingleEnded; choose one")
whismanoid 6:cb7bdeb185d0 930 # endif // AIN_12_13_SingleEnded
whismanoid 6:cb7bdeb185d0 931 #endif // AIN_12_13_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 932 //
whismanoid 0:f7d706d2904d 933 // Validate the AIN_12_13_DifferentialUnipolar setting
whismanoid 0:f7d706d2904d 934 #if AIN_12_13_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 935 # if AIN_12_13_SingleEnded
whismanoid 6:cb7bdeb185d0 936 # error("cannot have both AIN_12_13_DifferentialUnipolar and AIN_12_13_SingleEnded; choose one")
whismanoid 6:cb7bdeb185d0 937 # endif // AIN_12_13_SingleEnded
whismanoid 0:f7d706d2904d 938 #endif // AIN_12_13_DifferentialUnipolar
whismanoid 0:f7d706d2904d 939
whismanoid 0:f7d706d2904d 940 //----------------------------------------
whismanoid 0:f7d706d2904d 941 // ADC Channels AIN14, AIN15
whismanoid 0:f7d706d2904d 942 //
whismanoid 0:f7d706d2904d 943 // CUSTOMIZE: select one of the following options
whismanoid 0:f7d706d2904d 944 // either by uncommenting in this file or define at the project level
whismanoid 0:f7d706d2904d 945 //--------------------
whismanoid 0:f7d706d2904d 946 // ADC Channels AIN14, AIN15 = Differential Bipolar
whismanoid 0:f7d706d2904d 947 // Full Scale = 2 * VREF
whismanoid 0:f7d706d2904d 948 // Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 949 // AIN14, AIN15 are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 0:f7d706d2904d 950 // AIN14 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 951 // AIN15 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 952 //
whismanoid 0:f7d706d2904d 953 //~ #define AIN_14_15_DifferentialBipolarFS2Vref 1
whismanoid 0:f7d706d2904d 954 //
whismanoid 0:f7d706d2904d 955 //--------------------
whismanoid 6:cb7bdeb185d0 956 // ADC Channels AIN14, AIN15 = Differential Bipolar
whismanoid 0:f7d706d2904d 957 // Full Scale = VREF
whismanoid 0:f7d706d2904d 958 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 959 // AIN14, AIN15 are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 960 // AIN14 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 961 // AIN15 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 962 //
whismanoid 6:cb7bdeb185d0 963 //~ #define AIN_14_15_DifferentialBipolarFSVref 1
whismanoid 0:f7d706d2904d 964 //
whismanoid 0:f7d706d2904d 965 //--------------------
whismanoid 0:f7d706d2904d 966 // ADC Channels AIN14, AIN15 = Differential Unipolar (AIN14 > AIN15)
whismanoid 0:f7d706d2904d 967 // Full Scale = VREF
whismanoid 0:f7d706d2904d 968 // Voltage per LSB count = VREF/2048
whismanoid 0:f7d706d2904d 969 // AIN14, AIN15 are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 970 // AIN14 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 971 // AIN15 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 972 //
whismanoid 0:f7d706d2904d 973 //~ #define AIN_14_15_DifferentialUnipolar 1
whismanoid 0:f7d706d2904d 974 //
whismanoid 0:f7d706d2904d 975 //--------------------
whismanoid 6:cb7bdeb185d0 976 // ADC Channels AIN14, AIN15 = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 977 // Full Scale = VREF
whismanoid 0:f7d706d2904d 978 // Voltage per LSB count = VREF/2048
whismanoid 6:cb7bdeb185d0 979 // AIN14 is a Single-Ended input using Unipolar transfer function.
whismanoid 6:cb7bdeb185d0 980 // AIN15 is a Single-Ended input using Unipolar transfer function.
whismanoid 6:cb7bdeb185d0 981 // If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 982 // AIN14 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 983 // AIN15 voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 984 //
whismanoid 6:cb7bdeb185d0 985 //~ #define AIN_14_15_SingleEnded 1
whismanoid 0:f7d706d2904d 986 //
whismanoid 0:f7d706d2904d 987 //--------------------
whismanoid 0:f7d706d2904d 988 //
whismanoid 0:f7d706d2904d 989 // Default settings if not defined at project level
whismanoid 0:f7d706d2904d 990 #ifndef AIN_14_15_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 991 # ifndef AIN_14_15_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 992 # ifndef AIN_14_15_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 993 # ifndef AIN_14_15_SingleEnded
whismanoid 0:f7d706d2904d 994 # define AIN_14_15_DifferentialBipolarFS2Vref 0
whismanoid 6:cb7bdeb185d0 995 # define AIN_14_15_DifferentialBipolarFSVref 0
whismanoid 6:cb7bdeb185d0 996 # define AIN_14_15_DifferentialUnipolar 0
whismanoid 0:f7d706d2904d 997 # define AIN_14_15_SingleEnded 1
whismanoid 6:cb7bdeb185d0 998 # endif // AIN_14_15_SingleEnded
whismanoid 0:f7d706d2904d 999 # endif // AIN_14_15_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 1000 # endif // AIN_14_15_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 1001 #endif // AIN_14_15_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 1002 //
whismanoid 0:f7d706d2904d 1003 // (optional diagnostic) pragma message the active setting
whismanoid 0:f7d706d2904d 1004 #if AIN_14_15_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 1005 //~ # pragma message("AIN_14_15_DifferentialBipolarFS2Vref: ADC Channels AIN14, AIN15 = Differential Bipolar")
whismanoid 0:f7d706d2904d 1006 #endif // AIN_14_15_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 1007 #if AIN_14_15_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 1008 //~ # pragma message("AIN_14_15_DifferentialBipolarFSVref: ADC Channels AIN14, AIN15 = Differential Bipolar")
whismanoid 6:cb7bdeb185d0 1009 #endif // AIN_14_15_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 1010 #if AIN_14_15_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 1011 //~ # pragma message("AIN_14_15_DifferentialUnipolar: ADC Channels AIN14, AIN15 = Differential Unipolar (AIN14 > AIN15)")
whismanoid 6:cb7bdeb185d0 1012 #endif // AIN_14_15_DifferentialUnipolar
whismanoid 0:f7d706d2904d 1013 #if AIN_14_15_SingleEnded
whismanoid 0:f7d706d2904d 1014 //~ # pragma message("AIN_14_15_SingleEnded: ADC Channels AIN14, AIN15 = Both Single-Ended, Unipolar")
whismanoid 0:f7d706d2904d 1015 #endif // AIN_14_15_SingleEnded
whismanoid 0:f7d706d2904d 1016 //
whismanoid 0:f7d706d2904d 1017 // Validate the AIN_14_15_DifferentialBipolarFS2Vref setting
whismanoid 0:f7d706d2904d 1018 #if AIN_14_15_DifferentialBipolarFS2Vref
whismanoid 6:cb7bdeb185d0 1019 # if AIN_14_15_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 1020 # error("cannot have both AIN_14_15_DifferentialBipolarFS2Vref and AIN_14_15_DifferentialBipolarFSVref; choose one")
whismanoid 6:cb7bdeb185d0 1021 # endif // AIN_14_15_DifferentialBipolarFSVref
whismanoid 6:cb7bdeb185d0 1022 # if AIN_14_15_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 1023 # error("cannot have both AIN_14_15_DifferentialBipolarFS2Vref and AIN_14_15_DifferentialUnipolar; choose one")
whismanoid 6:cb7bdeb185d0 1024 # endif // AIN_14_15_DifferentialUnipolar
whismanoid 0:f7d706d2904d 1025 # if AIN_14_15_SingleEnded
whismanoid 0:f7d706d2904d 1026 # error("cannot have both AIN_14_15_DifferentialBipolarFS2Vref and AIN_14_15_SingleEnded; choose one")
whismanoid 0:f7d706d2904d 1027 # endif // AIN_14_15_SingleEnded
whismanoid 0:f7d706d2904d 1028 #endif // AIN_14_15_DifferentialBipolarFS2Vref
whismanoid 0:f7d706d2904d 1029 //
whismanoid 6:cb7bdeb185d0 1030 // Validate the AIN_14_15_DifferentialBipolarFSVref setting
whismanoid 6:cb7bdeb185d0 1031 #if AIN_14_15_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 1032 # if AIN_14_15_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 1033 # error("cannot have both AIN_14_15_DifferentialBipolarFSVref and AIN_14_15_DifferentialUnipolar; choose one")
whismanoid 0:f7d706d2904d 1034 # endif // AIN_14_15_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 1035 # if AIN_14_15_SingleEnded
whismanoid 6:cb7bdeb185d0 1036 # error("cannot have both AIN_14_15_DifferentialBipolarFSVref and AIN_14_15_SingleEnded; choose one")
whismanoid 6:cb7bdeb185d0 1037 # endif // AIN_14_15_SingleEnded
whismanoid 6:cb7bdeb185d0 1038 #endif // AIN_14_15_DifferentialBipolarFSVref
whismanoid 0:f7d706d2904d 1039 //
whismanoid 0:f7d706d2904d 1040 // Validate the AIN_14_15_DifferentialUnipolar setting
whismanoid 0:f7d706d2904d 1041 #if AIN_14_15_DifferentialUnipolar
whismanoid 6:cb7bdeb185d0 1042 # if AIN_14_15_SingleEnded
whismanoid 6:cb7bdeb185d0 1043 # error("cannot have both AIN_14_15_DifferentialUnipolar and AIN_14_15_SingleEnded; choose one")
whismanoid 6:cb7bdeb185d0 1044 # endif // AIN_14_15_SingleEnded
whismanoid 0:f7d706d2904d 1045 #endif // AIN_14_15_DifferentialUnipolar
whismanoid 0:f7d706d2904d 1046
whismanoid 0:f7d706d2904d 1047 /**
whismanoid 0:f7d706d2904d 1048 * @brief MAX11131 3Msps, Low-Power, Serial SPI 12-Bit, 16-Channel, Differential/Single-Ended Input, SAR ADC
whismanoid 0:f7d706d2904d 1049 *
whismanoid 0:f7d706d2904d 1050 *
whismanoid 0:f7d706d2904d 1051 *
whismanoid 0:f7d706d2904d 1052 * Datasheet: https://www.maximintegrated.com/MAX11131
whismanoid 0:f7d706d2904d 1053 *
whismanoid 0:f7d706d2904d 1054 *
whismanoid 0:f7d706d2904d 1055 *
whismanoid 0:f7d706d2904d 1056 * @code
whismanoid 0:f7d706d2904d 1057 * // example code includes
whismanoid 6:cb7bdeb185d0 1058 * // standard include for target platform -- Platform_Include_Boilerplate
whismanoid 0:f7d706d2904d 1059 * #include "mbed.h"
whismanoid 6:cb7bdeb185d0 1060 * // Platforms:
whismanoid 6:cb7bdeb185d0 1061 * // - MAX32625MBED
whismanoid 6:cb7bdeb185d0 1062 * // - supports mbed-os-5.11, requires USBDevice library
whismanoid 6:cb7bdeb185d0 1063 * // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/
whismanoid 6:cb7bdeb185d0 1064 * // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 1065 * // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 1066 * // - MAX32600MBED
whismanoid 9:8d47cb713984 1067 * // - Please note the last supported version is Mbed OS 6.3.
whismanoid 6:cb7bdeb185d0 1068 * // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 1069 * // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 1070 * // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board.
whismanoid 6:cb7bdeb185d0 1071 * // - NUCLEO_F446RE
whismanoid 6:cb7bdeb185d0 1072 * // - remove USBDevice library
whismanoid 6:cb7bdeb185d0 1073 * // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 1074 * // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 1075 * // - NUCLEO_F401RE
whismanoid 6:cb7bdeb185d0 1076 * // - remove USBDevice library
whismanoid 6:cb7bdeb185d0 1077 * // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 1078 * // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 1079 * // - MAX32630FTHR
whismanoid 6:cb7bdeb185d0 1080 * // - #include "max32630fthr.h"
whismanoid 9:8d47cb713984 1081 * // - add http://developer.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 6:cb7bdeb185d0 1082 * // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 1083 * // - MAX32620FTHR
whismanoid 6:cb7bdeb185d0 1084 * // - #include "MAX32620FTHR.h"
whismanoid 6:cb7bdeb185d0 1085 * // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 1086 * // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 6:cb7bdeb185d0 1087 * // - not tested yet
whismanoid 6:cb7bdeb185d0 1088 * // - MAX32625PICO
whismanoid 9:8d47cb713984 1089 * // - #include "max32625pico.h"
whismanoid 9:8d47cb713984 1090 * // - add https://os.mbed.com/users/switches/code/max32625pico/
whismanoid 6:cb7bdeb185d0 1091 * // - remove max32630fthr library (if present)
whismanoid 6:cb7bdeb185d0 1092 * // - remove MAX32620FTHR library (if present)
whismanoid 6:cb7bdeb185d0 1093 * // - not tested yet
whismanoid 9:8d47cb713984 1094 * // - see https://os.mbed.com/users/switches/code/max32625pico/
whismanoid 9:8d47cb713984 1095 * // - see https://os.mbed.com/users/switches/code/PICO_board_demo/
whismanoid 9:8d47cb713984 1096 * // - see https://os.mbed.com/users/switches/code/PICO_USB_I2C_SPI/
whismanoid 9:8d47cb713984 1097 * // - see https://os.mbed.com/users/switches/code/SerialInterface/
whismanoid 9:8d47cb713984 1098 * // - Note: To load the MAX32625PICO firmware, hold the button while
whismanoid 9:8d47cb713984 1099 * // connecting the USB cable, then copy firmware bin file
whismanoid 9:8d47cb713984 1100 * // to the MAINTENANCE drive.
whismanoid 9:8d47cb713984 1101 * // - see https://os.mbed.com/platforms/MAX32625PICO/
whismanoid 9:8d47cb713984 1102 * // - see https://os.mbed.com/teams/MaximIntegrated/wiki/MAX32625PICO-Firmware-Updates
whismanoid 6:cb7bdeb185d0 1103 * //
whismanoid 6:cb7bdeb185d0 1104 * // end Platform_Include_Boilerplate
whismanoid 0:f7d706d2904d 1105 * #include "MAX11131.h"
whismanoid 0:f7d706d2904d 1106 *
whismanoid 0:f7d706d2904d 1107 * // example code board support
whismanoid 0:f7d706d2904d 1108 * //MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 0:f7d706d2904d 1109 * //DigitalOut rLED(LED1);
whismanoid 0:f7d706d2904d 1110 * //DigitalOut gLED(LED2);
whismanoid 0:f7d706d2904d 1111 * //DigitalOut bLED(LED3);
whismanoid 0:f7d706d2904d 1112 * //
whismanoid 0:f7d706d2904d 1113 * // Arduino "shield" connector port definitions (MAX32625MBED shown)
whismanoid 0:f7d706d2904d 1114 * #if defined(TARGET_MAX32625MBED)
whismanoid 0:f7d706d2904d 1115 * #define A0 AIN_0
whismanoid 0:f7d706d2904d 1116 * #define A1 AIN_1
whismanoid 0:f7d706d2904d 1117 * #define A2 AIN_2
whismanoid 0:f7d706d2904d 1118 * #define A3 AIN_3
whismanoid 0:f7d706d2904d 1119 * #define D0 P0_0
whismanoid 0:f7d706d2904d 1120 * #define D1 P0_1
whismanoid 0:f7d706d2904d 1121 * #define D2 P0_2
whismanoid 0:f7d706d2904d 1122 * #define D3 P0_3
whismanoid 0:f7d706d2904d 1123 * #define D4 P0_4
whismanoid 0:f7d706d2904d 1124 * #define D5 P0_5
whismanoid 0:f7d706d2904d 1125 * #define D6 P0_6
whismanoid 0:f7d706d2904d 1126 * #define D7 P0_7
whismanoid 0:f7d706d2904d 1127 * #define D8 P1_4
whismanoid 0:f7d706d2904d 1128 * #define D9 P1_5
whismanoid 0:f7d706d2904d 1129 * #define D10 P1_3
whismanoid 0:f7d706d2904d 1130 * #define D11 P1_1
whismanoid 0:f7d706d2904d 1131 * #define D12 P1_2
whismanoid 0:f7d706d2904d 1132 * #define D13 P1_0
whismanoid 9:8d47cb713984 1133 * #elif defined(TARGET_MAX32625PICO)
whismanoid 9:8d47cb713984 1134 * #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 9:8d47cb713984 1135 * #define A0 AIN_1
whismanoid 9:8d47cb713984 1136 * #define A1 AIN_2
whismanoid 9:8d47cb713984 1137 * // #define A2 AIN_3
whismanoid 9:8d47cb713984 1138 * // #define A3 AIN_0
whismanoid 9:8d47cb713984 1139 * #define D0 P0_0
whismanoid 9:8d47cb713984 1140 * #define D1 P0_1
whismanoid 9:8d47cb713984 1141 * #define D2 P0_2
whismanoid 9:8d47cb713984 1142 * #define D3 P0_3
whismanoid 9:8d47cb713984 1143 * #define D4 P1_7
whismanoid 9:8d47cb713984 1144 * #define D5 P1_6
whismanoid 9:8d47cb713984 1145 * #define D6 P4_4
whismanoid 9:8d47cb713984 1146 * #define D7 P4_5
whismanoid 9:8d47cb713984 1147 * #define D8 P4_6
whismanoid 9:8d47cb713984 1148 * #define D9 P4_7
whismanoid 9:8d47cb713984 1149 * #define D10 P0_7
whismanoid 9:8d47cb713984 1150 * #define D11 P0_6
whismanoid 9:8d47cb713984 1151 * #define D12 P0_5
whismanoid 9:8d47cb713984 1152 * #define D13 P0_4
whismanoid 0:f7d706d2904d 1153 * #endif
whismanoid 0:f7d706d2904d 1154 *
whismanoid 9:8d47cb713984 1155 * // example code declare SPI interface (GPIO controlled CS)
whismanoid 0:f7d706d2904d 1156 * #if defined(TARGET_MAX32625MBED)
whismanoid 0:f7d706d2904d 1157 * SPI spi(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625MBED: P1_1 P1_2 P1_0 Arduino 10-pin header D11 D12 D13
whismanoid 0:f7d706d2904d 1158 * DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
whismanoid 9:8d47cb713984 1159 * #elif defined(TARGET_MAX32625PICO)
whismanoid 9:8d47cb713984 1160 * #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 9:8d47cb713984 1161 * SPI spi(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625PICO: pin P0_5 P0_6 P0_4
whismanoid 9:8d47cb713984 1162 * DigitalOut spi_cs(SPI0_SS); // TARGET_MAX32625PICO: pin P0_7
whismanoid 0:f7d706d2904d 1163 * #elif defined(TARGET_MAX32600MBED)
whismanoid 0:f7d706d2904d 1164 * SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 0:f7d706d2904d 1165 * DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 9:8d47cb713984 1166 * #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 9:8d47cb713984 1167 * // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 9:8d47cb713984 1168 * // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 9:8d47cb713984 1169 * //
whismanoid 9:8d47cb713984 1170 * // TODO1: NUCLEO_F446RE SPI not working; CS and MOSI data looks OK but no SCLK clock pulses.
whismanoid 9:8d47cb713984 1171 * SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); // mosi, miso, sclk spi1 TARGET_NUCLEO_F446RE: Arduino 10-pin header D11 D12 D13
whismanoid 9:8d47cb713984 1172 * DigitalOut spi_cs(SPI_CS); // TARGET_NUCLEO_F446RE: PB_6 Arduino 10-pin header D10
whismanoid 9:8d47cb713984 1173 * //
whismanoid 0:f7d706d2904d 1174 * #else
whismanoid 0:f7d706d2904d 1175 * SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 0:f7d706d2904d 1176 * DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
whismanoid 0:f7d706d2904d 1177 * #endif
whismanoid 0:f7d706d2904d 1178 *
whismanoid 0:f7d706d2904d 1179 * // example code declare GPIO interface pins
whismanoid 0:f7d706d2904d 1180 * DigitalOut CNVST_pin(D9); // Digital Trigger Input to MAX11131 device
whismanoid 6:cb7bdeb185d0 1181 * // AnalogOut REF_plus_pin(Px_x_PortName_To_Be_Determined); // Reference Input to MAX11131 device
whismanoid 6:cb7bdeb185d0 1182 * // AnalogOut REF_minus_slash_AIN15_pin(Px_x_PortName_To_Be_Determined); // Reference Input to MAX11131 device
whismanoid 0:f7d706d2904d 1183 * DigitalIn EOC_pin(D2); // Digital Event Output from MAX11131 device
whismanoid 0:f7d706d2904d 1184 * // example code declare device instance
whismanoid 0:f7d706d2904d 1185 * MAX11131 g_MAX11131_device(spi, spi_cs, CNVST_pin, EOC_pin, MAX11131::MAX11131_IC);
whismanoid 0:f7d706d2904d 1186 *
whismanoid 9:8d47cb713984 1187 * //--------------------------------------------------
whismanoid 9:8d47cb713984 1188 * // Declare the Serial driver
whismanoid 9:8d47cb713984 1189 * // default baud rate settings are 9600 8N1
whismanoid 9:8d47cb713984 1190 * // install device driver from http://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe
whismanoid 9:8d47cb713984 1191 * // see docs https://docs.mbed.com/docs/mbed-os-handbook/en/5.5/getting_started/what_need/
whismanoid 9:8d47cb713984 1192 * //--------------------------------------------------
whismanoid 9:8d47cb713984 1193 * #if defined(TARGET_MAX32630)
whismanoid 9:8d47cb713984 1194 * #include "USBSerial.h"
whismanoid 9:8d47cb713984 1195 * // Hardware serial port over DAPLink
whismanoid 9:8d47cb713984 1196 * // The default baud rate for the DapLink UART is 9600
whismanoid 9:8d47cb713984 1197 * //Serial DAPLINKserial(P2_1, P2_0); // tx, rx
whismanoid 9:8d47cb713984 1198 * // #define HAS_DAPLINK_SERIAL 1
whismanoid 9:8d47cb713984 1199 * // Virtual serial port over USB
whismanoid 9:8d47cb713984 1200 * // The baud rate does not affect the virtual USBSerial UART.
whismanoid 9:8d47cb713984 1201 * USBSerial serial;
whismanoid 9:8d47cb713984 1202 * //--------------------------------------------------
whismanoid 9:8d47cb713984 1203 * #elif defined(TARGET_MAX32625MBED)
whismanoid 9:8d47cb713984 1204 * #include "USBSerial.h"
whismanoid 9:8d47cb713984 1205 * // Hardware serial port over DAPLink
whismanoid 9:8d47cb713984 1206 * // The default baud rate for the DapLink UART is 9600
whismanoid 9:8d47cb713984 1207 * //Serial DAPLINKserial(P2_1, P2_0); // tx, rx
whismanoid 9:8d47cb713984 1208 * // #define HAS_DAPLINK_SERIAL 1
whismanoid 9:8d47cb713984 1209 * // Virtual serial port over USB
whismanoid 9:8d47cb713984 1210 * // The baud rate does not affect the virtual USBSerial UART.
whismanoid 9:8d47cb713984 1211 * USBSerial serial;
whismanoid 9:8d47cb713984 1212 * //--------------------------------------------------
whismanoid 9:8d47cb713984 1213 * #elif defined(TARGET_MAX32600)
whismanoid 9:8d47cb713984 1214 * #include "USBSerial.h"
whismanoid 9:8d47cb713984 1215 * // Hardware serial port over DAPLink
whismanoid 9:8d47cb713984 1216 * // The default baud rate for the DapLink UART is 9600
whismanoid 9:8d47cb713984 1217 * Serial DAPLINKserial(P1_1, P1_0); // tx, rx
whismanoid 9:8d47cb713984 1218 * #define HAS_DAPLINK_SERIAL 1
whismanoid 9:8d47cb713984 1219 * // Virtual serial port over USB
whismanoid 9:8d47cb713984 1220 * // The baud rate does not affect the virtual USBSerial UART.
whismanoid 9:8d47cb713984 1221 * USBSerial serial;
whismanoid 9:8d47cb713984 1222 * //--------------------------------------------------
whismanoid 9:8d47cb713984 1223 * #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 9:8d47cb713984 1224 * Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 9:8d47cb713984 1225 * //--------------------------------------------------
whismanoid 9:8d47cb713984 1226 * #else
whismanoid 9:8d47cb713984 1227 * #if defined(SERIAL_TX)
whismanoid 9:8d47cb713984 1228 * #warning "target not previously tested; guess serial pins are SERIAL_TX, SERIAL_RX..."
whismanoid 9:8d47cb713984 1229 * Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 9:8d47cb713984 1230 * #elif defined(USBTX)
whismanoid 9:8d47cb713984 1231 * #warning "target not previously tested; guess serial pins are USBTX, USBRX..."
whismanoid 9:8d47cb713984 1232 * Serial serial(USBTX, USBRX); // tx, rx
whismanoid 9:8d47cb713984 1233 * #elif defined(UART_TX)
whismanoid 9:8d47cb713984 1234 * #warning "target not previously tested; guess serial pins are UART_TX, UART_RX..."
whismanoid 9:8d47cb713984 1235 * Serial serial(UART_TX, UART_RX); // tx, rx
whismanoid 9:8d47cb713984 1236 * #else
whismanoid 9:8d47cb713984 1237 * #warning "target not previously tested; need to define serial pins..."
whismanoid 9:8d47cb713984 1238 * #endif
whismanoid 9:8d47cb713984 1239 * #endif
whismanoid 9:8d47cb713984 1240 * //
whismanoid 9:8d47cb713984 1241 * #include "CmdLine.h"
whismanoid 9:8d47cb713984 1242 * CmdLine cmdLine(serial, "serial");
whismanoid 9:8d47cb713984 1243 *
whismanoid 0:f7d706d2904d 1244 * // example code main function
whismanoid 0:f7d706d2904d 1245 * int main()
whismanoid 0:f7d706d2904d 1246 * {
whismanoid 9:8d47cb713984 1247 * // setup: put your setup code here, to run once
whismanoid 9:8d47cb713984 1248 *
whismanoid 9:8d47cb713984 1249 * g_MAX11131_device.Init();
whismanoid 9:8d47cb713984 1250 *
whismanoid 0:f7d706d2904d 1251 * while (1)
whismanoid 0:f7d706d2904d 1252 * {
whismanoid 9:8d47cb713984 1253 * // loop: put your main code here, to run repeatedly
whismanoid 0:f7d706d2904d 1254 *
whismanoid 9:8d47cb713984 1255 * // banner for csv data columns
whismanoid 6:cb7bdeb185d0 1256 * while(1) { // this code repeats forever
whismanoid 6:cb7bdeb185d0 1257 * // this code repeats forever
whismanoid 6:cb7bdeb185d0 1258 * // Measure ADC channels in sequence from AIN0 to channelNumber_0_15.
whismanoid 6:cb7bdeb185d0 1259 * // @param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number
whismanoid 6:cb7bdeb185d0 1260 * // @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 6:cb7bdeb185d0 1261 * // @param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 6:cb7bdeb185d0 1262 * int channelId_0_15 = 15;
whismanoid 6:cb7bdeb185d0 1263 * g_MAX11131_device.channelNumber_0_15 = channelId_0_15;
whismanoid 6:cb7bdeb185d0 1264 * g_MAX11131_device.PowerManagement_0_2 = 0;
whismanoid 6:cb7bdeb185d0 1265 * g_MAX11131_device.chan_id_0_1 = 1;
whismanoid 6:cb7bdeb185d0 1266 * g_MAX11131_device.NumWords = g_MAX11131_device.ScanStandardExternalClock();
whismanoid 0:f7d706d2904d 1267 *
whismanoid 6:cb7bdeb185d0 1268 * // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 6:cb7bdeb185d0 1269 * // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 6:cb7bdeb185d0 1270 * g_MAX11131_device.ReadAINcode();
whismanoid 6:cb7bdeb185d0 1271 * // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 6:cb7bdeb185d0 1272 * // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:f7d706d2904d 1273 *
whismanoid 9:8d47cb713984 1274 * // wait(3.0);
whismanoid 6:cb7bdeb185d0 1275 * // Use Arduino Serial Plotter to view output: Tools | Serial Plotter
whismanoid 6:cb7bdeb185d0 1276 * cmdLine.serial().printf("%d", g_MAX11131_device.AINcode[0]);
whismanoid 6:cb7bdeb185d0 1277 * for (int index = 1; index <= channelId_0_15; index++) {
whismanoid 6:cb7bdeb185d0 1278 * cmdLine.serial().printf(",%d", g_MAX11131_device.AINcode[index]);
whismanoid 6:cb7bdeb185d0 1279 * }
whismanoid 9:8d47cb713984 1280 * cmdLine.serial().printf("\r\n");
whismanoid 6:cb7bdeb185d0 1281 *
whismanoid 6:cb7bdeb185d0 1282 * } // this code repeats forever
whismanoid 0:f7d706d2904d 1283 * }
whismanoid 0:f7d706d2904d 1284 * }
whismanoid 0:f7d706d2904d 1285 * @endcode
whismanoid 0:f7d706d2904d 1286 */
whismanoid 0:f7d706d2904d 1287 class MAX11131 {
whismanoid 0:f7d706d2904d 1288 public:
whismanoid 0:f7d706d2904d 1289 //----------------------------------------
whismanoid 0:f7d706d2904d 1290 /// ADC_MODE_CONTROL.SCAN[3:0] ADC Scan Control (command)
whismanoid 0:f7d706d2904d 1291 typedef enum MAX11131_SCAN_enum_t {
whismanoid 9:8d47cb713984 1292 SCAN_0000_NOP = 0x00, //!< 0b0000
whismanoid 9:8d47cb713984 1293 SCAN_0001_Manual = 0x01, //!< 0b0001
whismanoid 9:8d47cb713984 1294 SCAN_0010_Repeat = 0x02, //!< 0b0010
whismanoid 9:8d47cb713984 1295 SCAN_0011_StandardInternalClock = 0x03, //!< 0b0011
whismanoid 9:8d47cb713984 1296 SCAN_0100_StandardExternalClock = 0x04, //!< 0b0100
whismanoid 9:8d47cb713984 1297 SCAN_0101_UpperInternalClock = 0x05, //!< 0b0101
whismanoid 9:8d47cb713984 1298 SCAN_0110_UpperExternalClock = 0x06, //!< 0b0110
whismanoid 9:8d47cb713984 1299 SCAN_0111_CustomInternalClock = 0x07, //!< 0b0111
whismanoid 9:8d47cb713984 1300 SCAN_1000_CustomExternalClock = 0x08, //!< 0b1000
whismanoid 9:8d47cb713984 1301 SCAN_1001_SampleSetExternalClock = 0x09, //!< 0b1001
whismanoid 0:f7d706d2904d 1302 } MAX11131_SCAN_enum_t;
whismanoid 0:f7d706d2904d 1303
whismanoid 0:f7d706d2904d 1304 //----------------------------------------
whismanoid 0:f7d706d2904d 1305 /// ADC_MODE_CONTROL.RESET[1:0] Reset 0=Normal 1=ResetFIFO 2=ResetAllRegisters 3=reserved
whismanoid 0:f7d706d2904d 1306 typedef enum MAX11131_RESET_enum_t {
whismanoid 9:8d47cb713984 1307 RESET_00_Normal = 0x00, //!< 0b00
whismanoid 9:8d47cb713984 1308 RESET_01_ResetFIFO = 0x01, //!< 0b01
whismanoid 9:8d47cb713984 1309 RESET_10_ResetAllRegisters = 0x02, //!< 0b10
whismanoid 0:f7d706d2904d 1310 } MAX11131_RESET_enum_t;
whismanoid 0:f7d706d2904d 1311
whismanoid 0:f7d706d2904d 1312 //----------------------------------------
whismanoid 0:f7d706d2904d 1313 /// ADC_MODE_CONTROL.PM[1:0] Power Management 0=Normal, 1=AutoShutdown, 2=AutoStandby 3=reserved
whismanoid 0:f7d706d2904d 1314 typedef enum MAX11131_PM_enum_t {
whismanoid 9:8d47cb713984 1315 PM_00_Normal = 0x00, //!< 0b00
whismanoid 9:8d47cb713984 1316 PM_01_AutoShutdown = 0x01, //!< 0b01
whismanoid 9:8d47cb713984 1317 PM_10_AutoStandby = 0x02, //!< 0b10
whismanoid 0:f7d706d2904d 1318 } MAX11131_PM_enum_t;
whismanoid 0:f7d706d2904d 1319
whismanoid 0:f7d706d2904d 1320 /**
whismanoid 0:f7d706d2904d 1321 * @brief IC's supported with this driver
whismanoid 0:f7d706d2904d 1322 * @details MAX11131
whismanoid 0:f7d706d2904d 1323 */
whismanoid 0:f7d706d2904d 1324 typedef enum
whismanoid 0:f7d706d2904d 1325 {
whismanoid 0:f7d706d2904d 1326 MAX11131_IC = 0,
whismanoid 0:f7d706d2904d 1327 //MAX11131_IC = 1
whismanoid 0:f7d706d2904d 1328 } MAX11131_ic_t;
whismanoid 0:f7d706d2904d 1329
whismanoid 0:f7d706d2904d 1330 /**********************************************************//**
whismanoid 0:f7d706d2904d 1331 * @brief Constructor for MAX11131 Class.
whismanoid 0:f7d706d2904d 1332 *
whismanoid 0:f7d706d2904d 1333 * @details Requires an existing SPI object as well as a DigitalOut object.
whismanoid 0:f7d706d2904d 1334 * The DigitalOut object is used for a chip enable signal
whismanoid 0:f7d706d2904d 1335 *
whismanoid 0:f7d706d2904d 1336 * On Entry:
whismanoid 0:f7d706d2904d 1337 * @param[in] spi - pointer to existing SPI object
whismanoid 0:f7d706d2904d 1338 * @param[in] cs_pin - pointer to a DigitalOut pin object
whismanoid 0:f7d706d2904d 1339 * @param[in] CNVST_pin - pointer to a DigitalOut pin object
whismanoid 0:f7d706d2904d 1340 * @param[in] EOC_pin - pointer to a DigitalIn pin object
whismanoid 0:f7d706d2904d 1341 * @param[in] ic_variant - which type of MAX11131 is used
whismanoid 0:f7d706d2904d 1342 *
whismanoid 0:f7d706d2904d 1343 * On Exit:
whismanoid 0:f7d706d2904d 1344 *
whismanoid 0:f7d706d2904d 1345 * @return None
whismanoid 0:f7d706d2904d 1346 **************************************************************/
whismanoid 0:f7d706d2904d 1347 MAX11131(SPI &spi, DigitalOut &cs_pin, // SPI interface
whismanoid 0:f7d706d2904d 1348 DigitalOut &CNVST_pin, // Digital Trigger Input to MAX11131 device
whismanoid 6:cb7bdeb185d0 1349 // AnalogOut &REF_plus_pin, // Reference Input to MAX11131 device
whismanoid 6:cb7bdeb185d0 1350 // AnalogOut &REF_minus_slash_AIN15_pin, // Reference Input to MAX11131 device
whismanoid 0:f7d706d2904d 1351 DigitalIn &EOC_pin, // Digital Event Output from MAX11131 device
whismanoid 0:f7d706d2904d 1352 MAX11131_ic_t ic_variant);
whismanoid 0:f7d706d2904d 1353
whismanoid 0:f7d706d2904d 1354 /************************************************************
whismanoid 0:f7d706d2904d 1355 * @brief Default destructor for MAX11131 Class.
whismanoid 0:f7d706d2904d 1356 *
whismanoid 0:f7d706d2904d 1357 * @details Destroys SPI object if owner
whismanoid 0:f7d706d2904d 1358 *
whismanoid 0:f7d706d2904d 1359 * On Entry:
whismanoid 0:f7d706d2904d 1360 *
whismanoid 0:f7d706d2904d 1361 * On Exit:
whismanoid 0:f7d706d2904d 1362 *
whismanoid 0:f7d706d2904d 1363 * @return None
whismanoid 0:f7d706d2904d 1364 **************************************************************/
whismanoid 0:f7d706d2904d 1365 ~MAX11131();
whismanoid 0:f7d706d2904d 1366
whismanoid 6:cb7bdeb185d0 1367 /// Function pointer void f(size_t byteCount, uint8_t mosiData[], uint8_t misoData[])
whismanoid 6:cb7bdeb185d0 1368 Callback<void(size_t, uint8_t*, uint8_t*)> onSPIprint; //!< optional @ref onSPIprint SPI diagnostic function
whismanoid 6:cb7bdeb185d0 1369
whismanoid 6:cb7bdeb185d0 1370 /// set SPI SCLK frequency
whismanoid 0:f7d706d2904d 1371 void spi_frequency(int spi_sclk_Hz);
whismanoid 0:f7d706d2904d 1372
whismanoid 9:8d47cb713984 1373 /// get SPI SCLK frequency
whismanoid 9:8d47cb713984 1374 int get_spi_frequency() const { return m_SPI_SCLK_Hz; }
whismanoid 9:8d47cb713984 1375
whismanoid 9:8d47cb713984 1376 /// get SPI mode
whismanoid 9:8d47cb713984 1377 int get_spi_dataMode() const { return m_SPI_dataMode; }
whismanoid 9:8d47cb713984 1378
whismanoid 0:f7d706d2904d 1379 //----------------------------------------
whismanoid 0:f7d706d2904d 1380 public:
whismanoid 0:f7d706d2904d 1381
whismanoid 0:f7d706d2904d 1382 /// shadow of write-only register ADC_MODE_CONTROL
whismanoid 0:f7d706d2904d 1383 /// mosiData16 0x0000..0x7FFF format: 0 SCAN[3:0] CHSEL[3:0] RESET[1:0] PM[1:0] CHAN_ID SWCNV 0
whismanoid 0:f7d706d2904d 1384 int16_t ADC_MODE_CONTROL;
whismanoid 0:f7d706d2904d 1385
whismanoid 0:f7d706d2904d 1386 /// shadow of write-only register ADC_CONFIGURATION
whismanoid 0:f7d706d2904d 1387 /// mosiData16 0x8000..0x87FF format: 1 0 0 0 0 REFSEL AVGON NAVG[1:0] NSCAN[1:0] SPM[1:0] ECHO 0 0
whismanoid 0:f7d706d2904d 1388 int16_t ADC_CONFIGURATION;
whismanoid 0:f7d706d2904d 1389
whismanoid 0:f7d706d2904d 1390 /// shadow of write-only register UNIPOLAR
whismanoid 0:f7d706d2904d 1391 /// mosiData16 0x8800..0x8FFF format: 1 0 0 0 1 UCH0/1 UCH2/3 UCH4/5 UCH6/7 UCH8/9 UCH10/11 UCH12/13 UCH14/15 PDIFF_COM x x
whismanoid 0:f7d706d2904d 1392 int16_t UNIPOLAR;
whismanoid 0:f7d706d2904d 1393
whismanoid 0:f7d706d2904d 1394 /// shadow of write-only register BIPOLAR
whismanoid 0:f7d706d2904d 1395 /// mosiData16 0x9000..0x97FF format: 1 0 0 1 0 BCH0/1 BCH2/3 BCH4/5 BCH6/7 BCH8/9 BCH10/11 BCH12/13 BCH14/15 x x x
whismanoid 0:f7d706d2904d 1396 int16_t BIPOLAR;
whismanoid 0:f7d706d2904d 1397
whismanoid 0:f7d706d2904d 1398 /// shadow of write-only register RANGE
whismanoid 0:f7d706d2904d 1399 /// mosiData16 0x9800..0x9FFF format: 1 0 0 1 1 RANGE0/1 RANGE2/3 RANGE4/5 RANGE6/7 RANGE8/9 RANGE10/11 RANGE12/13 RANGE14/15 x x x
whismanoid 0:f7d706d2904d 1400 int16_t RANGE;
whismanoid 0:f7d706d2904d 1401
whismanoid 0:f7d706d2904d 1402 /// shadow of write-only register CSCAN0
whismanoid 0:f7d706d2904d 1403 /// mosiData16 0xA000..0xA7FF format: 1 0 1 0 0 CHSCAN15 CHSCAN14 CHSCAN13 CHSCAN12 CHSCAN11 CHSCAN10 CHSCAN9 CHSCAN8 x x x
whismanoid 0:f7d706d2904d 1404 int16_t CSCAN0;
whismanoid 0:f7d706d2904d 1405
whismanoid 0:f7d706d2904d 1406 /// shadow of write-only register CSCAN1
whismanoid 0:f7d706d2904d 1407 /// mosiData16 0xA800..0xAFFF format: 1 0 1 0 1 CHSCAN7 CHSCAN6 CHSCAN5 CHSCAN4 CHSCAN3 CHSCAN2 CHSCAN1 CHSCAN0 x x x
whismanoid 0:f7d706d2904d 1408 int16_t CSCAN1;
whismanoid 0:f7d706d2904d 1409
whismanoid 0:f7d706d2904d 1410 /// shadow of write-only register SAMPLESET
whismanoid 0:f7d706d2904d 1411 /// mosiData16 0xB000..0xB7FF format: 1 0 1 1 0 SEQ_LENGTH[7:0] x x x followed by enabledChannelsPattern.
whismanoid 0:f7d706d2904d 1412 /// NOTE: Send the sampleset pattern, with 4 entries packed into each 16-bit SPI word. Pad unused entries with 0.
whismanoid 0:f7d706d2904d 1413 /// NOTE: Keep CS low during the entire enabledChannelsPattern entry.
whismanoid 0:f7d706d2904d 1414 int16_t SAMPLESET;
whismanoid 0:f7d706d2904d 1415
whismanoid 0:f7d706d2904d 1416 /// unpacked SAMPLESET.SEQ_LENGTH[7:0] determines length of pattern
whismanoid 0:f7d706d2904d 1417 /// NOTE: SAMPLESET.SEQ_LENGTH[7:0] is the number of channel entries in the pattern.
whismanoid 0:f7d706d2904d 1418 /// NOTE: Each channel entry is 4 bits. The first 4 bits are the first channel in the sequence.
whismanoid 0:f7d706d2904d 1419 /// NOTE: Channels can be repeated in any arbitrary order.
whismanoid 0:f7d706d2904d 1420 /// NOTE: The channel entry pattern is sent immediately after writing SAMPLESET.
whismanoid 0:f7d706d2904d 1421 uint8_t enabledChannelsPatternLength_1_256;
whismanoid 0:f7d706d2904d 1422
whismanoid 0:f7d706d2904d 1423 /// unpacked shadow of write-only register SAMPLESET enabledChannelsPattern.
whismanoid 6:cb7bdeb185d0 1424 /// Array Length = enabledChannelsPatternLength_1_256.
whismanoid 0:f7d706d2904d 1425 /// Each entry is a channel number between 0 and 15.
whismanoid 0:f7d706d2904d 1426 uint8_t enabledChannelsPattern[256];
whismanoid 0:f7d706d2904d 1427
whismanoid 0:f7d706d2904d 1428 /// Diagnostic: what is the meaning of SPI Master Out data.
whismanoid 0:f7d706d2904d 1429 /// 0:Nothing 1:regWrite 2:sampleSetPattern
whismanoid 0:f7d706d2904d 1430 uint8_t SPI_MOSI_Semantic;
whismanoid 0:f7d706d2904d 1431
whismanoid 0:f7d706d2904d 1432 /// number of ScanRead() words needed to retrieve all measurements.
whismanoid 0:f7d706d2904d 1433 uint16_t NumWords;
whismanoid 0:f7d706d2904d 1434
whismanoid 0:f7d706d2904d 1435 /// Is the currently configured mode external or internal clock. 1:External Clock 0:Internal Clock
whismanoid 0:f7d706d2904d 1436 uint8_t isExternalClock;
whismanoid 0:f7d706d2904d 1437
whismanoid 0:f7d706d2904d 1438 /// unpacked ADC_MODE_CONTROL.SCAN[3:0] Scan Mode MAX11131_SCAN_enum_t
whismanoid 0:f7d706d2904d 1439 uint8_t ScanMode;
whismanoid 0:f7d706d2904d 1440
whismanoid 0:f7d706d2904d 1441 /// unpacked ADC_MODE_CONTROL.CHSEL[3:0] Analog Input Channel Select
whismanoid 0:f7d706d2904d 1442 uint8_t channelNumber_0_15;
whismanoid 0:f7d706d2904d 1443
whismanoid 0:f7d706d2904d 1444 /// unpacked ADC_MODE_CONTROL.PM[1:0] Power Management MAX11131_PM_enum_t
whismanoid 0:f7d706d2904d 1445 uint8_t PowerManagement_0_2;
whismanoid 0:f7d706d2904d 1446
whismanoid 0:f7d706d2904d 1447 /// unpacked ADC_MODE_CONTROL.CHAN_ID
whismanoid 0:f7d706d2904d 1448 uint8_t chan_id_0_1;
whismanoid 0:f7d706d2904d 1449
whismanoid 0:f7d706d2904d 1450 /// unpacked ADC_CONFIGURATION.AVG and ADC_CONFIGURATION.NAVG[1:0] may be 0, 4, 8, 16, or 32
whismanoid 0:f7d706d2904d 1451 uint8_t average_0_4_8_16_32;
whismanoid 0:f7d706d2904d 1452
whismanoid 0:f7d706d2904d 1453 /// unpacked ADC_CONFIGURATION.NSCAN[1:0] may be 4, 8, 12, or 16
whismanoid 0:f7d706d2904d 1454 uint8_t nscan_4_8_12_16;
whismanoid 0:f7d706d2904d 1455
whismanoid 0:f7d706d2904d 1456 /// unpacked ADC_MODE_CONTROL.SWCNV
whismanoid 0:f7d706d2904d 1457 uint8_t swcnv_0_1;
whismanoid 0:f7d706d2904d 1458
whismanoid 0:f7d706d2904d 1459 /// unpacked CSCAN0 and CSCAN1
whismanoid 0:f7d706d2904d 1460 int16_t enabledChannelsMask;
whismanoid 0:f7d706d2904d 1461
whismanoid 0:f7d706d2904d 1462 /// Each channel's most recent value in LSBs.
whismanoid 0:f7d706d2904d 1463 /// Updated by ReadAINcode function.
whismanoid 0:f7d706d2904d 1464 /// Use VoltageOfCode function to convert LSBs to physical voltage.
whismanoid 0:f7d706d2904d 1465 uint16_t AINcode[16];
whismanoid 0:f7d706d2904d 1466
whismanoid 0:f7d706d2904d 1467 /// SPI master-in slave-out data.
whismanoid 0:f7d706d2904d 1468 /// Updated by ReadAINcode function.
whismanoid 0:f7d706d2904d 1469 /// SampleSet mode allows up to 256 channel entry selections.
whismanoid 0:f7d706d2904d 1470 int16_t RAW_misoData16[256];
whismanoid 0:f7d706d2904d 1471
whismanoid 0:f7d706d2904d 1472 /// reference voltage, in Volts
whismanoid 0:f7d706d2904d 1473 double VRef;
whismanoid 0:f7d706d2904d 1474
whismanoid 0:f7d706d2904d 1475
whismanoid 0:f7d706d2904d 1476 //----------------------------------------
whismanoid 10:92aedaa14cce 1477 // set SPI SCLK frequency for MAX11131
whismanoid 10:92aedaa14cce 1478 //
whismanoid 11:eaaf13fe381e 1479 void SPIfrequency(int spi_sclk_Hz);
whismanoid 10:92aedaa14cce 1480
whismanoid 10:92aedaa14cce 1481 //----------------------------------------
whismanoid 10:92aedaa14cce 1482 // get SPI SCLK frequency for MAX11131
whismanoid 10:92aedaa14cce 1483 //
whismanoid 11:eaaf13fe381e 1484 int SPIgetFrequency();
whismanoid 10:92aedaa14cce 1485
whismanoid 10:92aedaa14cce 1486 //----------------------------------------
whismanoid 0:f7d706d2904d 1487 // Assert SPI Chip Select
whismanoid 0:f7d706d2904d 1488 // SPI chip-select for MAX11131
whismanoid 0:f7d706d2904d 1489 //
whismanoid 0:f7d706d2904d 1490 void SPIoutputCS(int isLogicHigh);
whismanoid 0:f7d706d2904d 1491
whismanoid 0:f7d706d2904d 1492 //----------------------------------------
whismanoid 0:f7d706d2904d 1493 // SPI write 16 bits
whismanoid 0:f7d706d2904d 1494 // SPI interface to MAX11131 shift 16 bits mosiData16 into MAX11131 DIN
whismanoid 0:f7d706d2904d 1495 // ignoring MAX11131 DOUT
whismanoid 0:f7d706d2904d 1496 //
whismanoid 0:f7d706d2904d 1497 void SPIwrite16bits(int16_t mosiData16);
whismanoid 0:f7d706d2904d 1498
whismanoid 0:f7d706d2904d 1499 //----------------------------------------
whismanoid 0:f7d706d2904d 1500 // SPI write 17-24 bits
whismanoid 0:f7d706d2904d 1501 // SPI interface to MAX11131 shift 16 bits mosiData16 into MAX11131 DIN
whismanoid 0:f7d706d2904d 1502 // followed by one additional SCLK byte.
whismanoid 0:f7d706d2904d 1503 // ignoring MAX11131 DOUT
whismanoid 0:f7d706d2904d 1504 //
whismanoid 0:f7d706d2904d 1505 void SPIwrite24bits(int16_t mosiData16_FFFF00, int8_t mosiData8_0000FF);
whismanoid 0:f7d706d2904d 1506
whismanoid 0:f7d706d2904d 1507 //----------------------------------------
whismanoid 0:f7d706d2904d 1508 // SPI read 16 bits while MOSI (MAX11131 DIN) is 0
whismanoid 0:f7d706d2904d 1509 // SPI interface to capture 16 bits miso data from MAX11131 DOUT
whismanoid 0:f7d706d2904d 1510 //
whismanoid 0:f7d706d2904d 1511 int16_t SPIread16bits();
whismanoid 0:f7d706d2904d 1512
whismanoid 0:f7d706d2904d 1513 //----------------------------------------
whismanoid 0:f7d706d2904d 1514 // Assert MAX11131 CNVST convert start.
whismanoid 0:f7d706d2904d 1515 // Required when using any of the InternalClock modes with SWCNV 0.
whismanoid 0:f7d706d2904d 1516 // Trigger measurement by driving CNVST/AIN14 pin low for a minimum active-low pulse duration of 5ns. (AIN14 is not available)
whismanoid 0:f7d706d2904d 1517 //
whismanoid 0:f7d706d2904d 1518 void CNVSToutputPulseLow();
whismanoid 0:f7d706d2904d 1519
whismanoid 0:f7d706d2904d 1520 //----------------------------------------
whismanoid 0:f7d706d2904d 1521 // Wait for MAX11131 EOC pin low, indicating end of conversion.
whismanoid 0:f7d706d2904d 1522 // Required when using any of the InternalClock modes.
whismanoid 0:f7d706d2904d 1523 //
whismanoid 0:f7d706d2904d 1524 void EOCinputWaitUntilLow();
whismanoid 0:f7d706d2904d 1525
whismanoid 0:f7d706d2904d 1526 //----------------------------------------
whismanoid 0:f7d706d2904d 1527 // Return the status of the MAX11131 EOC pin.
whismanoid 0:f7d706d2904d 1528 //
whismanoid 0:f7d706d2904d 1529 int EOCinputValue();
whismanoid 0:f7d706d2904d 1530
whismanoid 0:f7d706d2904d 1531 private:
whismanoid 0:f7d706d2904d 1532 // SPI object
whismanoid 0:f7d706d2904d 1533 SPI &m_spi;
whismanoid 0:f7d706d2904d 1534 int m_SPI_SCLK_Hz;
whismanoid 0:f7d706d2904d 1535 int m_SPI_dataMode;
whismanoid 0:f7d706d2904d 1536 int m_SPI_cs_state;
whismanoid 0:f7d706d2904d 1537
whismanoid 0:f7d706d2904d 1538 // Selector pin object
whismanoid 0:f7d706d2904d 1539 DigitalOut &m_cs_pin;
whismanoid 0:f7d706d2904d 1540
whismanoid 0:f7d706d2904d 1541 // InputPin Name = CNVST
whismanoid 0:f7d706d2904d 1542 // InputPin Description = Active-Low Conversion Start Input/Analog Input 14
whismanoid 0:f7d706d2904d 1543 // InputPin Function = Trigger
whismanoid 0:f7d706d2904d 1544 DigitalOut &m_CNVST_pin;
whismanoid 0:f7d706d2904d 1545 //
whismanoid 0:f7d706d2904d 1546 // InputPin Name = REF+
whismanoid 0:f7d706d2904d 1547 // InputPin Description = External Positive Reference Input. Apply a reference voltage at REF+. Bypass to GND with a 0.47uF capacitor.
whismanoid 0:f7d706d2904d 1548 // InputPin Function = Reference
whismanoid 6:cb7bdeb185d0 1549 // AnalogOut &m_REF_plus_pin;
whismanoid 0:f7d706d2904d 1550 //
whismanoid 0:f7d706d2904d 1551 // InputPin Name = REF-/AIN15
whismanoid 0:f7d706d2904d 1552 // InputPin Description = External Differential Reference Negative Input/Analog Input 15
whismanoid 0:f7d706d2904d 1553 // InputPin Function = Reference
whismanoid 6:cb7bdeb185d0 1554 // AnalogOut &m_REF_minus_slash_AIN15_pin;
whismanoid 0:f7d706d2904d 1555 //
whismanoid 0:f7d706d2904d 1556 // OutputPin Name = EOC
whismanoid 0:f7d706d2904d 1557 // OutputPin Description = End of Conversion Output. Data is valid after EOC pulls low (Internal clock mode only).
whismanoid 0:f7d706d2904d 1558 // OutputPin Function = Event
whismanoid 0:f7d706d2904d 1559 DigitalIn &m_EOC_pin;
whismanoid 0:f7d706d2904d 1560 //
whismanoid 0:f7d706d2904d 1561
whismanoid 0:f7d706d2904d 1562 // Identifies which IC variant is being used
whismanoid 0:f7d706d2904d 1563 MAX11131_ic_t m_ic_variant;
whismanoid 0:f7d706d2904d 1564
whismanoid 0:f7d706d2904d 1565 public:
whismanoid 0:f7d706d2904d 1566
whismanoid 0:f7d706d2904d 1567 //----------------------------------------
whismanoid 6:cb7bdeb185d0 1568 /// Menu item '!'
whismanoid 0:f7d706d2904d 1569 /// Initialize device
whismanoid 9:8d47cb713984 1570 ///
whismanoid 9:8d47cb713984 1571 /// TODO1: #170 MAX11131 Self Test for Test Fixture Firmware
whismanoid 9:8d47cb713984 1572 /// @future test group ____ // Verify function ____ (enabled by default)
whismanoid 9:8d47cb713984 1573 ///
whismanoid 9:8d47cb713984 1574 /// @future test group DACCodeOfVoltage // Verify function DACCodeOfVoltage (enabled by default)
whismanoid 9:8d47cb713984 1575 /// @future test group DACCodeOfVoltage tinyTester.blink_time_msec = 20 // quickly speed through the software verification
whismanoid 9:8d47cb713984 1576 /// @future test group DACCodeOfVoltage tinyTester.print("VRef = 2.500 MAX5171 14-bit LSB = 0.00015V")
whismanoid 9:8d47cb713984 1577 /// @future test group DACCodeOfVoltage VRef = 2.500
whismanoid 9:8d47cb713984 1578 /// @future test group DACCodeOfVoltage tinyTester.err_threshold = 0.00015259720441921504 // 14-bit LSB (2.500/16383)
whismanoid 9:8d47cb713984 1579 /// //
whismanoid 9:8d47cb713984 1580 /// @future test group DACCodeOfVoltage DACCodeOfVoltage(2.499847412109375) expect 0x3FFF
whismanoid 9:8d47cb713984 1581 /// //
whismanoid 9:8d47cb713984 1582 /// //
whismanoid 9:8d47cb713984 1583 /// @future test group CODE_LOAD // Verify function CODE_LOAD (enabled by default)
whismanoid 9:8d47cb713984 1584 /// @future test group CODE_LOAD tinyTester.blink_time_msec = 75 // default 75 resume hardware self test
whismanoid 9:8d47cb713984 1585 /// @future test group CODE_LOAD tinyTester.settle_time_msec = 250
whismanoid 9:8d47cb713984 1586 /// @future test Init()
whismanoid 9:8d47cb713984 1587 /// @future test VRef expect 2.500 // Nominal Full-Scale Voltage Reference
whismanoid 9:8d47cb713984 1588 /// //
whismanoid 9:8d47cb713984 1589 /// tinyTester.err_threshold = 0.030; // 30mV
whismanoid 9:8d47cb713984 1590 /// @future test group CODE_LOAD tinyTester.err_threshold = 0.030
whismanoid 9:8d47cb713984 1591 /// @future test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command")
whismanoid 9:8d47cb713984 1592 /// @future test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(1.2500)
whismanoid 9:8d47cb713984 1593 ///
whismanoid 9:8d47cb713984 1594 ///
whismanoid 9:8d47cb713984 1595 ///
whismanoid 9:8d47cb713984 1596 /// TODO1: #170 MAX11131 Self Test for Test Fixture Firmware
whismanoid 9:8d47cb713984 1597 /// @future test group ____ // Verify function ____ (enabled by default)
whismanoid 10:92aedaa14cce 1598 /// @future test group ____ // Verify function ____ (enabled by default)
whismanoid 9:8d47cb713984 1599 /// // MAX11131BOB self-test functions
whismanoid 9:8d47cb713984 1600 /// //~ SelfTest_FAIL(cmdLine);
whismanoid 9:8d47cb713984 1601 /// //~ cmdLine.serial().printf("test program not implemented yet");
whismanoid 9:8d47cb713984 1602 /// int16_t value_u12;
whismanoid 9:8d47cb713984 1603 /// int channelId;
whismanoid 9:8d47cb713984 1604 /// double voltageV = 0.5;
whismanoid 9:8d47cb713984 1605 /// //
whismanoid 9:8d47cb713984 1606 /// //cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1607 /// 0.0: MAX11131.Init()");
whismanoid 9:8d47cb713984 1608 /// //g_MAX11131_device.Init();
whismanoid 9:8d47cb713984 1609 /// //
whismanoid 9:8d47cb713984 1610 /// // Device Testing: ADC commands, verify with on-board ADC and SPI framing
whismanoid 9:8d47cb713984 1611 /// //
whismanoid 10:92aedaa14cce 1612 /// @test group SPI48_3MSps // support 3MSps parts SCLK<=48MHz (enabled by default)
whismanoid 10:92aedaa14cce 1613 /// @test group SPI48_3MSps tinyTester.print("SPI 48MHz")
whismanoid 11:eaaf13fe381e 1614 /// @test group SPI48_3MSps SPIfrequency(48000000); // support 3MSps parts SCLK<=48MHz
whismanoid 11:eaaf13fe381e 1615 /// @test group SPI48_3MSps SPIgetFrequency() expect 48000000
whismanoid 11:eaaf13fe381e 1616 /// @test group SPI48_3MSps tinyTester.settle_time_msec = 250 // default 250
whismanoid 11:eaaf13fe381e 1617 /// @test group SPI48_3MSps tinyTester.Wait_Output_Settling()
whismanoid 11:eaaf13fe381e 1618 /// @test group SPI48_3MSps SPIoutputCS(0)
whismanoid 11:eaaf13fe381e 1619 /// @test group SPI48_3MSps SPIread16bits()
whismanoid 11:eaaf13fe381e 1620 /// @test group SPI48_3MSps SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1621 /// //
whismanoid 10:92aedaa14cce 1622 /// @test group SPI16MHz_1MSps // support 1MSps parts SCLK<=16MHz (enabled by default)
whismanoid 10:92aedaa14cce 1623 /// @test group SPI16MHz_1MSps tinyTester.print("SPI 16MHz")
whismanoid 11:eaaf13fe381e 1624 /// @test group SPI16MHz_1MSps SPIfrequency(16000000); // support 1MSps parts SCLK<=16MHz
whismanoid 11:eaaf13fe381e 1625 /// @test group SPI16MHz_1MSps SPIgetFrequency() expect 16000000
whismanoid 11:eaaf13fe381e 1626 /// @test group SPI16MHz_1MSps tinyTester.settle_time_msec = 250 // default 250
whismanoid 11:eaaf13fe381e 1627 /// @test group SPI16MHz_1MSps tinyTester.Wait_Output_Settling()
whismanoid 11:eaaf13fe381e 1628 /// @test group SPI16MHz_1MSps SPIoutputCS(0)
whismanoid 11:eaaf13fe381e 1629 /// @test group SPI16MHz_1MSps SPIread16bits()
whismanoid 11:eaaf13fe381e 1630 /// @test group SPI16MHz_1MSps SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1631 /// //
whismanoid 10:92aedaa14cce 1632 /// @test group SPI8MHz_500kSps // support 500kSps parts SCLK<=8MHz (enabled by default)
whismanoid 10:92aedaa14cce 1633 /// @test group SPI8MHz_500kSps tinyTester.print("SPI 8MHz")
whismanoid 11:eaaf13fe381e 1634 /// @test group SPI8MHz_500kSps SPIfrequency(8000000); // support 500kSps parts SCLK<=8MHz
whismanoid 11:eaaf13fe381e 1635 /// @test group SPI8MHz_500kSps SPIgetFrequency() expect 8000000
whismanoid 11:eaaf13fe381e 1636 /// @test group SPI8MHz_500kSps tinyTester.settle_time_msec = 250 // default 250
whismanoid 11:eaaf13fe381e 1637 /// @test group SPI8MHz_500kSps tinyTester.Wait_Output_Settling()
whismanoid 11:eaaf13fe381e 1638 /// @test group SPI8MHz_500kSps SPIoutputCS(0)
whismanoid 11:eaaf13fe381e 1639 /// @test group SPI8MHz_500kSps SPIread16bits()
whismanoid 11:eaaf13fe381e 1640 /// @test group SPI8MHz_500kSps SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1641 /// //
whismanoid 10:92aedaa14cce 1642 /// @test group SPI12MHz_1MSps // support 1MSps parts SCLK<=16MHz (enabled by default)
whismanoid 10:92aedaa14cce 1643 /// @test group SPI12MHz_1MSps tinyTester.print("SPI 12MHz")
whismanoid 11:eaaf13fe381e 1644 /// @test group SPI12MHz_1MSps SPIfrequency(12000000); // support 1MSps parts SCLK<=16MHz
whismanoid 11:eaaf13fe381e 1645 /// @test group SPI12MHz_1MSps SPIgetFrequency() expect 12000000
whismanoid 11:eaaf13fe381e 1646 /// @test group SPI12MHz_1MSps tinyTester.settle_time_msec = 250 // default 250
whismanoid 11:eaaf13fe381e 1647 /// @test group SPI12MHz_1MSps tinyTester.Wait_Output_Settling()
whismanoid 11:eaaf13fe381e 1648 /// @test group SPI12MHz_1MSps SPIoutputCS(0)
whismanoid 11:eaaf13fe381e 1649 /// @test group SPI12MHz_1MSps SPIread16bits()
whismanoid 11:eaaf13fe381e 1650 /// @test group SPI12MHz_1MSps SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1651 /// //
whismanoid 9:8d47cb713984 1652 /// @test tinyTester.blink_time_msec = 75 // default 75 resume hardware self test
whismanoid 9:8d47cb713984 1653 /// tinyTester.blink_time_msec = 75;
whismanoid 9:8d47cb713984 1654 /// // MAX11131 SelfTest: MAX11131 SPI connections (Power Supply and GND, SCLK, MOSI, MISO, CS)
whismanoid 9:8d47cb713984 1655 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1656 /// ");
whismanoid 9:8d47cb713984 1657 /// cmdLine.serial().printf(
whismanoid 9:8d47cb713984 1658 /// "
whismanoid 9:8d47cb713984 1659 /// 1.0: Test Scan_0100_StandardExt -- verify SPI (VDD, GND, SCLK, MOSI, MISO, CS)");
whismanoid 10:92aedaa14cce 1660 /// @test tinyTester.print("0.0: MAX11131.Init()")
whismanoid 9:8d47cb713984 1661 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1662 /// MAX11131.Init()");
whismanoid 9:8d47cb713984 1663 /// g_MAX11131_device.Init();
whismanoid 10:92aedaa14cce 1664 /// @test Init()
whismanoid 10:92aedaa14cce 1665 /// @test VRef expect 2.500 // Nominal Full-Scale Voltage Reference
whismanoid 10:92aedaa14cce 1666 /// //
whismanoid 10:92aedaa14cce 1667 /// @test group TEST10_SCAN_0100 // Test SCAN_0100_StandardExt -- verify VDD,GND,SCLK,MOSI,MISO,CS (enabled by default)
whismanoid 10:92aedaa14cce 1668 /// @test group TEST10_SCAN_0100 tinyTester.print("1.0: Test SCAN_0100_StandardExt -- verify VDD,GND,SCLK,MOSI,MISO,CS")
whismanoid 10:92aedaa14cce 1669 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1670 /// @test group TEST10_SCAN_0100 tinyTester.print("0000_0000_0100_0010 ADC_MODE_CONTROL SCAN_0000")
whismanoid 10:92aedaa14cce 1671 /// @test group TEST10_SCAN_0100 tinyTester.print(" CHSEL=0 RESET=2 CHANID=1")
whismanoid 10:92aedaa14cce 1672 /// @test group TEST10_SCAN_0100 SPIwrite16bits(0x0040)
whismanoid 10:92aedaa14cce 1673 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1674 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1675 /// @test group TEST10_SCAN_0100 SPIread16bits()
whismanoid 10:92aedaa14cce 1676 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1677 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1678 /// @test group TEST10_SCAN_0100 SPIread16bits()
whismanoid 10:92aedaa14cce 1679 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1680 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1681 /// @test group TEST10_SCAN_0100 SPIread16bits()
whismanoid 10:92aedaa14cce 1682 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1683 /// @test group TEST10_SCAN_0100 tinyTester.print("1000_0000_0000_0000 ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0")
whismanoid 10:92aedaa14cce 1684 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1685 /// @test group TEST10_SCAN_0100 SPIwrite16bits(0x8000)
whismanoid 10:92aedaa14cce 1686 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1687 /// @test group TEST10_SCAN_0100 tinyTester.print("0010_0111_1010_0100 ADC_MODE_CONTROL SCAN_0100_StandardExt")
whismanoid 10:92aedaa14cce 1688 /// @test group TEST10_SCAN_0100 tinyTester.print(" CHSEL=15 RESET=1 CHANID=1")
whismanoid 10:92aedaa14cce 1689 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1690 /// @test group TEST10_SCAN_0100 SPIwrite16bits(0x27a4)
whismanoid 10:92aedaa14cce 1691 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1692 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x0xxx (channel ID 0)")
whismanoid 10:92aedaa14cce 1693 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1694 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x0000 mask 0xF000 // expect 0x0xxx (channel ID 0)
whismanoid 10:92aedaa14cce 1695 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1696 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x1xxx (channel ID 1)")
whismanoid 10:92aedaa14cce 1697 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1698 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x1000 mask 0xF000 // expect 0x1xxx (channel ID 1)
whismanoid 10:92aedaa14cce 1699 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1700 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x2xxx (channel ID 2)")
whismanoid 10:92aedaa14cce 1701 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1702 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x2000 mask 0xF000 // expect 0x2xxx (channel ID 2)
whismanoid 10:92aedaa14cce 1703 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1704 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x3xxx (channel ID 3)")
whismanoid 10:92aedaa14cce 1705 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1706 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x3000 mask 0xF000 // expect 0x3xxx (channel ID 3)
whismanoid 10:92aedaa14cce 1707 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1708 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x4xxx (channel ID 4)")
whismanoid 10:92aedaa14cce 1709 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1710 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x4000 mask 0xF000 // expect 0x4xxx (channel ID 4)
whismanoid 10:92aedaa14cce 1711 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1712 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x5xxx (channel ID 5)")
whismanoid 10:92aedaa14cce 1713 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1714 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x5000 mask 0xF000 // expect 0x5xxx (channel ID 5)
whismanoid 10:92aedaa14cce 1715 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1716 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x6xxx (channel ID 6)")
whismanoid 10:92aedaa14cce 1717 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1718 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x6000 mask 0xF000 // expect 0x6xxx (channel ID 6)
whismanoid 10:92aedaa14cce 1719 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1720 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x7xxx (channel ID 7)")
whismanoid 10:92aedaa14cce 1721 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1722 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x7000 mask 0xF000 // expect 0x7xxx (channel ID 7)
whismanoid 10:92aedaa14cce 1723 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1724 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x8xxx (channel ID 8)")
whismanoid 10:92aedaa14cce 1725 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1726 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x8000 mask 0xF000 // expect 0x8xxx (channel ID 8)
whismanoid 10:92aedaa14cce 1727 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1728 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0x9xxx (channel ID 9)")
whismanoid 10:92aedaa14cce 1729 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1730 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0x9000 mask 0xF000 // expect 0x9xxx (channel ID 9)
whismanoid 10:92aedaa14cce 1731 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1732 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0xaxxx (channel ID 10)")
whismanoid 10:92aedaa14cce 1733 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1734 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0xA000 mask 0xF000 // expect 0xaxxx (channel ID 10)
whismanoid 10:92aedaa14cce 1735 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1736 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0xbxxx (channel ID 11)")
whismanoid 10:92aedaa14cce 1737 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1738 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0xB000 mask 0xF000 // expect 0xbxxx (channel ID 11)
whismanoid 10:92aedaa14cce 1739 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1740 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0xcxxx (channel ID 12)")
whismanoid 10:92aedaa14cce 1741 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1742 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0xC000 mask 0xF000 // expect 0xcxxx (channel ID 12)
whismanoid 10:92aedaa14cce 1743 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1744 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0xdxxx (channel ID 13)")
whismanoid 10:92aedaa14cce 1745 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1746 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0xD000 mask 0xF000 // expect 0xdxxx (channel ID 13)
whismanoid 10:92aedaa14cce 1747 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1748 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0xexxx (channel ID 14)")
whismanoid 10:92aedaa14cce 1749 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1750 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0xE000 mask 0xF000 // expect 0xexxx (channel ID 14)
whismanoid 10:92aedaa14cce 1751 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1752 /// @test group TEST10_SCAN_0100 tinyTester.print("MISO --> expect 0xfxxx (channel ID 15)")
whismanoid 10:92aedaa14cce 1753 /// @test group TEST10_SCAN_0100 SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1754 /// @test group TEST10_SCAN_0100 SPIread16bits() expect 0xF000 mask 0xF000 // expect 0xfxxx (channel ID 15)
whismanoid 10:92aedaa14cce 1755 /// @test group TEST10_SCAN_0100 SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1756 /// //
whismanoid 10:92aedaa14cce 1757 /// @test group TEST4_SCAN_0100 // 4 ch=15 pm=0 id=1 -- ScanStandardExternalCloc (enabled by default)
whismanoid 10:92aedaa14cce 1758 /// @test group TEST4_SCAN_0100 tinyTester.print("4 ch=15 pm=0 id=1 -- ScanStandardExternalClock")
whismanoid 10:92aedaa14cce 1759 /// @test group TEST4_SCAN_0100 tinyTester.print("channelNumber_0_15 = 15")
whismanoid 10:92aedaa14cce 1760 /// @test group TEST4_SCAN_0100 channelNumber_0_15 = 15
whismanoid 10:92aedaa14cce 1761 /// @test group TEST4_SCAN_0100 tinyTester.print("PowerManagement_0_2 = 0")
whismanoid 10:92aedaa14cce 1762 /// @test group TEST4_SCAN_0100 PowerManagement_0_2 = 0 // 0=Normal
whismanoid 10:92aedaa14cce 1763 /// @test group TEST4_SCAN_0100 tinyTester.print("chan_id_0_1 = 1")
whismanoid 10:92aedaa14cce 1764 /// @test group TEST4_SCAN_0100 chan_id_0_1 = 1 // misoData16 = CH[3:0] DATA[11:0]
whismanoid 10:92aedaa14cce 1765 /// @test group TEST4_SCAN_0100 tinyTester.print("ScanStandardExternalClock() expect 16")
whismanoid 10:92aedaa14cce 1766 /// @test group TEST4_SCAN_0100 ScanStandardExternalClock() expect 16 // Scan_0100_StandardExt
whismanoid 10:92aedaa14cce 1767 /// @test group TEST4_SCAN_0100 tinyTester.print("NumWords expect 16")
whismanoid 10:92aedaa14cce 1768 /// @test group TEST4_SCAN_0100 NumWords expect 16
whismanoid 10:92aedaa14cce 1769 /// @test group TEST4_SCAN_0100 ReadAINcode()
whismanoid 10:92aedaa14cce 1770 /// @test group TEST4_SCAN_0100 tinyTester.print("Verify RAW_misoData16[0..15]>>12&0x000F == 0..15 channelId")
whismanoid 10:92aedaa14cce 1771 /// @test group TEST4_SCAN_0100 RAW_misoData16[0] expect 0x0000 mask 0xF000 // expect 0x0xxx (channel ID 0)
whismanoid 10:92aedaa14cce 1772 /// @test group TEST4_SCAN_0100 RAW_misoData16[1] expect 0x1000 mask 0xF000 // expect 0x1xxx (channel ID 1)
whismanoid 10:92aedaa14cce 1773 /// @test group TEST4_SCAN_0100 RAW_misoData16[2] expect 0x2000 mask 0xF000 // expect 0x2xxx (channel ID 2)
whismanoid 10:92aedaa14cce 1774 /// @test group TEST4_SCAN_0100 RAW_misoData16[3] expect 0x3000 mask 0xF000 // expect 0x3xxx (channel ID 3)
whismanoid 10:92aedaa14cce 1775 /// @test group TEST4_SCAN_0100 RAW_misoData16[4] expect 0x4000 mask 0xF000 // expect 0x4xxx (channel ID 4)
whismanoid 10:92aedaa14cce 1776 /// @test group TEST4_SCAN_0100 RAW_misoData16[5] expect 0x5000 mask 0xF000 // expect 0x5xxx (channel ID 5)
whismanoid 10:92aedaa14cce 1777 /// @test group TEST4_SCAN_0100 RAW_misoData16[6] expect 0x6000 mask 0xF000 // expect 0x6xxx (channel ID 6)
whismanoid 10:92aedaa14cce 1778 /// @test group TEST4_SCAN_0100 RAW_misoData16[7] expect 0x7000 mask 0xF000 // expect 0x7xxx (channel ID 7)
whismanoid 10:92aedaa14cce 1779 /// @test group TEST4_SCAN_0100 RAW_misoData16[8] expect 0x8000 mask 0xF000 // expect 0x8xxx (channel ID 8)
whismanoid 10:92aedaa14cce 1780 /// @test group TEST4_SCAN_0100 RAW_misoData16[9] expect 0x9000 mask 0xF000 // expect 0x9xxx (channel ID 9)
whismanoid 10:92aedaa14cce 1781 /// @test group TEST4_SCAN_0100 RAW_misoData16[10] expect 0xA000 mask 0xF000 // expect 0xaxxx (channel ID 10)
whismanoid 10:92aedaa14cce 1782 /// @test group TEST4_SCAN_0100 RAW_misoData16[11] expect 0xB000 mask 0xF000 // expect 0xbxxx (channel ID 11)
whismanoid 10:92aedaa14cce 1783 /// @test group TEST4_SCAN_0100 RAW_misoData16[12] expect 0xC000 mask 0xF000 // expect 0xcxxx (channel ID 12)
whismanoid 10:92aedaa14cce 1784 /// @test group TEST4_SCAN_0100 RAW_misoData16[13] expect 0xD000 mask 0xF000 // expect 0xdxxx (channel ID 13)
whismanoid 10:92aedaa14cce 1785 /// @test group TEST4_SCAN_0100 RAW_misoData16[14] expect 0xE000 mask 0xF000 // expect 0xexxx (channel ID 14)
whismanoid 10:92aedaa14cce 1786 /// @test group TEST4_SCAN_0100 RAW_misoData16[15] expect 0xF000 mask 0xF000 // expect 0xfxxx (channel ID 15)
whismanoid 9:8d47cb713984 1787 /// // Send MOSI data Expect MISO data Description
whismanoid 9:8d47cb713984 1788 /// // 1000_0000_0000_0000 xxxx_xxxx_xxxx_xxxx ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0
whismanoid 9:8d47cb713984 1789 /// // 0010_0111_1010_0100 xxxx_xxxx_xxxx_xxxx ADC_MODE_CONTROL Scan_0100_StandardExt CHSEL=15 RESET=1 CHANID=1
whismanoid 9:8d47cb713984 1790 /// // 0000_0000_0000_0000 0000_xxxx_xxxx_xxxx Channel ID tag = AIN0 expect high nybble 0
whismanoid 9:8d47cb713984 1791 /// // 0000_0000_0000_0000 0001_xxxx_xxxx_xxxx Channel ID tag = AIN1 expect high nybble 1
whismanoid 9:8d47cb713984 1792 /// // 0000_0000_0000_0000 0010_xxxx_xxxx_xxxx Channel ID tag = AIN2 expect high nybble 2
whismanoid 9:8d47cb713984 1793 /// // 0000_0000_0000_0000 0011_xxxx_xxxx_xxxx Channel ID tag = AIN3 expect high nybble 3
whismanoid 9:8d47cb713984 1794 /// //
whismanoid 9:8d47cb713984 1795 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1796 /// MOSI <-- 1000_0000_0000_0000 ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0");
whismanoid 10:92aedaa14cce 1797 /// @test tinyTester.print("1000_0000_0000_0000 ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0")
whismanoid 9:8d47cb713984 1798 /// g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 9:8d47cb713984 1799 /// g_MAX11131_device.SPIwrite16bits(0x8000);
whismanoid 9:8d47cb713984 1800 /// g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 9:8d47cb713984 1801 /// @test SPIoutputCS(0)
whismanoid 9:8d47cb713984 1802 /// @test SPIwrite16bits(0x8000)
whismanoid 9:8d47cb713984 1803 /// @test SPIoutputCS(1)
whismanoid 9:8d47cb713984 1804 /// //
whismanoid 9:8d47cb713984 1805 /// cmdLine.serial().printf(
whismanoid 9:8d47cb713984 1806 /// "
whismanoid 9:8d47cb713984 1807 /// MOSI <-- 0010_0111_1010_0100 ADC_MODE_CONTROL Scan_0100_StandardExt CHSEL=15 RESET=1 CHANID=1");
whismanoid 10:92aedaa14cce 1808 /// @test tinyTester.print("0010_0111_1010_0100 ADC_MODE_CONTROL Scan_0100_StandardExt")
whismanoid 10:92aedaa14cce 1809 /// @test tinyTester.print(" CHSEL=15 RESET=1 CHANID=1")
whismanoid 9:8d47cb713984 1810 /// g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 9:8d47cb713984 1811 /// g_MAX11131_device.SPIwrite16bits(0x27a4);
whismanoid 9:8d47cb713984 1812 /// g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 10:92aedaa14cce 1813 /// @test SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1814 /// @test SPIwrite16bits(0x27a4)
whismanoid 10:92aedaa14cce 1815 /// @test SPIoutputCS(1)
whismanoid 10:92aedaa14cce 1816 /// //
whismanoid 9:8d47cb713984 1817 /// @future test SPIoutputCS(0)
whismanoid 10:92aedaa14cce 1818 /// @future SPIread16bits() expect 0x0000
whismanoid 10:92aedaa14cce 1819 /// @future SPIread16bits() expect 0x0000 mask 0xF000
whismanoid 10:92aedaa14cce 1820 /// @future test SPIread16bits() expect 0x1000 mask 0xF000
whismanoid 10:92aedaa14cce 1821 /// @future test SPIread16bits() expect 0x2000 mask 0xF000
whismanoid 10:92aedaa14cce 1822 /// @future test SPIread16bits() expect 0x3000 mask 0xF000
whismanoid 10:92aedaa14cce 1823 /// @future test SPIread16bits() expect 0x4000 mask 0xF000
whismanoid 10:92aedaa14cce 1824 /// @future test SPIread16bits() expect 0x5000 mask 0xF000
whismanoid 10:92aedaa14cce 1825 /// @future test SPIread16bits() expect 0x6000 mask 0xF000
whismanoid 10:92aedaa14cce 1826 /// @future test SPIread16bits() expect 0x7000 mask 0xF000
whismanoid 10:92aedaa14cce 1827 /// @future test SPIread16bits() expect 0x8000 mask 0xF000
whismanoid 10:92aedaa14cce 1828 /// @future test SPIread16bits() expect 0x9000 mask 0xF000
whismanoid 10:92aedaa14cce 1829 /// @future test SPIread16bits() expect 0xA000 mask 0xF000
whismanoid 10:92aedaa14cce 1830 /// @future test SPIread16bits() expect 0xB000 mask 0xF000
whismanoid 10:92aedaa14cce 1831 /// @future test SPIread16bits() expect 0xC000 mask 0xF000
whismanoid 10:92aedaa14cce 1832 /// @future test SPIread16bits() expect 0xD000 mask 0xF000
whismanoid 10:92aedaa14cce 1833 /// @future test SPIread16bits() expect 0xE000 mask 0xF000
whismanoid 10:92aedaa14cce 1834 /// @future test SPIread16bits() expect 0xF000 mask 0xF000
whismanoid 9:8d47cb713984 1835 /// @future test SPIoutputCS(1)
whismanoid 9:8d47cb713984 1836 /// //
whismanoid 9:8d47cb713984 1837 /// for (int channelIndex = 0; channelIndex < 16; channelIndex++) {
whismanoid 9:8d47cb713984 1838 /// //~ cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1839 /// MISO --> expect 0000_xxxx_xxxx_xxxx");
whismanoid 9:8d47cb713984 1840 /// g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 9:8d47cb713984 1841 /// g_MAX11131_device.RAW_misoData16[channelIndex] = g_MAX11131_device.SPIread16bits();
whismanoid 9:8d47cb713984 1842 /// g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 9:8d47cb713984 1843 /// int expect_channelId = channelIndex;
whismanoid 9:8d47cb713984 1844 /// int actual_channelId = (g_MAX11131_device.RAW_misoData16[channelIndex] >> 12) & 0x000F;
whismanoid 9:8d47cb713984 1845 /// if (actual_channelId != expect_channelId)
whismanoid 9:8d47cb713984 1846 /// {
whismanoid 9:8d47cb713984 1847 /// tinyTester.FAIL();
whismanoid 9:8d47cb713984 1848 /// cmdLine.serial().printf("MISO --> 0x%4.4x", (g_MAX11131_device.RAW_misoData16[channelIndex] & 0xFFFF));
whismanoid 9:8d47cb713984 1849 /// cmdLine.serial().printf(" expect 0x%1.1xxxx (channel ID %d)", expect_channelId, expect_channelId);
whismanoid 9:8d47cb713984 1850 /// cmdLine.serial().printf(" but got 0x%1.1xxxx", actual_channelId);
whismanoid 9:8d47cb713984 1851 /// }
whismanoid 9:8d47cb713984 1852 /// else
whismanoid 9:8d47cb713984 1853 /// {
whismanoid 9:8d47cb713984 1854 /// tinyTester.PASS();
whismanoid 9:8d47cb713984 1855 /// cmdLine.serial().printf("MISO --> 0x%4.4x", (g_MAX11131_device.RAW_misoData16[channelIndex] & 0xFFFF));
whismanoid 9:8d47cb713984 1856 /// cmdLine.serial().printf(" expect 0x%1.1xxxx (channel ID %d)", expect_channelId, expect_channelId);
whismanoid 9:8d47cb713984 1857 /// }
whismanoid 9:8d47cb713984 1858 /// }
whismanoid 10:92aedaa14cce 1859 /// @future test tinyTester.print("NumWords=16")
whismanoid 10:92aedaa14cce 1860 /// @future test NumWords=16
whismanoid 10:92aedaa14cce 1861 /// @future test tinyTester.print("ReadAINcode()")
whismanoid 10:92aedaa14cce 1862 /// @future test ReadAINcode()
whismanoid 10:92aedaa14cce 1863 /// @future test tinyTester.print("TODO: expect RAW_misoData16[0..15]>>12&0x000F == 0..15 channelId")
whismanoid 10:92aedaa14cce 1864 /// @future test RAW_misoData16[0] expect 0x0000 mask 0xF000
whismanoid 10:92aedaa14cce 1865 /// @future test RAW_misoData16[1] expect 0x1000 mask 0xF000
whismanoid 10:92aedaa14cce 1866 /// @future test RAW_misoData16[2] expect 0x2000 mask 0xF000
whismanoid 10:92aedaa14cce 1867 /// @future test RAW_misoData16[3] expect 0x3000 mask 0xF000
whismanoid 9:8d47cb713984 1868 /// //
whismanoid 9:8d47cb713984 1869 /// // MAX11131 SelfTest: MAX11131 Supports Internal Clock Modes (CNVST, EOC)
whismanoid 9:8d47cb713984 1870 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1871 /// ");
whismanoid 9:8d47cb713984 1872 /// cmdLine.serial().printf(
whismanoid 9:8d47cb713984 1873 /// "
whismanoid 9:8d47cb713984 1874 /// 1.1: Test Scan_0011_StandardInt -- verify Internal Clock signals (CNVST, EOC)");
whismanoid 10:92aedaa14cce 1875 /// @test group TEST11_SCAN_0011 // 1.1: Test Scan_0011_StandardInt -- verify Internal Clock CNVST,EOC (enabled by default)
whismanoid 10:92aedaa14cce 1876 /// @test group TEST11_SCAN_0011 tinyTester.print("1.1: Test Scan_0011_StandardInt -- verify Internal Clock CNVST,EOC")
whismanoid 9:8d47cb713984 1877 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1878 /// MAX11131.Init()");
whismanoid 10:92aedaa14cce 1879 /// @future test tinyTester.print("_______")
whismanoid 10:92aedaa14cce 1880 /// @test group TEST11_SCAN_0011 Init();
whismanoid 10:92aedaa14cce 1881 /// @test group TEST11_SCAN_0011 SPIoutputCS(0); // drive CS low
whismanoid 9:8d47cb713984 1882 /// g_MAX11131_device.RAW_misoData16[0] = g_MAX11131_device.SPIread16bits();
whismanoid 10:92aedaa14cce 1883 /// @test group TEST11_SCAN_0011 group TEST11_SCAN_0011 SPIoutputCS(1); // drive CS high
whismanoid 9:8d47cb713984 1884 /// //
whismanoid 9:8d47cb713984 1885 /// // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_MAX11131_EOC_expect
whismanoid 9:8d47cb713984 1886 /// tinyTester.DigitalIn_Read_Expect_WarnOnly(EOCb_pin, "EOC", 1, "initial value before sending commands");
whismanoid 9:8d47cb713984 1887 /// //
whismanoid 9:8d47cb713984 1888 /// // Send MOSI data Expect MISO data Description
whismanoid 9:8d47cb713984 1889 /// // 1000_0000_0000_0000 xxxx_xxxx_xxxx_xxxx ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0 No Averaging
whismanoid 9:8d47cb713984 1890 /// // 0001_1001_1010_0000 xxxx_xxxx_xxxx_xxxx ADC_MODE_CONTROL Scan_0011_StandardInt CHSEL=3 RESET=1 SWCNV=0
whismanoid 9:8d47cb713984 1891 /// // 0000_0000_0000_0000 0000_xxxx_xxxx_xxxx Channel ID tag = AIN0 expect high nybble 0
whismanoid 9:8d47cb713984 1892 /// // 0000_0000_0000_0000 0001_xxxx_xxxx_xxxx Channel ID tag = AIN1 expect high nybble 1
whismanoid 9:8d47cb713984 1893 /// // 0000_0000_0000_0000 0010_xxxx_xxxx_xxxx Channel ID tag = AIN2 expect high nybble 2
whismanoid 9:8d47cb713984 1894 /// // 0000_0000_0000_0000 0011_xxxx_xxxx_xxxx Channel ID tag = AIN3 expect high nybble 3
whismanoid 9:8d47cb713984 1895 /// //
whismanoid 9:8d47cb713984 1896 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1897 /// MOSI <-- 1000_0000_0000_0000 ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0");
whismanoid 10:92aedaa14cce 1898 /// @test group TEST11_SCAN_0011 tinyTester.print("1000_0000_0000_0000 ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0")
whismanoid 10:92aedaa14cce 1899 /// @test group TEST11_SCAN_0011 SPIoutputCS(0); // drive CS low
whismanoid 10:92aedaa14cce 1900 /// @test group TEST11_SCAN_0011 SPIwrite16bits(0x8000);
whismanoid 10:92aedaa14cce 1901 /// @test group TEST11_SCAN_0011 SPIoutputCS(1); // drive CS high
whismanoid 9:8d47cb713984 1902 /// //
whismanoid 9:8d47cb713984 1903 /// cmdLine.serial().printf(
whismanoid 9:8d47cb713984 1904 /// "
whismanoid 9:8d47cb713984 1905 /// MOSI <-- 0001_1001_1010_0000 ADC_MODE_CONTROL Scan_0011_StandardInt CHSEL=3 RESET=1 SWCNV=0");
whismanoid 10:92aedaa14cce 1906 /// @test group TEST11_SCAN_0011 tinyTester.print("0001_1001_1010_0000 ADC_MODE_CONTROL Scan_0011_StandardInt")
whismanoid 10:92aedaa14cce 1907 /// @test group TEST11_SCAN_0011 tinyTester.print(" CHSEL=3 RESET=1 SWCNV=0")
whismanoid 10:92aedaa14cce 1908 /// @test group TEST11_SCAN_0011 SPIoutputCS(0); // drive CS low
whismanoid 10:92aedaa14cce 1909 /// @test group TEST11_SCAN_0011 SPIwrite16bits(0x19a0);
whismanoid 10:92aedaa14cce 1910 /// @test group TEST11_SCAN_0011 SPIoutputCS(1); // drive CS high
whismanoid 9:8d47cb713984 1911 /// //
whismanoid 9:8d47cb713984 1912 /// for (int channelIndex = 0; channelIndex < 4; channelIndex++) {
whismanoid 9:8d47cb713984 1913 /// //~ cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1914 /// MISO --> expect 0000_xxxx_xxxx_xxxx");
whismanoid 9:8d47cb713984 1915 /// //~ wait_ms(200); // delay
whismanoid 9:8d47cb713984 1916 /// g_MAX11131_device.CNVSToutputPulseLow();
whismanoid 9:8d47cb713984 1917 /// //~ g_MAX11131_device.CNVSToutputValue(0);
whismanoid 9:8d47cb713984 1918 /// //~ wait_ms(100); // delay
whismanoid 9:8d47cb713984 1919 /// //~ g_MAX11131_device.CNVSToutputValue(1);
whismanoid 9:8d47cb713984 1920 /// // g_MAX11131_device.EOCinputWaitUntilLow(); // infinite wait hazard, need to fail if timeout exceeded
whismanoid 9:8d47cb713984 1921 /// // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_MAX11131_EOC_expect
whismanoid 9:8d47cb713984 1922 /// tinyTester.DigitalIn_Read_Expect_WarnOnly(EOCb_pin, "EOC", 0, "after CNVST pulse");
whismanoid 9:8d47cb713984 1923 /// g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 9:8d47cb713984 1924 /// g_MAX11131_device.RAW_misoData16[channelIndex] = g_MAX11131_device.SPIread16bits();
whismanoid 9:8d47cb713984 1925 /// g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 9:8d47cb713984 1926 /// // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_MAX11131_EOC_expect
whismanoid 9:8d47cb713984 1927 /// tinyTester.DigitalIn_Read_Expect_WarnOnly(EOCb_pin, "EOC", 1, "after SPI read");
whismanoid 9:8d47cb713984 1928 /// int expect_channelId = channelIndex;
whismanoid 9:8d47cb713984 1929 /// int actual_channelId = (g_MAX11131_device.RAW_misoData16[channelIndex] >> 12) & 0x000F;
whismanoid 9:8d47cb713984 1930 /// if (actual_channelId != expect_channelId)
whismanoid 9:8d47cb713984 1931 /// {
whismanoid 9:8d47cb713984 1932 /// tinyTester.FAIL();
whismanoid 9:8d47cb713984 1933 /// cmdLine.serial().printf("MISO --> 0x%4.4x", (g_MAX11131_device.RAW_misoData16[channelIndex] & 0xFFFF));
whismanoid 9:8d47cb713984 1934 /// cmdLine.serial().printf(" expect 0x%1.1xxxx (channel ID %d)", expect_channelId, expect_channelId);
whismanoid 9:8d47cb713984 1935 /// cmdLine.serial().printf(" but got 0x%1.1xxxx", actual_channelId);
whismanoid 9:8d47cb713984 1936 /// }
whismanoid 9:8d47cb713984 1937 /// else
whismanoid 9:8d47cb713984 1938 /// {
whismanoid 9:8d47cb713984 1939 /// tinyTester.PASS();
whismanoid 9:8d47cb713984 1940 /// cmdLine.serial().printf("MISO --> 0x%4.4x", (g_MAX11131_device.RAW_misoData16[channelIndex] & 0xFFFF));
whismanoid 9:8d47cb713984 1941 /// cmdLine.serial().printf(" expect 0x%1.1xxxx (channel ID %d)", expect_channelId, expect_channelId);
whismanoid 9:8d47cb713984 1942 /// }
whismanoid 9:8d47cb713984 1943 /// }
whismanoid 9:8d47cb713984 1944 /// //
whismanoid 9:8d47cb713984 1945 /// // MAX11131 SelfTest: Test Fixture: MAX541ACPA+ to MAX32625MBED.AIN0/AIN4
whismanoid 9:8d47cb713984 1946 /// // Test Fixture: MAX541 connected to spi2
whismanoid 9:8d47cb713984 1947 /// // SPI spi2_max541(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi2 TARGET_MAX32635MBED: P2_5 P2_6 P2_4 Arduino 2x3-pin header; microSD
whismanoid 9:8d47cb713984 1948 /// // DigitalOut spi2_max541_cs(SPI2_SS); // TARGET_MAX32635MBED: P2_7 Arduino 2x3-pin header
whismanoid 9:8d47cb713984 1949 /// // Test Fixture: MAX541 spi2 init
whismanoid 9:8d47cb713984 1950 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1951 /// ");
whismanoid 9:8d47cb713984 1952 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1953 /// 2.0: Test Fixture: MAX541 connected to spi2 (P2.4 P2.5 P2.7)?");
whismanoid 10:92aedaa14cce 1954 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 1955 /// bool SelfTest_has_max541 = false;
whismanoid 9:8d47cb713984 1956 /// // Check actual MAX541 reference voltage
whismanoid 9:8d47cb713984 1957 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1958 /// Test Fixture: MAX541 midscale voltage measure with MAX32625MBED AIN0/4");
whismanoid 9:8d47cb713984 1959 /// max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 9:8d47cb713984 1960 /// tinyTester.Wait_Output_Settling(); // wait for MAX541 to settle
whismanoid 9:8d47cb713984 1961 /// //
whismanoid 9:8d47cb713984 1962 /// double max541_midscale_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 9:8d47cb713984 1963 /// const int average_count = 100;
whismanoid 9:8d47cb713984 1964 /// const double average_K = 0.25;
whismanoid 9:8d47cb713984 1965 /// for (int count = 0; count < average_count; count++) {
whismanoid 9:8d47cb713984 1966 /// double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 9:8d47cb713984 1967 /// max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 9:8d47cb713984 1968 /// }
whismanoid 9:8d47cb713984 1969 /// if (max541_midscale_V > 1.0f) {
whismanoid 9:8d47cb713984 1970 /// max541.VRef = 2.0 * max541_midscale_V;
whismanoid 9:8d47cb713984 1971 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 1972 /// Test Fixture: MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 9:8d47cb713984 1973 /// max541_midscale_V, max541.VRef);
whismanoid 9:8d47cb713984 1974 /// // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 9:8d47cb713984 1975 /// voltageV = 1.0f;
whismanoid 9:8d47cb713984 1976 /// SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 1977 /// }
whismanoid 9:8d47cb713984 1978 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 1979 /// voltageV = 0.0f;
whismanoid 9:8d47cb713984 1980 /// SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 1981 /// }
whismanoid 9:8d47cb713984 1982 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 1983 /// voltageV = 2.7f;
whismanoid 9:8d47cb713984 1984 /// SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 1985 /// }
whismanoid 9:8d47cb713984 1986 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 1987 /// voltageV = 1.65f;
whismanoid 9:8d47cb713984 1988 /// SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 1989 /// }
whismanoid 9:8d47cb713984 1990 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 1991 /// voltageV = 2.0f;
whismanoid 9:8d47cb713984 1992 /// SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 1993 /// }
whismanoid 9:8d47cb713984 1994 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 1995 /// voltageV = 0.25f;
whismanoid 9:8d47cb713984 1996 /// SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 1997 /// }
whismanoid 9:8d47cb713984 1998 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 1999 /// voltageV = 0.5f;
whismanoid 9:8d47cb713984 2000 /// SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 2001 /// }
whismanoid 9:8d47cb713984 2002 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 2003 /// voltageV = 1.0f;
whismanoid 9:8d47cb713984 2004 /// SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 2005 /// }
whismanoid 9:8d47cb713984 2006 /// if (SelfTest_has_max541 == false) {
whismanoid 9:8d47cb713984 2007 /// // don't fail just because we're missing the test fixture...
whismanoid 9:8d47cb713984 2008 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2009 /// Test Fixture: MAX541 not present");
whismanoid 9:8d47cb713984 2010 /// //~ g_SelfTest_nFail--;
whismanoid 9:8d47cb713984 2011 /// }
whismanoid 9:8d47cb713984 2012 /// //
whismanoid 9:8d47cb713984 2013 /// // TODO1: MAX11131 SelfTest: if Test Fixture: drive MAX541, compare MAX32625MBED.AIN0/AIN4 and MAX11131 AIN0
whismanoid 9:8d47cb713984 2014 /// // indirectly verify the reference voltage by reading a known input voltage
whismanoid 9:8d47cb713984 2015 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 2016 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2017 /// ");
whismanoid 9:8d47cb713984 2018 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2019 /// 2.1: TODO1: Check MAX11131 reference voltage using Scan_0001_Manual");
whismanoid 10:92aedaa14cce 2020 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2021 /// voltageV = 1.0f;
whismanoid 9:8d47cb713984 2022 /// SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 2023 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2024 /// MAX11131.Init()");
whismanoid 9:8d47cb713984 2025 /// g_MAX11131_device.Init();
whismanoid 9:8d47cb713984 2026 /// // 1 ScanManual ch=0 pm=0 id=1
whismanoid 9:8d47cb713984 2027 /// g_MAX11131_device.channelNumber_0_15 = 0;
whismanoid 9:8d47cb713984 2028 /// g_MAX11131_device.PowerManagement_0_2 = 0;
whismanoid 9:8d47cb713984 2029 /// g_MAX11131_device.chan_id_0_1 = 1;
whismanoid 9:8d47cb713984 2030 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2031 /// MAX11131.channelNumber_0_15=%d", g_MAX11131_device.channelNumber_0_15);
whismanoid 9:8d47cb713984 2032 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2033 /// MAX11131.PowerManagement_0_2=%d", g_MAX11131_device.PowerManagement_0_2);
whismanoid 9:8d47cb713984 2034 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2035 /// MAX11131.chan_id_0_1=%d", g_MAX11131_device.chan_id_0_1);
whismanoid 9:8d47cb713984 2036 /// g_MAX11131_device.NumWords = g_MAX11131_device.ScanManual();
whismanoid 9:8d47cb713984 2037 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2038 /// MAX11131.ScanManual -- NumWords = %d",
whismanoid 9:8d47cb713984 2039 /// g_MAX11131_device.NumWords);
whismanoid 9:8d47cb713984 2040 /// g_MAX11131_device.NumWords = g_MAX11131_device.ScanManual();
whismanoid 9:8d47cb713984 2041 /// g_MAX11131_device.ReadAINcode();
whismanoid 9:8d47cb713984 2042 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2043 /// MAX11131.ReadAINcode");
whismanoid 9:8d47cb713984 2044 /// AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 9:8d47cb713984 2045 /// //
whismanoid 9:8d47cb713984 2046 /// // 2.1: TODO1: Check MAX11131 reference voltage -- why we read 0xffff 2.4999V here?
whismanoid 9:8d47cb713984 2047 /// //
whismanoid 9:8d47cb713984 2048 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2049 /// MAX11131.ScanManual -- NumWords = %d",
whismanoid 9:8d47cb713984 2050 /// g_MAX11131_device.NumWords);
whismanoid 9:8d47cb713984 2051 /// // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 9:8d47cb713984 2052 /// // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 9:8d47cb713984 2053 /// g_MAX11131_device.ReadAINcode();
whismanoid 9:8d47cb713984 2054 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2055 /// MAX11131.ReadAINcode");
whismanoid 9:8d47cb713984 2056 /// AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 9:8d47cb713984 2057 /// //
whismanoid 9:8d47cb713984 2058 /// // 2.1: TODO1: Check MAX11131 reference voltage -- why we read 0xffff 2.4999V here?
whismanoid 9:8d47cb713984 2059 /// //
whismanoid 9:8d47cb713984 2060 /// // compare with mbed/Arduino AIN0-AIN3
whismanoid 9:8d47cb713984 2061 /// // MAX32625MBED.AIN4 = MAX11131.AIN0
whismanoid 9:8d47cb713984 2062 /// channelId = 0;
whismanoid 9:8d47cb713984 2063 /// value_u12 = g_MAX11131_device.AINcode[channelId];
whismanoid 9:8d47cb713984 2064 /// voltageV = g_MAX11131_device.VoltageOfCode(value_u12, channelId);
whismanoid 9:8d47cb713984 2065 /// //
whismanoid 9:8d47cb713984 2066 /// // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 9:8d47cb713984 2067 /// tinyTester.Wait_Output_Settling();
whismanoid 9:8d47cb713984 2068 /// // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 9:8d47cb713984 2069 /// tinyTester.err_threshold = 0.100;
whismanoid 9:8d47cb713984 2070 /// tinyTester.AnalogIn0_Read_Expect_voltageV(voltageV);
whismanoid 9:8d47cb713984 2071 /// //
whismanoid 9:8d47cb713984 2072 /// }
whismanoid 9:8d47cb713984 2073 /// //
whismanoid 9:8d47cb713984 2074 /// if (SelfTest_has_max541) {
whismanoid 9:8d47cb713984 2075 /// voltageV = 1.0f;
whismanoid 9:8d47cb713984 2076 /// SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 9:8d47cb713984 2077 /// }
whismanoid 9:8d47cb713984 2078 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2079 /// ");
whismanoid 9:8d47cb713984 2080 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2081 /// 3.1: Test Scan_0001_Manual");
whismanoid 10:92aedaa14cce 2082 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2083 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2084 /// MAX11131.Init()");
whismanoid 9:8d47cb713984 2085 /// g_MAX11131_device.Init();
whismanoid 9:8d47cb713984 2086 /// // 1 ScanManual ch=0 pm=0 id=1
whismanoid 9:8d47cb713984 2087 /// g_MAX11131_device.channelNumber_0_15 = 0;
whismanoid 9:8d47cb713984 2088 /// g_MAX11131_device.PowerManagement_0_2 = 0;
whismanoid 9:8d47cb713984 2089 /// g_MAX11131_device.chan_id_0_1 = 1;
whismanoid 9:8d47cb713984 2090 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2091 /// MAX11131.channelNumber_0_15=%d", g_MAX11131_device.channelNumber_0_15);
whismanoid 10:92aedaa14cce 2092 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2093 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2094 /// MAX11131.PowerManagement_0_2=%d", g_MAX11131_device.PowerManagement_0_2);
whismanoid 10:92aedaa14cce 2095 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2096 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2097 /// MAX11131.chan_id_0_1=%d", g_MAX11131_device.chan_id_0_1);
whismanoid 10:92aedaa14cce 2098 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2099 /// g_MAX11131_device.NumWords = g_MAX11131_device.ScanManual();
whismanoid 9:8d47cb713984 2100 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2101 /// MAX11131.ScanManual -- NumWords = %d",
whismanoid 9:8d47cb713984 2102 /// g_MAX11131_device.NumWords);
whismanoid 10:92aedaa14cce 2103 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2104 /// // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 9:8d47cb713984 2105 /// // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 9:8d47cb713984 2106 /// g_MAX11131_device.ReadAINcode();
whismanoid 9:8d47cb713984 2107 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2108 /// MAX11131.ReadAINcode");
whismanoid 10:92aedaa14cce 2109 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2110 /// AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 9:8d47cb713984 2111 /// // compare with mbed/Arduino AIN0-AIN3
whismanoid 9:8d47cb713984 2112 /// // MAX32625MBED.AIN4 = MAX11131.AIN0
whismanoid 9:8d47cb713984 2113 /// channelId = 0;
whismanoid 9:8d47cb713984 2114 /// value_u12 = g_MAX11131_device.AINcode[channelId];
whismanoid 9:8d47cb713984 2115 /// voltageV = g_MAX11131_device.VoltageOfCode(value_u12, channelId);
whismanoid 9:8d47cb713984 2116 /// //
whismanoid 9:8d47cb713984 2117 /// // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 9:8d47cb713984 2118 /// tinyTester.Wait_Output_Settling();
whismanoid 9:8d47cb713984 2119 /// // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 9:8d47cb713984 2120 /// tinyTester.err_threshold = 0.100;
whismanoid 9:8d47cb713984 2121 /// tinyTester.AnalogIn0_Read_Expect_voltageV(voltageV);
whismanoid 9:8d47cb713984 2122 /// //
whismanoid 9:8d47cb713984 2123 /// //
whismanoid 9:8d47cb713984 2124 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2125 /// ");
whismanoid 9:8d47cb713984 2126 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2127 /// 3.4: Test Scan_0100_StandardExternalClock");
whismanoid 10:92aedaa14cce 2128 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2129 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2130 /// MAX11131.Init()");
whismanoid 9:8d47cb713984 2131 /// g_MAX11131_device.Init();
whismanoid 9:8d47cb713984 2132 /// // MAX11131 > 4
whismanoid 9:8d47cb713984 2133 /// // ScanStandardExternalClock ch=9 pm=0 id=1
whismanoid 9:8d47cb713984 2134 /// // ScanRead_nWords_chanID nWords=10
whismanoid 9:8d47cb713984 2135 /// // ch=0 xu=2964 = 0x0b94 = 1.8091V
whismanoid 9:8d47cb713984 2136 /// // ch=1 xu=2227 = 0x08b3 = 1.3593V
whismanoid 9:8d47cb713984 2137 /// // ch=2 xu=1570 = 0x0622 = 0.9583V
whismanoid 9:8d47cb713984 2138 /// // ch=3 xu=865 = 0x0361 = 0.5280V
whismanoid 9:8d47cb713984 2139 /// // ch=4 xu=630 = 0x0276 = 0.3845V
whismanoid 9:8d47cb713984 2140 /// // ch=5 xu=594 = 0x0252 = 0.3625V
whismanoid 9:8d47cb713984 2141 /// // ch=6 xu=461 = 0x01cd = 0.2814V
whismanoid 9:8d47cb713984 2142 /// // ch=7 xu=364 = 0x016c = 0.2222V
whismanoid 9:8d47cb713984 2143 /// // ch=8 xu=480 = 0x01e0 = 0.2930V
whismanoid 9:8d47cb713984 2144 /// // ch=9 xu=616 = 0x0268 = 0.3760V
whismanoid 9:8d47cb713984 2145 /// g_MAX11131_device.channelNumber_0_15 = 9;
whismanoid 9:8d47cb713984 2146 /// g_MAX11131_device.PowerManagement_0_2 = 0;
whismanoid 9:8d47cb713984 2147 /// g_MAX11131_device.chan_id_0_1 = 1;
whismanoid 9:8d47cb713984 2148 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2149 /// MAX11131.channelNumber_0_15=%d", g_MAX11131_device.channelNumber_0_15);
whismanoid 10:92aedaa14cce 2150 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2151 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2152 /// MAX11131.PowerManagement_0_2=%d", g_MAX11131_device.PowerManagement_0_2);
whismanoid 10:92aedaa14cce 2153 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2154 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2155 /// MAX11131.chan_id_0_1=%d", g_MAX11131_device.chan_id_0_1);
whismanoid 10:92aedaa14cce 2156 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2157 /// g_MAX11131_device.NumWords = g_MAX11131_device.ScanStandardExternalClock();
whismanoid 9:8d47cb713984 2158 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2159 /// MAX11131.ScanStandardExternalClock -- NumWords = %d",
whismanoid 9:8d47cb713984 2160 /// g_MAX11131_device.NumWords);
whismanoid 10:92aedaa14cce 2161 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2162 /// // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 9:8d47cb713984 2163 /// // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 9:8d47cb713984 2164 /// g_MAX11131_device.ReadAINcode();
whismanoid 9:8d47cb713984 2165 /// cmdLine.serial().printf("
whismanoid 9:8d47cb713984 2166 /// MAX11131.ReadAINcode");
whismanoid 10:92aedaa14cce 2167 /// @future test tinyTester.print("_______")
whismanoid 9:8d47cb713984 2168 /// // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 9:8d47cb713984 2169 /// // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 9:8d47cb713984 2170 /// // expect g_MAX11131_device.NumWords == g_MAX11131_device.channelNumber_0_15 + 1;
whismanoid 9:8d47cb713984 2171 /// // expect RAW_misoData16[index] msnybble 0,1,2,3,...
whismanoid 9:8d47cb713984 2172 /// AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 9:8d47cb713984 2173 /// // compare with mbed/Arduino AIN0-AIN3
whismanoid 9:8d47cb713984 2174 /// // MAX32625MBED.AIN4 = MAX11131.AIN0
whismanoid 9:8d47cb713984 2175 /// channelId = 0;
whismanoid 9:8d47cb713984 2176 /// value_u12 = g_MAX11131_device.AINcode[channelId];
whismanoid 9:8d47cb713984 2177 /// voltageV = g_MAX11131_device.VoltageOfCode(value_u12, channelId);
whismanoid 9:8d47cb713984 2178 /// // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 9:8d47cb713984 2179 /// tinyTester.Wait_Output_Settling();
whismanoid 9:8d47cb713984 2180 /// // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 9:8d47cb713984 2181 /// tinyTester.err_threshold = 0.100;
whismanoid 9:8d47cb713984 2182 /// tinyTester.AnalogIn0_Read_Expect_voltageV(voltageV);
whismanoid 9:8d47cb713984 2183 /// // compare MAX32625MBED.AIN5 = MAX11131.AIN1
whismanoid 9:8d47cb713984 2184 /// //channelId = 1;
whismanoid 9:8d47cb713984 2185 /// //value_u12 = g_MAX11131_device.AINcode[channelId];
whismanoid 9:8d47cb713984 2186 /// //voltageV = g_MAX11131_device.VoltageOfCode(value_u12, channelId);
whismanoid 9:8d47cb713984 2187 /// //SelfTest_AnalogInput_Expect_ch_V(cmdLine, 5, voltageV, 0.100);
whismanoid 9:8d47cb713984 2188 ///
whismanoid 9:8d47cb713984 2189 ///
whismanoid 9:8d47cb713984 2190 ///
whismanoid 0:f7d706d2904d 2191 void Init(void);
whismanoid 0:f7d706d2904d 2192
whismanoid 0:f7d706d2904d 2193 //----------------------------------------
whismanoid 6:cb7bdeb185d0 2194 /// Menu item 'IS'
whismanoid 0:f7d706d2904d 2195 /// ADC Channels AIN(channelId), AIN(channelId+1) = Both Single-Ended, Unipolar
whismanoid 0:f7d706d2904d 2196 /// Full Scale = VREF
whismanoid 0:f7d706d2904d 2197 /// Voltage per LSB count = VREF/4096
whismanoid 0:f7d706d2904d 2198 /// AIN(channelId) is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 2199 /// AIN(channelId+1) is a Single-Ended input using Unipolar transfer function.
whismanoid 0:f7d706d2904d 2200 /// If PDIFF_COM_1, both are Pseudo-Differential with REF- as common.
whismanoid 0:f7d706d2904d 2201 /// AIN(channelId) voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 2202 /// AIN(channelId+1) voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 2203 ///
whismanoid 6:cb7bdeb185d0 2204 void Reconfigure_SingleEnded(int channel_0_15);
whismanoid 0:f7d706d2904d 2205
whismanoid 0:f7d706d2904d 2206 //----------------------------------------
whismanoid 6:cb7bdeb185d0 2207 /// Menu item 'IU'
whismanoid 0:f7d706d2904d 2208 /// ADC Channels AIN(channelId), AIN(channelId+1) = Differential Unipolar (AIN(channelId) > AIN(channelId+1))
whismanoid 0:f7d706d2904d 2209 /// Full Scale = VREF
whismanoid 0:f7d706d2904d 2210 /// Voltage per LSB count = VREF/4096
whismanoid 0:f7d706d2904d 2211 /// AIN(channelId), AIN(channelId+1) are a Differential pair using Unipolar transfer function.
whismanoid 0:f7d706d2904d 2212 /// AIN(channelId) voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 2213 /// AIN(channelId+1) voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 2214 ///
whismanoid 6:cb7bdeb185d0 2215 void Reconfigure_DifferentialUnipolar(int channel_0_15);
whismanoid 0:f7d706d2904d 2216
whismanoid 0:f7d706d2904d 2217 //----------------------------------------
whismanoid 6:cb7bdeb185d0 2218 /// Menu item 'IB'
whismanoid 0:f7d706d2904d 2219 /// ADC Channels AIN(channelId), AIN(channelId+1) = Differential Bipolar
whismanoid 0:f7d706d2904d 2220 /// Full Scale = VREF
whismanoid 0:f7d706d2904d 2221 /// Voltage per LSB count = VREF/4096
whismanoid 4:8a0ae95546fa 2222 /// AIN(channelId), AIN(channelId+1) are a Differential pair using Bipolar transfer function with range (+/-)(1/2)Vref
whismanoid 0:f7d706d2904d 2223 /// AIN(channelId) voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 2224 /// AIN(channelId+1) voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 2225 ///
whismanoid 6:cb7bdeb185d0 2226 void Reconfigure_DifferentialBipolarFSVref(int channel_0_15);
whismanoid 0:f7d706d2904d 2227
whismanoid 0:f7d706d2904d 2228 //----------------------------------------
whismanoid 6:cb7bdeb185d0 2229 /// Menu item 'IR'
whismanoid 0:f7d706d2904d 2230 /// ADC Channels AIN(channelId), AIN(channelId+1) = Differential Bipolar
whismanoid 0:f7d706d2904d 2231 /// Full Scale = 2 * VREF
whismanoid 0:f7d706d2904d 2232 /// Voltage per LSB count = VREF/2048
whismanoid 4:8a0ae95546fa 2233 /// AIN(channelId), AIN(channelId+1) are a Differential pair using Bipolar transfer function with range (+/-)Vref
whismanoid 0:f7d706d2904d 2234 /// AIN(channelId) voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 2235 /// AIN(channelId+1) voltage must always be between 0 and VREF.
whismanoid 0:f7d706d2904d 2236 ///
whismanoid 6:cb7bdeb185d0 2237 void Reconfigure_DifferentialBipolarFS2Vref(int channel_0_15);
whismanoid 0:f7d706d2904d 2238
whismanoid 0:f7d706d2904d 2239 //----------------------------------------
whismanoid 0:f7d706d2904d 2240 /// SCAN_0000_NOP
whismanoid 0:f7d706d2904d 2241 ///
whismanoid 0:f7d706d2904d 2242 /// Shift 16 bits out of ADC, without changing configuration.
whismanoid 0:f7d706d2904d 2243 /// Note: @return data format depends on CHAN_ID bit:
whismanoid 0:f7d706d2904d 2244 /// "CH[3:0] DATA[11:0]" when CHAN_ID = 1, or
whismanoid 0:f7d706d2904d 2245 /// "0 DATA[11:0] x x x" when CHAN_ID = 0.
whismanoid 0:f7d706d2904d 2246 int16_t ScanRead(void);
whismanoid 0:f7d706d2904d 2247
whismanoid 0:f7d706d2904d 2248 //----------------------------------------
whismanoid 0:f7d706d2904d 2249 /// SCAN_0000_NOP
whismanoid 0:f7d706d2904d 2250 ///
whismanoid 0:f7d706d2904d 2251 /// Read raw ADC codes from device into AINcode[] and RAW_misoData16[].
whismanoid 0:f7d706d2904d 2252 /// If internal clock mode with SWCNV=0, measurements will be triggered using CNVST pin.
whismanoid 0:f7d706d2904d 2253 ///
whismanoid 0:f7d706d2904d 2254 /// @pre one of the Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 6:cb7bdeb185d0 2255 /// @param[in] g_MAX11131_device.NumWords: number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2256 /// @post g_MAX11131_device.RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:f7d706d2904d 2257 /// @post g_MAX11131_device.AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:f7d706d2904d 2258 ///
whismanoid 0:f7d706d2904d 2259 void ReadAINcode(void);
whismanoid 0:f7d706d2904d 2260
whismanoid 0:f7d706d2904d 2261 //----------------------------------------
whismanoid 0:f7d706d2904d 2262 /// Sign-Extend a right-aligned MAX11131 code into a signed 2's complement value.
whismanoid 0:f7d706d2904d 2263 /// Supports the bipolar transfer functions.
whismanoid 0:f7d706d2904d 2264 /// @param[in] value_u12: raw 12-bit MAX11131 code (right justified).
whismanoid 0:f7d706d2904d 2265 /// @return sign-extended 2's complement value.
whismanoid 0:f7d706d2904d 2266 ///
whismanoid 0:f7d706d2904d 2267 int32_t TwosComplementValue(uint32_t regValue);
whismanoid 0:f7d706d2904d 2268
whismanoid 0:f7d706d2904d 2269 //----------------------------------------
whismanoid 0:f7d706d2904d 2270 /// Return the physical voltage corresponding to MAX11131 code.
whismanoid 0:f7d706d2904d 2271 /// Does not perform any offset or gain correction.
whismanoid 0:f7d706d2904d 2272 /// @pre g_MAX11131_device.VRef = Voltage of REF input, in Volts
whismanoid 0:f7d706d2904d 2273 /// @param[in] value_u12: raw 12-bit MAX11131 code (right justified).
whismanoid 0:f7d706d2904d 2274 /// @param[in] channelId: AIN channel number.
whismanoid 0:f7d706d2904d 2275 /// @return physical voltage corresponding to MAX11131 code.
whismanoid 0:f7d706d2904d 2276 ///
whismanoid 0:f7d706d2904d 2277 double VoltageOfCode(int16_t value_u12, int channelId);
whismanoid 0:f7d706d2904d 2278
whismanoid 0:f7d706d2904d 2279 //----------------------------------------
whismanoid 0:f7d706d2904d 2280 /// SCAN_0001_Manual
whismanoid 0:f7d706d2904d 2281 ///
whismanoid 0:f7d706d2904d 2282 /// Measure ADC channel channelNumber_0_15 once.
whismanoid 0:f7d706d2904d 2283 /// External clock mode.
whismanoid 0:f7d706d2904d 2284 /// @param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number
whismanoid 0:f7d706d2904d 2285 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2286 /// @param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 0:f7d706d2904d 2287 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2288 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2289 /// For external clock modes, the data format depends on CHAN_ID.
whismanoid 0:f7d706d2904d 2290 /// when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x
whismanoid 0:f7d706d2904d 2291 /// when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2292 ///
whismanoid 0:f7d706d2904d 2293 int ScanManual(void);
whismanoid 0:f7d706d2904d 2294
whismanoid 0:f7d706d2904d 2295 //----------------------------------------
whismanoid 0:f7d706d2904d 2296 /// SCAN_0010_Repeat
whismanoid 0:f7d706d2904d 2297 ///
whismanoid 0:f7d706d2904d 2298 /// Measure ADC channel channelNumber_0_15 repeatedly with averaging.
whismanoid 0:f7d706d2904d 2299 /// Internal clock mode.
whismanoid 0:f7d706d2904d 2300 /// @param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number
whismanoid 0:f7d706d2904d 2301 /// @param[in] g_MAX11131_device.average_0_4_8_16_32: Number of samples averaged per ScanRead() word.
whismanoid 0:f7d706d2904d 2302 /// average_0_4_8_16_32=0 to disable averaging.
whismanoid 0:f7d706d2904d 2303 /// @param[in] g_MAX11131_device.nscan_4_8_12_16: Number of ScanRead() words to report.
whismanoid 0:f7d706d2904d 2304 /// @param[in] g_MAX11131_device.swcnv_0_1: ADC_MODE_CONTROL.SWCNV
whismanoid 0:f7d706d2904d 2305 /// SWCNV=0: trigger measurement by driving CNVST pin low.
whismanoid 0:f7d706d2904d 2306 /// Minimum active-low pulse duration of 5ns. (AIN14 is not available)
whismanoid 0:f7d706d2904d 2307 /// SWCNV=1: trigger measurement on SPI CS rising edge.
whismanoid 0:f7d706d2904d 2308 /// CS must be held low for minimum of 17 SCLK cycles.
whismanoid 0:f7d706d2904d 2309 /// CNVST pin is not used. (AIN14 is available)
whismanoid 0:f7d706d2904d 2310 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2311 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2312 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2313 /// For internal clock modes, the data format always includes the channel address.
whismanoid 0:f7d706d2904d 2314 /// misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2315 ///
whismanoid 0:f7d706d2904d 2316 int ScanRepeat(void);
whismanoid 0:f7d706d2904d 2317
whismanoid 0:f7d706d2904d 2318 //----------------------------------------
whismanoid 0:f7d706d2904d 2319 /// SCAN_0011_StandardInternalClock
whismanoid 0:f7d706d2904d 2320 ///
whismanoid 0:f7d706d2904d 2321 /// Measure ADC channels in sequence from AIN0 to channelNumber_0_15.
whismanoid 0:f7d706d2904d 2322 /// Internal clock mode.
whismanoid 0:f7d706d2904d 2323 /// @param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number
whismanoid 0:f7d706d2904d 2324 /// @param[in] g_MAX11131_device.average_0_4_8_16_32: Number of samples averaged per ScanRead() word.
whismanoid 0:f7d706d2904d 2325 /// average_0_4_8_16_32=0 to disable averaging.
whismanoid 0:f7d706d2904d 2326 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2327 /// @param[in] g_MAX11131_device.swcnv_0_1: ADC_MODE_CONTROL.SWCNV
whismanoid 0:f7d706d2904d 2328 /// SWCNV=0: trigger measurement by driving CNVST pin low.
whismanoid 0:f7d706d2904d 2329 /// Minimum active-low pulse duration of 5ns. (AIN14 is not available)
whismanoid 0:f7d706d2904d 2330 /// SWCNV=1: trigger measurement on SPI CS rising edge.
whismanoid 0:f7d706d2904d 2331 /// CS must be held low for minimum of 17 SCLK cycles.
whismanoid 0:f7d706d2904d 2332 /// CNVST pin is not used. (AIN14 is available)
whismanoid 0:f7d706d2904d 2333 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2334 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2335 /// For internal clock modes, the data format always includes the channel address.
whismanoid 0:f7d706d2904d 2336 /// misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2337 ///
whismanoid 0:f7d706d2904d 2338 int ScanStandardInternalClock(void);
whismanoid 0:f7d706d2904d 2339
whismanoid 0:f7d706d2904d 2340 //----------------------------------------
whismanoid 0:f7d706d2904d 2341 /// SCAN_0100_StandardExternalClock
whismanoid 0:f7d706d2904d 2342 ///
whismanoid 0:f7d706d2904d 2343 /// Measure ADC channels in sequence from AIN0 to channelNumber_0_15.
whismanoid 0:f7d706d2904d 2344 /// External clock mode.
whismanoid 0:f7d706d2904d 2345 /// @param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number
whismanoid 0:f7d706d2904d 2346 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2347 /// @param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 0:f7d706d2904d 2348 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2349 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2350 /// For external clock modes, the data format depends on CHAN_ID.
whismanoid 0:f7d706d2904d 2351 /// when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x
whismanoid 0:f7d706d2904d 2352 /// when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2353 ///
whismanoid 0:f7d706d2904d 2354 int ScanStandardExternalClock(void);
whismanoid 0:f7d706d2904d 2355
whismanoid 0:f7d706d2904d 2356 //----------------------------------------
whismanoid 0:f7d706d2904d 2357 /// SCAN_0101_UpperInternalClock
whismanoid 0:f7d706d2904d 2358 ///
whismanoid 0:f7d706d2904d 2359 /// Measure ADC channels in sequence from channelNumber_0_15 to AIN15.
whismanoid 0:f7d706d2904d 2360 /// Internal clock mode.
whismanoid 0:f7d706d2904d 2361 /// @param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number
whismanoid 0:f7d706d2904d 2362 /// @param[in] g_MAX11131_device.average_0_4_8_16_32: Number of samples averaged per ScanRead() word.
whismanoid 0:f7d706d2904d 2363 /// average_0_4_8_16_32=0 to disable averaging.
whismanoid 0:f7d706d2904d 2364 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2365 /// @param[in] g_MAX11131_device.swcnv_0_1: ADC_MODE_CONTROL.SWCNV
whismanoid 0:f7d706d2904d 2366 /// SWCNV=0: trigger measurement by driving CNVST pin low.
whismanoid 0:f7d706d2904d 2367 /// Minimum active-low pulse duration of 5ns. (AIN14 is not available)
whismanoid 0:f7d706d2904d 2368 /// SWCNV=1: trigger measurement on SPI CS rising edge.
whismanoid 0:f7d706d2904d 2369 /// CS must be held low for minimum of 17 SCLK cycles.
whismanoid 0:f7d706d2904d 2370 /// CNVST pin is not used. (AIN14 is available)
whismanoid 0:f7d706d2904d 2371 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2372 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2373 /// For internal clock modes, the data format always includes the channel address.
whismanoid 0:f7d706d2904d 2374 /// misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2375 ///
whismanoid 0:f7d706d2904d 2376 int ScanUpperInternalClock(void);
whismanoid 0:f7d706d2904d 2377
whismanoid 0:f7d706d2904d 2378 //----------------------------------------
whismanoid 0:f7d706d2904d 2379 /// SCAN_0110_UpperExternalClock
whismanoid 0:f7d706d2904d 2380 ///
whismanoid 0:f7d706d2904d 2381 /// Measure ADC channels in sequence from channelNumber_0_15 to AIN15.
whismanoid 0:f7d706d2904d 2382 /// External clock mode.
whismanoid 0:f7d706d2904d 2383 /// @param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number
whismanoid 0:f7d706d2904d 2384 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2385 /// @param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 0:f7d706d2904d 2386 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2387 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2388 /// For external clock modes, the data format depends on CHAN_ID.
whismanoid 0:f7d706d2904d 2389 /// when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x
whismanoid 0:f7d706d2904d 2390 /// when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2391 ///
whismanoid 0:f7d706d2904d 2392 int ScanUpperExternalClock(void);
whismanoid 0:f7d706d2904d 2393
whismanoid 0:f7d706d2904d 2394 //----------------------------------------
whismanoid 0:f7d706d2904d 2395 /// SCAN_0111_CustomInternalClock
whismanoid 0:f7d706d2904d 2396 ///
whismanoid 0:f7d706d2904d 2397 /// Measure selected ADC channels in sequence from AIN0 to AIN15,
whismanoid 0:f7d706d2904d 2398 /// using only the channels enabled by enabledChannelsMask.
whismanoid 0:f7d706d2904d 2399 /// Bit 0x0001 enables AIN0.
whismanoid 0:f7d706d2904d 2400 /// Bit 0x0002 enables AIN1.
whismanoid 0:f7d706d2904d 2401 /// Bit 0x0004 enables AIN2.
whismanoid 0:f7d706d2904d 2402 /// Bit 0x0008 enables AIN3.
whismanoid 0:f7d706d2904d 2403 /// Bit 0x0010 enables AIN4.
whismanoid 0:f7d706d2904d 2404 /// Bit 0x0020 enables AIN5.
whismanoid 0:f7d706d2904d 2405 /// Bit 0x0040 enables AIN6.
whismanoid 0:f7d706d2904d 2406 /// Bit 0x0080 enables AIN7.
whismanoid 0:f7d706d2904d 2407 /// Bit 0x0100 enables AIN8.
whismanoid 0:f7d706d2904d 2408 /// Bit 0x0200 enables AIN9.
whismanoid 0:f7d706d2904d 2409 /// Bit 0x0400 enables AIN10.
whismanoid 0:f7d706d2904d 2410 /// Bit 0x0800 enables AIN11.
whismanoid 0:f7d706d2904d 2411 /// Bit 0x1000 enables AIN12.
whismanoid 0:f7d706d2904d 2412 /// Bit 0x2000 enables AIN13.
whismanoid 0:f7d706d2904d 2413 /// Bit 0x4000 enables AIN14.
whismanoid 0:f7d706d2904d 2414 /// Bit 0x8000 enables AIN15.
whismanoid 0:f7d706d2904d 2415 /// Internal clock mode.
whismanoid 0:f7d706d2904d 2416 /// @param[in] g_MAX11131_device.enabledChannelsMask: Bitmap of AIN Channels to scan.
whismanoid 0:f7d706d2904d 2417 /// @param[in] g_MAX11131_device.average_0_4_8_16_32: Number of samples averaged per ScanRead() word.
whismanoid 0:f7d706d2904d 2418 /// average_0_4_8_16_32=0 to disable averaging.
whismanoid 0:f7d706d2904d 2419 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2420 /// @param[in] g_MAX11131_device.swcnv_0_1: ADC_MODE_CONTROL.SWCNV
whismanoid 0:f7d706d2904d 2421 /// SWCNV=0: trigger measurement by driving CNVST pin low.
whismanoid 0:f7d706d2904d 2422 /// Minimum active-low pulse duration of 5ns. (AIN14 is not available)
whismanoid 0:f7d706d2904d 2423 /// SWCNV=1: trigger measurement on SPI CS rising edge.
whismanoid 0:f7d706d2904d 2424 /// CS must be held low for minimum of 17 SCLK cycles.
whismanoid 0:f7d706d2904d 2425 /// CNVST pin is not used. (AIN14 is available)
whismanoid 0:f7d706d2904d 2426 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2427 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2428 /// For internal clock modes, the data format always includes the channel address.
whismanoid 0:f7d706d2904d 2429 /// misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2430 ///
whismanoid 0:f7d706d2904d 2431 int ScanCustomInternalClock(void);
whismanoid 0:f7d706d2904d 2432
whismanoid 0:f7d706d2904d 2433 //----------------------------------------
whismanoid 0:f7d706d2904d 2434 /// SCAN_1000_CustomExternalClock
whismanoid 0:f7d706d2904d 2435 ///
whismanoid 0:f7d706d2904d 2436 /// Measure selected ADC channels in sequence from AIN0 to AIN15,
whismanoid 0:f7d706d2904d 2437 /// using only the channels enabled by enabledChannelsMask.
whismanoid 0:f7d706d2904d 2438 /// Bit 0x0001 enables AIN0.
whismanoid 0:f7d706d2904d 2439 /// Bit 0x0002 enables AIN1.
whismanoid 0:f7d706d2904d 2440 /// Bit 0x0004 enables AIN2.
whismanoid 0:f7d706d2904d 2441 /// Bit 0x0008 enables AIN3.
whismanoid 0:f7d706d2904d 2442 /// Bit 0x0010 enables AIN4.
whismanoid 0:f7d706d2904d 2443 /// Bit 0x0020 enables AIN5.
whismanoid 0:f7d706d2904d 2444 /// Bit 0x0040 enables AIN6.
whismanoid 0:f7d706d2904d 2445 /// Bit 0x0080 enables AIN7.
whismanoid 0:f7d706d2904d 2446 /// Bit 0x0100 enables AIN8.
whismanoid 0:f7d706d2904d 2447 /// Bit 0x0200 enables AIN9.
whismanoid 0:f7d706d2904d 2448 /// Bit 0x0400 enables AIN10.
whismanoid 0:f7d706d2904d 2449 /// Bit 0x0800 enables AIN11.
whismanoid 0:f7d706d2904d 2450 /// Bit 0x1000 enables AIN12.
whismanoid 0:f7d706d2904d 2451 /// Bit 0x2000 enables AIN13.
whismanoid 0:f7d706d2904d 2452 /// Bit 0x4000 enables AIN14.
whismanoid 0:f7d706d2904d 2453 /// Bit 0x8000 enables AIN15.
whismanoid 0:f7d706d2904d 2454 /// External clock mode.
whismanoid 0:f7d706d2904d 2455 /// @param[in] g_MAX11131_device.enabledChannelsMask: Bitmap of AIN Channels to scan.
whismanoid 0:f7d706d2904d 2456 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2457 /// @param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 0:f7d706d2904d 2458 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2459 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2460 /// For external clock modes, the data format depends on CHAN_ID.
whismanoid 0:f7d706d2904d 2461 /// when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x
whismanoid 0:f7d706d2904d 2462 /// when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2463 ///
whismanoid 0:f7d706d2904d 2464 int ScanCustomExternalClock(void);
whismanoid 0:f7d706d2904d 2465
whismanoid 0:f7d706d2904d 2466 //----------------------------------------
whismanoid 0:f7d706d2904d 2467 /// SCAN_1001_SampleSetExternalClock
whismanoid 0:f7d706d2904d 2468 ///
whismanoid 0:f7d706d2904d 2469 /// Measure ADC channels in an arbitrary pattern.
whismanoid 0:f7d706d2904d 2470 /// Channels can be visited in any order, with repetition allowed.
whismanoid 0:f7d706d2904d 2471 /// External clock mode.
whismanoid 0:f7d706d2904d 2472 /// @pre g_MAX11131_device.enabledChannelsPatternLength_1_256: number of channel selections
whismanoid 0:f7d706d2904d 2473 /// @pre g_MAX11131_device.enabledChannelsPattern: array containing channel selection pattern
whismanoid 0:f7d706d2904d 2474 /// In the array, one channel select per byte.
whismanoid 0:f7d706d2904d 2475 /// In the SPI interface, immediately after SAMPLESET register is written,
whismanoid 0:f7d706d2904d 2476 /// each byte encodes two channelNumber selections.
whismanoid 0:f7d706d2904d 2477 /// The high 4 bits encode the first channelNumber.
whismanoid 0:f7d706d2904d 2478 /// (((enabledChannelsPattern[0]) & 0x0F) << 4) | ((enabledChannelsPattern[1]) & 0x0F)
whismanoid 0:f7d706d2904d 2479 /// If it is an odd number of channels, additional nybbles will be ignored.
whismanoid 0:f7d706d2904d 2480 /// CS will be asserted low during the entire SAMPLESET pattern selection.
whismanoid 6:cb7bdeb185d0 2481 /// @param[in] g_MAX11131_device.enabledChannelsPattern: array of channel select, one channel per byte
whismanoid 0:f7d706d2904d 2482 /// @param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 0:f7d706d2904d 2483 /// @param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 0:f7d706d2904d 2484 /// @return number of ScanRead() words needed to retrieve the data.
whismanoid 6:cb7bdeb185d0 2485 /// @post NumWords = number of words to be read from the FIFO
whismanoid 0:f7d706d2904d 2486 /// For external clock modes, the data format depends on CHAN_ID.
whismanoid 0:f7d706d2904d 2487 /// when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x
whismanoid 0:f7d706d2904d 2488 /// when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:f7d706d2904d 2489 ///
whismanoid 0:f7d706d2904d 2490 int ScanSampleSetExternalClock(void);
whismanoid 0:f7d706d2904d 2491
whismanoid 0:f7d706d2904d 2492 //----------------------------------------
whismanoid 0:f7d706d2904d 2493 /// Example configure and perform some measurements in ScanManual mode.
whismanoid 0:f7d706d2904d 2494 /// @param[out] pd_mean = address for double mean (avearge)
whismanoid 0:f7d706d2904d 2495 /// @param[out] pd_variance = address for double variance (variance)
whismanoid 0:f7d706d2904d 2496 /// @param[out] pd_stddev = address for double stddev (standard deviation)
whismanoid 0:f7d706d2904d 2497 /// @param[out] pd_Sx = address for double Sx (sum of all X)
whismanoid 0:f7d706d2904d 2498 /// @param[out] pd_Sxx = address for double Sxx (sum of squares of each X)
whismanoid 0:f7d706d2904d 2499 void Example_ScanManual(int channelNumber_0_15, int nWords,
whismanoid 0:f7d706d2904d 2500 double* pd_mean, double* pd_variance, double* pd_stddev,
whismanoid 0:f7d706d2904d 2501 double* pd_Sx, double* pd_Sxx);
whismanoid 0:f7d706d2904d 2502
whismanoid 0:f7d706d2904d 2503 }; // end of class MAX11131
whismanoid 0:f7d706d2904d 2504
whismanoid 0:f7d706d2904d 2505 #endif // __MAX11131_H__
whismanoid 0:f7d706d2904d 2506
whismanoid 0:f7d706d2904d 2507 // End of file