MAX11410 high speed 24-bit Delta-Sigma ADC

Dependents:   MAX11410BOB_24bit_ADC MAX11410BOB_Serial_Tester

Committer:
whismanoid
Date:
Wed Dec 18 23:37:13 2019 +0000
Revision:
0:68e64068330f
Child:
1:d57c1a2cb83c
MAX11410 high speed 24-bit Delta-Sigma ADC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 0:68e64068330f 1 // /*******************************************************************************
whismanoid 0:68e64068330f 2 // * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 0:68e64068330f 3 // *
whismanoid 0:68e64068330f 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 0:68e64068330f 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 0:68e64068330f 6 // * to deal in the Software without restriction, including without limitation
whismanoid 0:68e64068330f 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 0:68e64068330f 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 0:68e64068330f 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 0:68e64068330f 10 // *
whismanoid 0:68e64068330f 11 // * The above copyright notice and this permission notice shall be included
whismanoid 0:68e64068330f 12 // * in all copies or substantial portions of the Software.
whismanoid 0:68e64068330f 13 // *
whismanoid 0:68e64068330f 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 0:68e64068330f 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 0:68e64068330f 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 0:68e64068330f 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 0:68e64068330f 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 0:68e64068330f 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 0:68e64068330f 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 0:68e64068330f 21 // *
whismanoid 0:68e64068330f 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 0:68e64068330f 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 0:68e64068330f 24 // * Products, Inc. Branding Policy.
whismanoid 0:68e64068330f 25 // *
whismanoid 0:68e64068330f 26 // * The mere transfer of this software does not imply any licenses
whismanoid 0:68e64068330f 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 0:68e64068330f 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 0:68e64068330f 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 0:68e64068330f 30 // * ownership rights.
whismanoid 0:68e64068330f 31 // *******************************************************************************
whismanoid 0:68e64068330f 32 // */
whismanoid 0:68e64068330f 33 // *********************************************************************
whismanoid 0:68e64068330f 34 // @file MAX11410.cpp
whismanoid 0:68e64068330f 35 // *********************************************************************
whismanoid 0:68e64068330f 36 // Device Driver file
whismanoid 0:68e64068330f 37 // DO NOT EDIT; except areas designated "CUSTOMIZE". Automatically generated file.
whismanoid 0:68e64068330f 38 // generated by XMLSystemOfDevicesToMBED.py
whismanoid 0:68e64068330f 39 // System Name = ExampleSystem
whismanoid 0:68e64068330f 40 // System Description = Device driver example
whismanoid 0:68e64068330f 41
whismanoid 0:68e64068330f 42 #include "MAX11410.h"
whismanoid 0:68e64068330f 43
whismanoid 0:68e64068330f 44 // Device Name = MAX11410
whismanoid 0:68e64068330f 45 // Device Description = 1.9ksps, Low-Power, Serial SPI 24-Bit, 10-Channel, Differential/Single-Ended Input, SAR ADC
whismanoid 0:68e64068330f 46 // Device DeviceBriefDescription = 24-bit 1.9ksps Delta-Sigma ADC
whismanoid 0:68e64068330f 47 // Device Manufacturer = Maxim Integrated
whismanoid 0:68e64068330f 48 // Device PartNumber = MAX11410ATI+
whismanoid 0:68e64068330f 49 // Device RegValue_Width = DataWidth16bit_HL
whismanoid 0:68e64068330f 50 //
whismanoid 0:68e64068330f 51 // ADC MaxOutputDataRate = 1.9ksps
whismanoid 0:68e64068330f 52 // ADC NumChannels = 10
whismanoid 0:68e64068330f 53 // ADC ResolutionBits = 24
whismanoid 0:68e64068330f 54 //
whismanoid 0:68e64068330f 55 // SPI CS = ActiveLow
whismanoid 0:68e64068330f 56 // SPI FrameStart = CS
whismanoid 0:68e64068330f 57 // SPI CPOL = 0
whismanoid 0:68e64068330f 58 // SPI CPHA = 0
whismanoid 0:68e64068330f 59 // SPI MOSI and MISO Data are both stable on Rising edge of SCLK
whismanoid 0:68e64068330f 60 // SPI SCLK Idle Low
whismanoid 0:68e64068330f 61 // SPI SCLKMaxMHz = 8
whismanoid 0:68e64068330f 62 // SPI SCLKMinMHz = 0
whismanoid 0:68e64068330f 63 //
whismanoid 0:68e64068330f 64
whismanoid 0:68e64068330f 65 // CODE GENERATOR: class constructor definition
whismanoid 0:68e64068330f 66 MAX11410::MAX11410(SPI &spi, DigitalOut &cs_pin, // SPI interface
whismanoid 0:68e64068330f 67 // CODE GENERATOR: class constructor definition gpio InputPin pins
whismanoid 0:68e64068330f 68 // CODE GENERATOR: class constructor definition gpio OutputPin pins
whismanoid 0:68e64068330f 69 // CODE GENERATOR: class constructor definition ic_variant
whismanoid 0:68e64068330f 70 MAX11410_ic_t ic_variant)
whismanoid 0:68e64068330f 71 // CODE GENERATOR: class constructor initializer list
whismanoid 0:68e64068330f 72 : m_spi(spi), m_cs_pin(cs_pin), // SPI interface
whismanoid 0:68e64068330f 73 // CODE GENERATOR: class constructor initializer list gpio InputPin pins
whismanoid 0:68e64068330f 74 // CODE GENERATOR: class constructor initializer list gpio OutputPin pins
whismanoid 0:68e64068330f 75 // CODE GENERATOR: class constructor initializer list ic_variant
whismanoid 0:68e64068330f 76 m_ic_variant(ic_variant)
whismanoid 0:68e64068330f 77 {
whismanoid 0:68e64068330f 78 // CODE GENERATOR: class constructor definition SPI interface initialization
whismanoid 0:68e64068330f 79 //
whismanoid 0:68e64068330f 80 // SPI CS = ActiveLow
whismanoid 0:68e64068330f 81 // SPI FrameStart = CS
whismanoid 0:68e64068330f 82 m_SPI_cs_state = 1;
whismanoid 0:68e64068330f 83 m_cs_pin = m_SPI_cs_state;
whismanoid 0:68e64068330f 84
whismanoid 0:68e64068330f 85 // SPI CPOL = 0
whismanoid 0:68e64068330f 86 // SPI CPHA = 0
whismanoid 0:68e64068330f 87 // SPI MOSI and MISO Data are both stable on Rising edge of SCLK
whismanoid 0:68e64068330f 88 // SPI SCLK Idle Low
whismanoid 0:68e64068330f 89 m_SPI_dataMode = 0; //SPI_MODE0; // CPOL=0,CPHA=0: Rising Edge stable; SCLK idle Low
whismanoid 0:68e64068330f 90 m_spi.format(8,m_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 0:68e64068330f 91
whismanoid 0:68e64068330f 92 // SPI SCLKMaxMHz = 8
whismanoid 0:68e64068330f 93 // SPI SCLKMinMHz = 0
whismanoid 0:68e64068330f 94 //#define SPI_SCLK_Hz 48000000 // 48MHz
whismanoid 0:68e64068330f 95 //#define SPI_SCLK_Hz 24000000 // 24MHz
whismanoid 0:68e64068330f 96 //#define SPI_SCLK_Hz 12000000 // 12MHz
whismanoid 0:68e64068330f 97 //#define SPI_SCLK_Hz 6000000 // 6MHz
whismanoid 0:68e64068330f 98 //#define SPI_SCLK_Hz 4000000 // 4MHz
whismanoid 0:68e64068330f 99 //#define SPI_SCLK_Hz 2000000 // 2MHz
whismanoid 0:68e64068330f 100 //#define SPI_SCLK_Hz 1000000 // 1MHz
whismanoid 0:68e64068330f 101 m_SPI_SCLK_Hz = 8000000; // 8MHz; MAX11410 limit is 8MHz
whismanoid 0:68e64068330f 102 m_spi.frequency(m_SPI_SCLK_Hz);
whismanoid 0:68e64068330f 103
whismanoid 0:68e64068330f 104 }
whismanoid 0:68e64068330f 105
whismanoid 0:68e64068330f 106 // CODE GENERATOR: class destructor definition
whismanoid 0:68e64068330f 107 MAX11410::~MAX11410()
whismanoid 0:68e64068330f 108 {
whismanoid 0:68e64068330f 109 // do nothing
whismanoid 0:68e64068330f 110 }
whismanoid 0:68e64068330f 111
whismanoid 0:68e64068330f 112 // CODE GENERATOR: spi_frequency setter definition
whismanoid 0:68e64068330f 113 /// set SPI SCLK frequency
whismanoid 0:68e64068330f 114 void MAX11410::spi_frequency(int spi_sclk_Hz)
whismanoid 0:68e64068330f 115 {
whismanoid 0:68e64068330f 116 m_SPI_SCLK_Hz = spi_sclk_Hz;
whismanoid 0:68e64068330f 117 m_spi.frequency(m_SPI_SCLK_Hz);
whismanoid 0:68e64068330f 118 }
whismanoid 0:68e64068330f 119
whismanoid 0:68e64068330f 120 // CODE GENERATOR: omit global g_MAX11410_device
whismanoid 0:68e64068330f 121 // CODE GENERATOR: extern function declarations
whismanoid 0:68e64068330f 122 // CODE GENERATOR: extern function requirement MAX11410::SPIoutputCS
whismanoid 0:68e64068330f 123 // Assert SPI Chip Select
whismanoid 0:68e64068330f 124 // SPI chip-select for MAX11410
whismanoid 0:68e64068330f 125 //
whismanoid 0:68e64068330f 126 void MAX11410::SPIoutputCS(int isLogicHigh)
whismanoid 0:68e64068330f 127 {
whismanoid 0:68e64068330f 128 // CODE GENERATOR: extern function definition for function SPIoutputCS
whismanoid 0:68e64068330f 129 // CODE GENERATOR: extern function definition for standard SPI interface function SPIoutputCS(int isLogicHigh)
whismanoid 0:68e64068330f 130 m_SPI_cs_state = isLogicHigh;
whismanoid 0:68e64068330f 131 m_cs_pin = m_SPI_cs_state;
whismanoid 0:68e64068330f 132 }
whismanoid 0:68e64068330f 133
whismanoid 0:68e64068330f 134 // CODE GENERATOR: extern function requirement MAX11410::SPIwrite16bits
whismanoid 0:68e64068330f 135 // SPI write 16 bits
whismanoid 0:68e64068330f 136 // SPI interface to MAX11410 shift 16 bits mosiData into MAX11410 DIN
whismanoid 0:68e64068330f 137 //
whismanoid 0:68e64068330f 138 void MAX11410::SPIwrite16bits(int16_t mosiData16)
whismanoid 0:68e64068330f 139 {
whismanoid 0:68e64068330f 140 // CODE GENERATOR: extern function definition for function SPIwrite16bits
whismanoid 0:68e64068330f 141 // TODO1: CODE GENERATOR: extern function definition for standard SPI interface function SPIwrite16bits(int16_t mosiData16)
whismanoid 0:68e64068330f 142 size_t byteCount = 2;
whismanoid 0:68e64068330f 143 static char mosiData[2];
whismanoid 0:68e64068330f 144 static char misoData[2];
whismanoid 0:68e64068330f 145 mosiData[0] = (char)((mosiData16 >> 8) & 0xFF); // MSByte
whismanoid 0:68e64068330f 146 mosiData[1] = (char)((mosiData16 >> 0) & 0xFF); // LSByte
whismanoid 0:68e64068330f 147 //
whismanoid 0:68e64068330f 148 // Arduino: begin critical section: noInterrupts() masks all interrupt sources; end critical section with interrupts()
whismanoid 0:68e64068330f 149 //~ noInterrupts();
whismanoid 0:68e64068330f 150 //
whismanoid 0:68e64068330f 151 //~ digitalWrite(Scope_Trigger_Pin, LOW); // diagnostic Scope_Trigger_Pin
whismanoid 0:68e64068330f 152 //
whismanoid 0:68e64068330f 153 unsigned int numBytesTransferred = m_spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 0:68e64068330f 154 //~ m_spi.transfer(mosiData8_FF0000);
whismanoid 0:68e64068330f 155 //~ m_spi.transfer(mosiData16_00FF00);
whismanoid 0:68e64068330f 156 //~ m_spi.transfer(mosiData16_0000FF);
whismanoid 0:68e64068330f 157 //
whismanoid 0:68e64068330f 158 //~ digitalWrite(Scope_Trigger_Pin, HIGH); // diagnostic Scope_Trigger_Pin
whismanoid 0:68e64068330f 159 //
whismanoid 0:68e64068330f 160 // Arduino: begin critical section: noInterrupts() masks all interrupt sources; end critical section with interrupts()
whismanoid 0:68e64068330f 161 //~ interrupts();
whismanoid 0:68e64068330f 162 // Optional Diagnostic function to print SPI transactions
whismanoid 0:68e64068330f 163 if (onSPIprint)
whismanoid 0:68e64068330f 164 {
whismanoid 0:68e64068330f 165 onSPIprint(byteCount, (uint8_t*)mosiData, (uint8_t*)misoData);
whismanoid 0:68e64068330f 166 }
whismanoid 0:68e64068330f 167 //
whismanoid 0:68e64068330f 168 // VERIFY: SPIwrite24bits print diagnostic information
whismanoid 0:68e64068330f 169 //cmdLine.serial().printf(" MOSI->"));
whismanoid 0:68e64068330f 170 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 171 //Serial.print( (mosiData8_FF0000 & 0xFF), HEX);
whismanoid 0:68e64068330f 172 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 173 //Serial.print( (mosiData16_00FF00 & 0xFF), HEX);
whismanoid 0:68e64068330f 174 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 175 //Serial.print( (mosiData16_0000FF & 0xFF), HEX);
whismanoid 0:68e64068330f 176 // hex dump mosiData[0..byteCount-1]
whismanoid 0:68e64068330f 177 #if 0 // HAS_MICROUSBSERIAL
whismanoid 0:68e64068330f 178 cmdLine_microUSBserial.serial().printf("\r\nSPI");
whismanoid 0:68e64068330f 179 if (byteCount > 7) {
whismanoid 0:68e64068330f 180 cmdLine_microUSBserial.serial().printf(" byteCount:%d", byteCount);
whismanoid 0:68e64068330f 181 }
whismanoid 0:68e64068330f 182 cmdLine_microUSBserial.serial().printf(" MOSI->");
whismanoid 0:68e64068330f 183 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 0:68e64068330f 184 {
whismanoid 0:68e64068330f 185 cmdLine_microUSBserial.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 0:68e64068330f 186 }
whismanoid 0:68e64068330f 187 // hex dump misoData[0..byteCount-1]
whismanoid 0:68e64068330f 188 cmdLine_microUSBserial.serial().printf(" MISO<-");
whismanoid 0:68e64068330f 189 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred; byteIndex++)
whismanoid 0:68e64068330f 190 {
whismanoid 0:68e64068330f 191 cmdLine_microUSBserial.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 0:68e64068330f 192 }
whismanoid 0:68e64068330f 193 cmdLine_microUSBserial.serial().printf(" ");
whismanoid 0:68e64068330f 194 #endif
whismanoid 0:68e64068330f 195 #if 0 // HAS_DAPLINK_SERIAL
whismanoid 0:68e64068330f 196 cmdLine_DAPLINKserial.serial().printf("\r\nSPI");
whismanoid 0:68e64068330f 197 if (byteCount > 7) {
whismanoid 0:68e64068330f 198 cmdLine_DAPLINKserial.serial().printf(" byteCount:%d", byteCount);
whismanoid 0:68e64068330f 199 }
whismanoid 0:68e64068330f 200 cmdLine_DAPLINKserial.serial().printf(" MOSI->");
whismanoid 0:68e64068330f 201 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 0:68e64068330f 202 {
whismanoid 0:68e64068330f 203 cmdLine_DAPLINKserial.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 0:68e64068330f 204 }
whismanoid 0:68e64068330f 205 // hex dump misoData[0..byteCount-1]
whismanoid 0:68e64068330f 206 cmdLine_DAPLINKserial.serial().printf(" MISO<-");
whismanoid 0:68e64068330f 207 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred; byteIndex++)
whismanoid 0:68e64068330f 208 {
whismanoid 0:68e64068330f 209 cmdLine_DAPLINKserial.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 0:68e64068330f 210 }
whismanoid 0:68e64068330f 211 cmdLine_DAPLINKserial.serial().printf(" ");
whismanoid 0:68e64068330f 212 #endif
whismanoid 0:68e64068330f 213 // VERIFY: DIAGNOSTIC: print MAX5715 device register write
whismanoid 0:68e64068330f 214 // TODO: MAX5715_print_register_verbose(mosiData8_FF0000, mosiData16_00FFFF);
whismanoid 0:68e64068330f 215 // TODO: print_verbose_SPI_diagnostic(mosiData16_FF00, mosiData16_00FF, misoData16_FF00, misoData16_00FF);
whismanoid 0:68e64068330f 216 //
whismanoid 0:68e64068330f 217 // int misoData16 = (misoData16_FF00 << 8) | misoData16_00FF;
whismanoid 0:68e64068330f 218 // return misoData16;
whismanoid 0:68e64068330f 219 }
whismanoid 0:68e64068330f 220
whismanoid 0:68e64068330f 221 // CODE GENERATOR: extern function requirement MAX11410::SPIreadWrite16bits
whismanoid 0:68e64068330f 222 // SPI read and write 16 bits
whismanoid 0:68e64068330f 223 // SPI interface to MAX11410 shift 16 bits mosiData16 into MAX11410 DIN
whismanoid 0:68e64068330f 224 // while simultaneously capturing 16 bits miso data from MAX11410 DOUT
whismanoid 0:68e64068330f 225 //
whismanoid 0:68e64068330f 226 int16_t MAX11410::SPIreadWrite16bits(int16_t mosiData16)
whismanoid 0:68e64068330f 227 {
whismanoid 0:68e64068330f 228 // CODE GENERATOR: extern function definition for function SPIreadWrite16bits
whismanoid 0:68e64068330f 229 // TODO1: CODE GENERATOR: extern function definition for standard SPI interface function SPIreadWrite16bits(int16_t mosiData16)
whismanoid 0:68e64068330f 230 size_t byteCount = 2;
whismanoid 0:68e64068330f 231 static char mosiData[2];
whismanoid 0:68e64068330f 232 static char misoData[2];
whismanoid 0:68e64068330f 233 mosiData[0] = (char)((mosiData16 >> 8) & 0xFF); // MSByte
whismanoid 0:68e64068330f 234 mosiData[1] = (char)((mosiData16 >> 0) & 0xFF); // LSByte
whismanoid 0:68e64068330f 235 //
whismanoid 0:68e64068330f 236 // Arduino: begin critical section: noInterrupts() masks all interrupt sources; end critical section with interrupts()
whismanoid 0:68e64068330f 237 //~ noInterrupts();
whismanoid 0:68e64068330f 238 //
whismanoid 0:68e64068330f 239 //~ digitalWrite(Scope_Trigger_Pin, LOW); // diagnostic Scope_Trigger_Pin
whismanoid 0:68e64068330f 240 //
whismanoid 0:68e64068330f 241 unsigned int numBytesTransferred = m_spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 0:68e64068330f 242 //~ m_spi.transfer(mosiData8_FF0000);
whismanoid 0:68e64068330f 243 //~ m_spi.transfer(mosiData16_00FF00);
whismanoid 0:68e64068330f 244 //~ m_spi.transfer(mosiData16_0000FF);
whismanoid 0:68e64068330f 245 //
whismanoid 0:68e64068330f 246 //~ digitalWrite(Scope_Trigger_Pin, HIGH); // diagnostic Scope_Trigger_Pin
whismanoid 0:68e64068330f 247 //
whismanoid 0:68e64068330f 248 // Arduino: begin critical section: noInterrupts() masks all interrupt sources; end critical section with interrupts()
whismanoid 0:68e64068330f 249 //~ interrupts();
whismanoid 0:68e64068330f 250 // Optional Diagnostic function to print SPI transactions
whismanoid 0:68e64068330f 251 if (onSPIprint)
whismanoid 0:68e64068330f 252 {
whismanoid 0:68e64068330f 253 onSPIprint(byteCount, (uint8_t*)mosiData, (uint8_t*)misoData);
whismanoid 0:68e64068330f 254 }
whismanoid 0:68e64068330f 255 //
whismanoid 0:68e64068330f 256 // VERIFY: SPIwrite24bits print diagnostic information
whismanoid 0:68e64068330f 257 //cmdLine.serial().printf(" MOSI->"));
whismanoid 0:68e64068330f 258 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 259 //Serial.print( (mosiData8_FF0000 & 0xFF), HEX);
whismanoid 0:68e64068330f 260 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 261 //Serial.print( (mosiData16_00FF00 & 0xFF), HEX);
whismanoid 0:68e64068330f 262 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 263 //Serial.print( (mosiData16_0000FF & 0xFF), HEX);
whismanoid 0:68e64068330f 264 // hex dump mosiData[0..byteCount-1]
whismanoid 0:68e64068330f 265 #if 0 // HAS_MICROUSBSERIAL
whismanoid 0:68e64068330f 266 cmdLine_microUSBserial.serial().printf("\r\nSPI");
whismanoid 0:68e64068330f 267 if (byteCount > 7) {
whismanoid 0:68e64068330f 268 cmdLine_microUSBserial.serial().printf(" byteCount:%d", byteCount);
whismanoid 0:68e64068330f 269 }
whismanoid 0:68e64068330f 270 cmdLine_microUSBserial.serial().printf(" MOSI->");
whismanoid 0:68e64068330f 271 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 0:68e64068330f 272 {
whismanoid 0:68e64068330f 273 cmdLine_microUSBserial.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 0:68e64068330f 274 }
whismanoid 0:68e64068330f 275 // hex dump misoData[0..byteCount-1]
whismanoid 0:68e64068330f 276 cmdLine_microUSBserial.serial().printf(" MISO<-");
whismanoid 0:68e64068330f 277 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred; byteIndex++)
whismanoid 0:68e64068330f 278 {
whismanoid 0:68e64068330f 279 cmdLine_microUSBserial.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 0:68e64068330f 280 }
whismanoid 0:68e64068330f 281 cmdLine_microUSBserial.serial().printf(" ");
whismanoid 0:68e64068330f 282 #endif
whismanoid 0:68e64068330f 283 #if 0 // HAS_DAPLINK_SERIAL
whismanoid 0:68e64068330f 284 cmdLine_DAPLINKserial.serial().printf("\r\nSPI");
whismanoid 0:68e64068330f 285 if (byteCount > 7) {
whismanoid 0:68e64068330f 286 cmdLine_DAPLINKserial.serial().printf(" byteCount:%d", byteCount);
whismanoid 0:68e64068330f 287 }
whismanoid 0:68e64068330f 288 cmdLine_DAPLINKserial.serial().printf(" MOSI->");
whismanoid 0:68e64068330f 289 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 0:68e64068330f 290 {
whismanoid 0:68e64068330f 291 cmdLine_DAPLINKserial.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 0:68e64068330f 292 }
whismanoid 0:68e64068330f 293 // hex dump misoData[0..byteCount-1]
whismanoid 0:68e64068330f 294 cmdLine_DAPLINKserial.serial().printf(" MISO<-");
whismanoid 0:68e64068330f 295 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred; byteIndex++)
whismanoid 0:68e64068330f 296 {
whismanoid 0:68e64068330f 297 cmdLine_DAPLINKserial.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 0:68e64068330f 298 }
whismanoid 0:68e64068330f 299 cmdLine_DAPLINKserial.serial().printf(" ");
whismanoid 0:68e64068330f 300 #endif
whismanoid 0:68e64068330f 301 // VERIFY: DIAGNOSTIC: print MAX5715 device register write
whismanoid 0:68e64068330f 302 // TODO: MAX5715_print_register_verbose(mosiData8_FF0000, mosiData16_00FFFF);
whismanoid 0:68e64068330f 303 // TODO: print_verbose_SPI_diagnostic(mosiData16_FF00, mosiData16_00FF, misoData16_FF00, misoData16_00FF);
whismanoid 0:68e64068330f 304 //
whismanoid 0:68e64068330f 305 //int misoData16 = (misoData16_FF00 << 8) | misoData16_00FF;
whismanoid 0:68e64068330f 306 int misoData16 = (misoData[0] << 8) | misoData[1];
whismanoid 0:68e64068330f 307 return misoData16;
whismanoid 0:68e64068330f 308 }
whismanoid 0:68e64068330f 309
whismanoid 0:68e64068330f 310 // CODE GENERATOR: extern function requirement MAX11410::SPIreadWrite32bits
whismanoid 0:68e64068330f 311 // SPI read and write 32 bits
whismanoid 0:68e64068330f 312 // SPI interface to MAX11410 shift 32 bits mosiData into MAX11410 DIN
whismanoid 0:68e64068330f 313 // while simultaneously capturing 32 bits miso data from MAX11410 DOUT
whismanoid 0:68e64068330f 314 //
whismanoid 0:68e64068330f 315 int32_t MAX11410::SPIreadWrite32bits(int32_t mosiData32)
whismanoid 0:68e64068330f 316 {
whismanoid 0:68e64068330f 317 // CODE GENERATOR: extern function definition for function SPIreadWrite32bits
whismanoid 0:68e64068330f 318 // TODO1: CODE GENERATOR: extern function definition for standard SPI interface function SPIreadWrite32bits(int32_t mosiData32)
whismanoid 0:68e64068330f 319 size_t byteCount = 4;
whismanoid 0:68e64068330f 320 static char mosiData[4];
whismanoid 0:68e64068330f 321 static char misoData[4];
whismanoid 0:68e64068330f 322 mosiData[0] = (char)((mosiData32 >> 24) & 0xFF); // MSByte
whismanoid 0:68e64068330f 323 mosiData[1] = (char)((mosiData32 >> 16) & 0xFF);
whismanoid 0:68e64068330f 324 mosiData[2] = (char)((mosiData32 >> 8) & 0xFF);
whismanoid 0:68e64068330f 325 mosiData[3] = (char)((mosiData32 >> 0) & 0xFF); // LSByte
whismanoid 0:68e64068330f 326 //
whismanoid 0:68e64068330f 327 // Arduino: begin critical section: noInterrupts() masks all interrupt sources; end critical section with interrupts()
whismanoid 0:68e64068330f 328 //~ noInterrupts();
whismanoid 0:68e64068330f 329 //
whismanoid 0:68e64068330f 330 //~ digitalWrite(Scope_Trigger_Pin, LOW); // diagnostic Scope_Trigger_Pin
whismanoid 0:68e64068330f 331 //
whismanoid 0:68e64068330f 332 unsigned int numBytesTransferred = m_spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 0:68e64068330f 333 //~ m_spi.transfer(mosiData8_FF0000);
whismanoid 0:68e64068330f 334 //~ m_spi.transfer(mosiData16_00FF00);
whismanoid 0:68e64068330f 335 //~ m_spi.transfer(mosiData16_0000FF);
whismanoid 0:68e64068330f 336 //
whismanoid 0:68e64068330f 337 //~ digitalWrite(Scope_Trigger_Pin, HIGH); // diagnostic Scope_Trigger_Pin
whismanoid 0:68e64068330f 338 //
whismanoid 0:68e64068330f 339 // Arduino: begin critical section: noInterrupts() masks all interrupt sources; end critical section with interrupts()
whismanoid 0:68e64068330f 340 //~ interrupts();
whismanoid 0:68e64068330f 341 // Optional Diagnostic function to print SPI transactions
whismanoid 0:68e64068330f 342 if (onSPIprint)
whismanoid 0:68e64068330f 343 {
whismanoid 0:68e64068330f 344 onSPIprint(byteCount, (uint8_t*)mosiData, (uint8_t*)misoData);
whismanoid 0:68e64068330f 345 }
whismanoid 0:68e64068330f 346 //
whismanoid 0:68e64068330f 347 // VERIFY: SPIwrite24bits print diagnostic information
whismanoid 0:68e64068330f 348 //cmdLine.serial().printf(" MOSI->"));
whismanoid 0:68e64068330f 349 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 350 //Serial.print( (mosiData8_FF0000 & 0xFF), HEX);
whismanoid 0:68e64068330f 351 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 352 //Serial.print( (mosiData16_00FF00 & 0xFF), HEX);
whismanoid 0:68e64068330f 353 //cmdLine.serial().printf(" 0x"));
whismanoid 0:68e64068330f 354 //Serial.print( (mosiData16_0000FF & 0xFF), HEX);
whismanoid 0:68e64068330f 355 // hex dump mosiData[0..byteCount-1]
whismanoid 0:68e64068330f 356 #if 0 // HAS_MICROUSBSERIAL
whismanoid 0:68e64068330f 357 cmdLine_microUSBserial.serial().printf("\r\nSPI");
whismanoid 0:68e64068330f 358 if (byteCount > 7) {
whismanoid 0:68e64068330f 359 cmdLine_microUSBserial.serial().printf(" byteCount:%d", byteCount);
whismanoid 0:68e64068330f 360 }
whismanoid 0:68e64068330f 361 cmdLine_microUSBserial.serial().printf(" MOSI->");
whismanoid 0:68e64068330f 362 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 0:68e64068330f 363 {
whismanoid 0:68e64068330f 364 cmdLine_microUSBserial.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 0:68e64068330f 365 }
whismanoid 0:68e64068330f 366 // hex dump misoData[0..byteCount-1]
whismanoid 0:68e64068330f 367 cmdLine_microUSBserial.serial().printf(" MISO<-");
whismanoid 0:68e64068330f 368 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred; byteIndex++)
whismanoid 0:68e64068330f 369 {
whismanoid 0:68e64068330f 370 cmdLine_microUSBserial.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 0:68e64068330f 371 }
whismanoid 0:68e64068330f 372 cmdLine_microUSBserial.serial().printf(" ");
whismanoid 0:68e64068330f 373 #endif
whismanoid 0:68e64068330f 374 #if 0 // HAS_DAPLINK_SERIAL
whismanoid 0:68e64068330f 375 cmdLine_DAPLINKserial.serial().printf("\r\nSPI");
whismanoid 0:68e64068330f 376 if (byteCount > 7) {
whismanoid 0:68e64068330f 377 cmdLine_DAPLINKserial.serial().printf(" byteCount:%d", byteCount);
whismanoid 0:68e64068330f 378 }
whismanoid 0:68e64068330f 379 cmdLine_DAPLINKserial.serial().printf(" MOSI->");
whismanoid 0:68e64068330f 380 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 0:68e64068330f 381 {
whismanoid 0:68e64068330f 382 cmdLine_DAPLINKserial.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 0:68e64068330f 383 }
whismanoid 0:68e64068330f 384 // hex dump misoData[0..byteCount-1]
whismanoid 0:68e64068330f 385 cmdLine_DAPLINKserial.serial().printf(" MISO<-");
whismanoid 0:68e64068330f 386 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred; byteIndex++)
whismanoid 0:68e64068330f 387 {
whismanoid 0:68e64068330f 388 cmdLine_DAPLINKserial.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 0:68e64068330f 389 }
whismanoid 0:68e64068330f 390 cmdLine_DAPLINKserial.serial().printf(" ");
whismanoid 0:68e64068330f 391 #endif
whismanoid 0:68e64068330f 392 // VERIFY: DIAGNOSTIC: print MAX5715 device register write
whismanoid 0:68e64068330f 393 // TODO: MAX5715_print_register_verbose(mosiData8_FF0000, mosiData16_00FFFF);
whismanoid 0:68e64068330f 394 // TODO: print_verbose_SPI_diagnostic(mosiData16_FF00, mosiData16_00FF, misoData16_FF00, misoData16_00FF);
whismanoid 0:68e64068330f 395 //
whismanoid 0:68e64068330f 396 //int misoData32 = (misoData32_FF000000 << 24) | (misoData32_FF0000 << 16) | (misoData32_0000FF00 << 8) | misoData32_000000FF;
whismanoid 0:68e64068330f 397 int misoData32 = (misoData[0] << 24) | (misoData[1] << 16) | (misoData[2] << 8) | misoData[3];
whismanoid 0:68e64068330f 398 return misoData32;
whismanoid 0:68e64068330f 399 }
whismanoid 0:68e64068330f 400
whismanoid 0:68e64068330f 401 // CODE GENERATOR: class member function definitions
whismanoid 0:68e64068330f 402 //----------------------------------------
whismanoid 0:68e64068330f 403 // Menu item '!'
whismanoid 0:68e64068330f 404 // Initialize device
whismanoid 0:68e64068330f 405 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 406 uint8_t MAX11410::Init(void)
whismanoid 0:68e64068330f 407 {
whismanoid 0:68e64068330f 408
whismanoid 0:68e64068330f 409 //----------------------------------------
whismanoid 0:68e64068330f 410 // Nominal Full-Scale Voltage Reference
whismanoid 0:68e64068330f 411 VRef = 2.500;
whismanoid 0:68e64068330f 412
whismanoid 0:68e64068330f 413 //----------------------------------------
whismanoid 0:68e64068330f 414 // success
whismanoid 0:68e64068330f 415 return 1;
whismanoid 0:68e64068330f 416 }
whismanoid 0:68e64068330f 417
whismanoid 0:68e64068330f 418 //----------------------------------------
whismanoid 0:68e64068330f 419 // Return the physical voltage corresponding to DAC register.
whismanoid 0:68e64068330f 420 // Does not perform any offset or gain correction.
whismanoid 0:68e64068330f 421 //
whismanoid 0:68e64068330f 422 // @pre VRef = Voltage of REF input, in Volts
whismanoid 0:68e64068330f 423 // @param[in] value_u24: raw 24-bit MAX11410 code (right justified).
whismanoid 0:68e64068330f 424 // @return physical voltage corresponding to MAX11410 code.
whismanoid 0:68e64068330f 425 double MAX11410::VoltageOfCode(uint16_t value_u24)
whismanoid 0:68e64068330f 426 {
whismanoid 0:68e64068330f 427
whismanoid 0:68e64068330f 428 //----------------------------------------
whismanoid 0:68e64068330f 429 // Linear map min and max endpoints
whismanoid 0:68e64068330f 430 double MaxScaleVoltage = VRef; // voltage of maximum code 0xffffff
whismanoid 0:68e64068330f 431 double MinScaleVoltage = 0.0; // voltage of minimum code 0x000
whismanoid 0:68e64068330f 432 const uint32_t FULL_SCALE_CODE_24BIT = 0xffffff;
whismanoid 0:68e64068330f 433 const uint32_t MaxCode = FULL_SCALE_CODE_24BIT;
whismanoid 0:68e64068330f 434 const uint32_t MinCode = 0x000;
whismanoid 0:68e64068330f 435 double codeFraction = ((double)value_u24 - MinCode) / (MaxCode - MinCode + 1);
whismanoid 0:68e64068330f 436 return MinScaleVoltage + ((MaxScaleVoltage - MinScaleVoltage) * codeFraction);
whismanoid 0:68e64068330f 437 }
whismanoid 0:68e64068330f 438
whismanoid 0:68e64068330f 439 //----------------------------------------
whismanoid 0:68e64068330f 440 // Write a MAX11410 register.
whismanoid 0:68e64068330f 441 //
whismanoid 0:68e64068330f 442 // CMD_1aaa_aaaa_REGISTER_READ bit is cleared 0 indicating a write operation.
whismanoid 0:68e64068330f 443 //
whismanoid 0:68e64068330f 444 // MAX11410 register length can be determined by function RegSize.
whismanoid 0:68e64068330f 445 //
whismanoid 0:68e64068330f 446 // For 8-bit register size:
whismanoid 0:68e64068330f 447 //
whismanoid 0:68e64068330f 448 // SPI 16-bit transfer
whismanoid 0:68e64068330f 449 //
whismanoid 0:68e64068330f 450 // SPI MOSI = 0aaa_aaaa_dddd_dddd
whismanoid 0:68e64068330f 451 //
whismanoid 0:68e64068330f 452 // SPI MISO = xxxx_xxxx_xxxx_xxxx
whismanoid 0:68e64068330f 453 //
whismanoid 0:68e64068330f 454 // For 16-bit register size:
whismanoid 0:68e64068330f 455 //
whismanoid 0:68e64068330f 456 // SPI 24-bit or 32-bit transfer
whismanoid 0:68e64068330f 457 //
whismanoid 0:68e64068330f 458 // SPI MOSI = 0aaa_aaaa_dddd_dddd_dddd_dddd
whismanoid 0:68e64068330f 459 //
whismanoid 0:68e64068330f 460 // SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
whismanoid 0:68e64068330f 461 //
whismanoid 0:68e64068330f 462 // For 24-bit register size:
whismanoid 0:68e64068330f 463 //
whismanoid 0:68e64068330f 464 // SPI 32-bit transfer
whismanoid 0:68e64068330f 465 //
whismanoid 0:68e64068330f 466 // SPI MOSI = 0aaa_aaaa_dddd_dddd_dddd_dddd_dddd_dddd
whismanoid 0:68e64068330f 467 //
whismanoid 0:68e64068330f 468 // SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
whismanoid 0:68e64068330f 469 //
whismanoid 0:68e64068330f 470 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 471 uint8_t MAX11410::RegWrite(MAX11410_CMD_enum_t regAddress, uint32_t regData)
whismanoid 0:68e64068330f 472 {
whismanoid 0:68e64068330f 473
whismanoid 0:68e64068330f 474 //----------------------------------------
whismanoid 0:68e64068330f 475 // switch based on register address szie RegSize(regAddress)
whismanoid 0:68e64068330f 476 regAddress = (MAX11410_CMD_enum_t)((regAddress &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
whismanoid 0:68e64068330f 477 switch(RegSize(regAddress))
whismanoid 0:68e64068330f 478 {
whismanoid 0:68e64068330f 479 case 8: // 8-bit register size
whismanoid 0:68e64068330f 480 #warning "Not Verified Yet: MAX11410::RegWrite 8-bit SPIwrite16bits"
whismanoid 0:68e64068330f 481 {
whismanoid 0:68e64068330f 482 // SPI 16-bit transfer
whismanoid 0:68e64068330f 483 // SPI MOSI = 0aaa_aaaa_dddd_dddd
whismanoid 0:68e64068330f 484 // SPI MISO = xxxx_xxxx_xxxx_xxxx
whismanoid 0:68e64068330f 485 int16_t mosiData16 = ((int16_t)regAddress << 8) | ((int16_t)regData & 0xFF);
whismanoid 0:68e64068330f 486 SPIoutputCS(0);
whismanoid 0:68e64068330f 487 SPIwrite16bits(mosiData16);
whismanoid 0:68e64068330f 488 SPIoutputCS(1);
whismanoid 0:68e64068330f 489 }
whismanoid 0:68e64068330f 490 break;
whismanoid 0:68e64068330f 491 case 16: // 16-bit register size
whismanoid 0:68e64068330f 492 #warning "Not Verified Yet: MAX11410::RegWrite 16-bit SPIreadWrite32bits"
whismanoid 0:68e64068330f 493 {
whismanoid 0:68e64068330f 494 // SPI 24-bit or 32-bit transfer
whismanoid 0:68e64068330f 495 // SPI MOSI = 0aaa_aaaa_dddd_dddd_dddd_dddd
whismanoid 0:68e64068330f 496 // SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
whismanoid 0:68e64068330f 497 // SPI MOSI = 0aaa_aaaa_dddd_dddd_dddd_dddd_0000_0000
whismanoid 0:68e64068330f 498 // SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
whismanoid 0:68e64068330f 499 int32_t mosiData32 = ((int32_t)regAddress << 24) | (((int32_t)regData & 0xFFFF) << 8);
whismanoid 0:68e64068330f 500 SPIoutputCS(0);
whismanoid 0:68e64068330f 501 SPIreadWrite32bits(mosiData32);
whismanoid 0:68e64068330f 502 SPIoutputCS(1);
whismanoid 0:68e64068330f 503 }
whismanoid 0:68e64068330f 504 break;
whismanoid 0:68e64068330f 505 case 24: // 24-bit register size
whismanoid 0:68e64068330f 506 #warning "Not Verified Yet: MAX11410::RegWrite 24-bit SPIreadWrite32bits"
whismanoid 0:68e64068330f 507 {
whismanoid 0:68e64068330f 508 // SPI 32-bit transfer
whismanoid 0:68e64068330f 509 // SPI MOSI = 0aaa_aaaa_dddd_dddd_dddd_dddd_dddd_dddd
whismanoid 0:68e64068330f 510 // SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
whismanoid 0:68e64068330f 511 int32_t mosiData32 = ((int32_t)regAddress << 24) | ((int32_t)regData & 0x00FFFFFF);
whismanoid 0:68e64068330f 512 SPIoutputCS(0);
whismanoid 0:68e64068330f 513 SPIreadWrite32bits(mosiData32);
whismanoid 0:68e64068330f 514 SPIoutputCS(1);
whismanoid 0:68e64068330f 515 }
whismanoid 0:68e64068330f 516 break;
whismanoid 0:68e64068330f 517 }
whismanoid 0:68e64068330f 518
whismanoid 0:68e64068330f 519 //----------------------------------------
whismanoid 0:68e64068330f 520 // success
whismanoid 0:68e64068330f 521 return 1;
whismanoid 0:68e64068330f 522 }
whismanoid 0:68e64068330f 523
whismanoid 0:68e64068330f 524 //----------------------------------------
whismanoid 0:68e64068330f 525 // Read an 8-bit MAX11410 register
whismanoid 0:68e64068330f 526 //
whismanoid 0:68e64068330f 527 // CMD_1aaa_aaaa_REGISTER_READ bit is set 1 indicating a read operation.
whismanoid 0:68e64068330f 528 //
whismanoid 0:68e64068330f 529 // MAX11410 register length can be determined by function RegSize.
whismanoid 0:68e64068330f 530 //
whismanoid 0:68e64068330f 531 // For 8-bit register size:
whismanoid 0:68e64068330f 532 //
whismanoid 0:68e64068330f 533 // SPI 16-bit transfer
whismanoid 0:68e64068330f 534 //
whismanoid 0:68e64068330f 535 // SPI MOSI = 1aaa_aaaa_0000_0000
whismanoid 0:68e64068330f 536 //
whismanoid 0:68e64068330f 537 // SPI MISO = xxxx_xxxx_dddd_dddd
whismanoid 0:68e64068330f 538 //
whismanoid 0:68e64068330f 539 // For 16-bit register size:
whismanoid 0:68e64068330f 540 //
whismanoid 0:68e64068330f 541 // SPI 24-bit or 32-bit transfer
whismanoid 0:68e64068330f 542 //
whismanoid 0:68e64068330f 543 // SPI MOSI = 1aaa_aaaa_0000_0000_0000_0000
whismanoid 0:68e64068330f 544 //
whismanoid 0:68e64068330f 545 // SPI MISO = xxxx_xxxx_dddd_dddd_dddd_dddd
whismanoid 0:68e64068330f 546 //
whismanoid 0:68e64068330f 547 // For 24-bit register size:
whismanoid 0:68e64068330f 548 //
whismanoid 0:68e64068330f 549 // SPI 32-bit transfer
whismanoid 0:68e64068330f 550 //
whismanoid 0:68e64068330f 551 // SPI MOSI = 1aaa_aaaa_0000_0000_0000_0000_0000_0000
whismanoid 0:68e64068330f 552 //
whismanoid 0:68e64068330f 553 // SPI MISO = xxxx_xxxx_dddd_dddd_dddd_dddd_dddd_dddd
whismanoid 0:68e64068330f 554 //
whismanoid 0:68e64068330f 555 //
whismanoid 0:68e64068330f 556 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 557 uint8_t MAX11410::RegRead(MAX11410_CMD_enum_t regAddress, uint32_t* ptrRegData)
whismanoid 0:68e64068330f 558 {
whismanoid 0:68e64068330f 559
whismanoid 0:68e64068330f 560 //----------------------------------------
whismanoid 0:68e64068330f 561 // switch based on register address szie RegSize(regAddress)
whismanoid 0:68e64068330f 562 regAddress = (MAX11410_CMD_enum_t)((regAddress &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
whismanoid 0:68e64068330f 563 switch(RegSize(regAddress))
whismanoid 0:68e64068330f 564 {
whismanoid 0:68e64068330f 565 case 8: // 8-bit register size
whismanoid 0:68e64068330f 566 #warning "Not Verified Yet: MAX11410::RegRead 8-bit SPIreadWrite16bits"
whismanoid 0:68e64068330f 567 {
whismanoid 0:68e64068330f 568 // SPI 16-bit transfer
whismanoid 0:68e64068330f 569 // SPI MOSI = 1aaa_aaaa_0000_0000
whismanoid 0:68e64068330f 570 // SPI MISO = xxxx_xxxx_dddd_dddd
whismanoid 0:68e64068330f 571 int16_t mosiData16 = ((CMD_1aaa_aaaa_REGISTER_READ | (int16_t)regAddress) << 8) | ((int16_t)0);
whismanoid 0:68e64068330f 572 SPIoutputCS(0);
whismanoid 0:68e64068330f 573 int16_t misoData16 = SPIreadWrite16bits(mosiData16);
whismanoid 0:68e64068330f 574 SPIoutputCS(1);
whismanoid 0:68e64068330f 575 (*ptrRegData) = (misoData16 & 0x00FF);
whismanoid 0:68e64068330f 576 }
whismanoid 0:68e64068330f 577 break;
whismanoid 0:68e64068330f 578 case 16: // 16-bit register size
whismanoid 0:68e64068330f 579 #warning "Not Verified Yet: MAX11410::RegRead 16-bit SPIreadWrite32bits"
whismanoid 0:68e64068330f 580 {
whismanoid 0:68e64068330f 581 // SPI 24-bit or 32-bit transfer
whismanoid 0:68e64068330f 582 // SPI MOSI = 1aaa_aaaa_0000_0000_0000_0000
whismanoid 0:68e64068330f 583 // SPI MISO = xxxx_xxxx_dddd_dddd_dddd_dddd
whismanoid 0:68e64068330f 584 // SPI MOSI = 1aaa_aaaa_0000_0000_0000_0000_0000_0000
whismanoid 0:68e64068330f 585 // SPI MISO = xxxx_xxxx_dddd_dddd_dddd_dddd_xxxx_xxxx
whismanoid 0:68e64068330f 586 int32_t mosiData32 = ((CMD_1aaa_aaaa_REGISTER_READ | (int32_t)regAddress) << 24);
whismanoid 0:68e64068330f 587 SPIoutputCS(0);
whismanoid 0:68e64068330f 588 int32_t misoData32 = SPIreadWrite32bits(mosiData32);
whismanoid 0:68e64068330f 589 SPIoutputCS(1);
whismanoid 0:68e64068330f 590 (*ptrRegData) = ((misoData32 >> 8) & 0x00FFFF);
whismanoid 0:68e64068330f 591 }
whismanoid 0:68e64068330f 592 break;
whismanoid 0:68e64068330f 593 case 24: // 24-bit register size
whismanoid 0:68e64068330f 594 #warning "Not Verified Yet: MAX11410::RegRead 24-bit SPIreadWrite32bits"
whismanoid 0:68e64068330f 595 {
whismanoid 0:68e64068330f 596 // SPI 32-bit transfer
whismanoid 0:68e64068330f 597 // SPI MOSI = 1aaa_aaaa_0000_0000_0000_0000_0000_0000
whismanoid 0:68e64068330f 598 // SPI MISO = xxxx_xxxx_dddd_dddd_dddd_dddd_dddd_dddd
whismanoid 0:68e64068330f 599 int32_t mosiData32 = ((CMD_1aaa_aaaa_REGISTER_READ | (int32_t)regAddress) << 24);
whismanoid 0:68e64068330f 600 SPIoutputCS(0);
whismanoid 0:68e64068330f 601 int32_t misoData32 = SPIreadWrite32bits(mosiData32);
whismanoid 0:68e64068330f 602 SPIoutputCS(1);
whismanoid 0:68e64068330f 603 (*ptrRegData) = (misoData32 & 0x00FFFFFF);
whismanoid 0:68e64068330f 604 }
whismanoid 0:68e64068330f 605 break;
whismanoid 0:68e64068330f 606 }
whismanoid 0:68e64068330f 607
whismanoid 0:68e64068330f 608 //----------------------------------------
whismanoid 0:68e64068330f 609 // success
whismanoid 0:68e64068330f 610 return 1;
whismanoid 0:68e64068330f 611 }
whismanoid 0:68e64068330f 612
whismanoid 0:68e64068330f 613 //----------------------------------------
whismanoid 0:68e64068330f 614 // Return the size of a MAX11410 register
whismanoid 0:68e64068330f 615 //
whismanoid 0:68e64068330f 616 // @return 8 for 8-bit, 16 for 16-bit, 24 for 24-bit, else 0 for undefined register size
whismanoid 0:68e64068330f 617 uint8_t MAX11410::RegSize(MAX11410_CMD_enum_t regAddress)
whismanoid 0:68e64068330f 618 {
whismanoid 0:68e64068330f 619
whismanoid 0:68e64068330f 620 //----------------------------------------
whismanoid 0:68e64068330f 621 // switch based on register address value regAddress
whismanoid 0:68e64068330f 622 regAddress = (MAX11410_CMD_enum_t)((regAddress &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
whismanoid 0:68e64068330f 623 switch(regAddress)
whismanoid 0:68e64068330f 624 {
whismanoid 0:68e64068330f 625 default:
whismanoid 0:68e64068330f 626 return 0; // undefined register size
whismanoid 0:68e64068330f 627 case CMD_r000_0000_xxxx_xxdd_PD:
whismanoid 0:68e64068330f 628 case CMD_r000_0001_xddd_xxdd_CONV_START:
whismanoid 0:68e64068330f 629 case CMD_r000_0010_xddd_dddd_SEQ_START:
whismanoid 0:68e64068330f 630 case CMD_r000_0011_xxxx_xddd_CAL_START:
whismanoid 0:68e64068330f 631 case CMD_r000_0100_dddd_xddd_GP0_CTRL:
whismanoid 0:68e64068330f 632 case CMD_r000_0101_dddd_xddd_GP1_CTRL:
whismanoid 0:68e64068330f 633 case CMD_r000_0110_xddd_xxdd_GP_CONV:
whismanoid 0:68e64068330f 634 case CMD_r000_0111_xddd_dddd_GP_SEQ_ADDR:
whismanoid 0:68e64068330f 635 case CMD_r000_1000_x0dd_dddd_FILTER:
whismanoid 0:68e64068330f 636 case CMD_r000_1001_dddd_dddd_CTRL:
whismanoid 0:68e64068330f 637 case CMD_r000_1010_dddd_dddd_SOURCE:
whismanoid 0:68e64068330f 638 case CMD_r000_1011_dddd_dddd_MUX_CTRL0:
whismanoid 0:68e64068330f 639 case CMD_r000_1100_dddd_dddd_MUX_CTRL1:
whismanoid 0:68e64068330f 640 case CMD_r000_1101_dddd_dddd_MUX_CTRL2:
whismanoid 0:68e64068330f 641 case CMD_r000_1110_xxdd_xddd_PGA:
whismanoid 0:68e64068330f 642 case CMD_r000_1111_dddd_dddd_WAIT_EXT:
whismanoid 0:68e64068330f 643 case CMD_r001_0000_xxxx_xxxx_WAIT_START:
whismanoid 0:68e64068330f 644 return 8; // 8-bit register size
whismanoid 0:68e64068330f 645 case CMD_r001_0001_xxxx_xxxx_xxxx_xxxx_xxxx_xddd_PART_ID:
whismanoid 0:68e64068330f 646 case CMD_r001_0010_xxxx_xxxx_dddd_xxdd_dddd_dddd_SYSC_SEL:
whismanoid 0:68e64068330f 647 case CMD_r001_0011_dddd_dddd_dddd_dddd_dddd_dddd_SYS_OFF_A:
whismanoid 0:68e64068330f 648 case CMD_r001_0100_dddd_dddd_dddd_dddd_dddd_dddd_SYS_OFF_B:
whismanoid 0:68e64068330f 649 case CMD_r001_0101_dddd_dddd_dddd_dddd_dddd_dddd_SYS_GAIN_A:
whismanoid 0:68e64068330f 650 case CMD_r001_0110_dddd_dddd_dddd_dddd_dddd_dddd_SYS_GAIN_B:
whismanoid 0:68e64068330f 651 case CMD_r001_0111_dddd_dddd_dddd_dddd_dddd_dddd_SELF_OFF:
whismanoid 0:68e64068330f 652 case CMD_r001_1000_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_1:
whismanoid 0:68e64068330f 653 case CMD_r001_1001_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_2:
whismanoid 0:68e64068330f 654 case CMD_r001_1010_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_4:
whismanoid 0:68e64068330f 655 case CMD_r001_1011_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_8:
whismanoid 0:68e64068330f 656 case CMD_r001_1100_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_16:
whismanoid 0:68e64068330f 657 case CMD_r001_1101_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_32:
whismanoid 0:68e64068330f 658 case CMD_r001_1110_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_64:
whismanoid 0:68e64068330f 659 case CMD_r001_1111_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_128:
whismanoid 0:68e64068330f 660 case CMD_r010_0000_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH0:
whismanoid 0:68e64068330f 661 case CMD_r010_0001_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH1:
whismanoid 0:68e64068330f 662 case CMD_r010_0010_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH2:
whismanoid 0:68e64068330f 663 case CMD_r010_0011_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH3:
whismanoid 0:68e64068330f 664 case CMD_r010_0100_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH4:
whismanoid 0:68e64068330f 665 case CMD_r010_0101_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH5:
whismanoid 0:68e64068330f 666 case CMD_r010_0110_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH6:
whismanoid 0:68e64068330f 667 case CMD_r010_0111_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH7:
whismanoid 0:68e64068330f 668 case CMD_r010_1000_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH0:
whismanoid 0:68e64068330f 669 case CMD_r010_1001_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH1:
whismanoid 0:68e64068330f 670 case CMD_r010_1010_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH2:
whismanoid 0:68e64068330f 671 case CMD_r010_1011_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH3:
whismanoid 0:68e64068330f 672 case CMD_r010_1100_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH4:
whismanoid 0:68e64068330f 673 case CMD_r010_1101_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH5:
whismanoid 0:68e64068330f 674 case CMD_r010_1110_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH6:
whismanoid 0:68e64068330f 675 case CMD_r010_1111_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH7:
whismanoid 0:68e64068330f 676 case CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0:
whismanoid 0:68e64068330f 677 case CMD_r011_0001_dddd_dddd_dddd_dddd_dddd_dddd_DATA1:
whismanoid 0:68e64068330f 678 case CMD_r011_0010_dddd_dddd_dddd_dddd_dddd_dddd_DATA2:
whismanoid 0:68e64068330f 679 case CMD_r011_0011_dddd_dddd_dddd_dddd_dddd_dddd_DATA3:
whismanoid 0:68e64068330f 680 case CMD_r011_0100_dddd_dddd_dddd_dddd_dddd_dddd_DATA4:
whismanoid 0:68e64068330f 681 case CMD_r011_0101_dddd_dddd_dddd_dddd_dddd_dddd_DATA5:
whismanoid 0:68e64068330f 682 case CMD_r011_0110_dddd_dddd_dddd_dddd_dddd_dddd_DATA6:
whismanoid 0:68e64068330f 683 case CMD_r011_0111_dddd_dddd_dddd_dddd_dddd_dddd_DATA7:
whismanoid 0:68e64068330f 684 case CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS:
whismanoid 0:68e64068330f 685 case CMD_r011_1001_dddd_dddd_dddd_dddd_dxxd_dddd_STATUS_IE:
whismanoid 0:68e64068330f 686 return 24; // 24-bit register size
whismanoid 0:68e64068330f 687 case CMD_r011_1010_xaaa_aaaa_dddd_dddd_UC_0:
whismanoid 0:68e64068330f 688 case CMD_r011_1011_xaaa_aaaa_dddd_dddd_UC_1:
whismanoid 0:68e64068330f 689 case CMD_r011_1100_xaaa_aaaa_dddd_dddd_UC_2:
whismanoid 0:68e64068330f 690 case CMD_r011_1101_xaaa_aaaa_dddd_dddd_UC_3:
whismanoid 0:68e64068330f 691 case CMD_r011_1110_xaaa_aaaa_dddd_dddd_UC_4:
whismanoid 0:68e64068330f 692 case CMD_r011_1111_xaaa_aaaa_dddd_dddd_UC_5:
whismanoid 0:68e64068330f 693 case CMD_r100_0000_xaaa_aaaa_dddd_dddd_UC_6:
whismanoid 0:68e64068330f 694 case CMD_r100_0001_xaaa_aaaa_dddd_dddd_UC_7:
whismanoid 0:68e64068330f 695 case CMD_r100_0010_xaaa_aaaa_dddd_dddd_UC_8:
whismanoid 0:68e64068330f 696 case CMD_r100_0011_xaaa_aaaa_dddd_dddd_UC_9:
whismanoid 0:68e64068330f 697 case CMD_r100_0100_xaaa_aaaa_dddd_dddd_UC_10:
whismanoid 0:68e64068330f 698 case CMD_r100_0101_xaaa_aaaa_dddd_dddd_UC_11:
whismanoid 0:68e64068330f 699 case CMD_r100_0110_xaaa_aaaa_dddd_dddd_UC_12:
whismanoid 0:68e64068330f 700 case CMD_r100_0111_xaaa_aaaa_dddd_dddd_UC_13:
whismanoid 0:68e64068330f 701 case CMD_r100_1000_xaaa_aaaa_dddd_dddd_UC_14:
whismanoid 0:68e64068330f 702 case CMD_r100_1001_xaaa_aaaa_dddd_dddd_UC_15:
whismanoid 0:68e64068330f 703 case CMD_r100_1010_xaaa_aaaa_dddd_dddd_UC_16:
whismanoid 0:68e64068330f 704 case CMD_r100_1011_xaaa_aaaa_dddd_dddd_UC_17:
whismanoid 0:68e64068330f 705 case CMD_r100_1100_xaaa_aaaa_dddd_dddd_UC_18:
whismanoid 0:68e64068330f 706 case CMD_r100_1101_xaaa_aaaa_dddd_dddd_UC_19:
whismanoid 0:68e64068330f 707 case CMD_r100_1110_xaaa_aaaa_dddd_dddd_UC_20:
whismanoid 0:68e64068330f 708 case CMD_r100_1111_xaaa_aaaa_dddd_dddd_UC_21:
whismanoid 0:68e64068330f 709 case CMD_r101_0000_xaaa_aaaa_dddd_dddd_UC_22:
whismanoid 0:68e64068330f 710 case CMD_r101_0001_xaaa_aaaa_dddd_dddd_UC_23:
whismanoid 0:68e64068330f 711 case CMD_r101_0010_xaaa_aaaa_dddd_dddd_UC_24:
whismanoid 0:68e64068330f 712 case CMD_r101_0011_xaaa_aaaa_dddd_dddd_UC_25:
whismanoid 0:68e64068330f 713 case CMD_r101_0100_xaaa_aaaa_dddd_dddd_UC_26:
whismanoid 0:68e64068330f 714 case CMD_r101_0101_xaaa_aaaa_dddd_dddd_UC_27:
whismanoid 0:68e64068330f 715 case CMD_r101_0110_xaaa_aaaa_dddd_dddd_UC_28:
whismanoid 0:68e64068330f 716 case CMD_r101_0111_xaaa_aaaa_dddd_dddd_UC_29:
whismanoid 0:68e64068330f 717 case CMD_r101_1000_xaaa_aaaa_dddd_dddd_UC_30:
whismanoid 0:68e64068330f 718 case CMD_r101_1001_xaaa_aaaa_dddd_dddd_UC_31:
whismanoid 0:68e64068330f 719 case CMD_r101_1010_xaaa_aaaa_dddd_dddd_UC_32:
whismanoid 0:68e64068330f 720 case CMD_r101_1011_xaaa_aaaa_dddd_dddd_UC_33:
whismanoid 0:68e64068330f 721 case CMD_r101_1100_xaaa_aaaa_dddd_dddd_UC_34:
whismanoid 0:68e64068330f 722 case CMD_r101_1101_xaaa_aaaa_dddd_dddd_UC_35:
whismanoid 0:68e64068330f 723 case CMD_r101_1110_xaaa_aaaa_dddd_dddd_UC_36:
whismanoid 0:68e64068330f 724 case CMD_r101_1111_xaaa_aaaa_dddd_dddd_UC_37:
whismanoid 0:68e64068330f 725 case CMD_r110_0000_xaaa_aaaa_dddd_dddd_UC_38:
whismanoid 0:68e64068330f 726 case CMD_r110_0001_xaaa_aaaa_dddd_dddd_UC_39:
whismanoid 0:68e64068330f 727 case CMD_r110_0010_xaaa_aaaa_dddd_dddd_UC_40:
whismanoid 0:68e64068330f 728 case CMD_r110_0011_xaaa_aaaa_dddd_dddd_UC_41:
whismanoid 0:68e64068330f 729 case CMD_r110_0100_xaaa_aaaa_dddd_dddd_UC_42:
whismanoid 0:68e64068330f 730 case CMD_r110_0101_xaaa_aaaa_dddd_dddd_UC_43:
whismanoid 0:68e64068330f 731 case CMD_r110_0110_xaaa_aaaa_dddd_dddd_UC_44:
whismanoid 0:68e64068330f 732 case CMD_r110_0111_xaaa_aaaa_dddd_dddd_UC_45:
whismanoid 0:68e64068330f 733 case CMD_r110_1000_xaaa_aaaa_dddd_dddd_UC_46:
whismanoid 0:68e64068330f 734 case CMD_r110_1001_xaaa_aaaa_dddd_dddd_UC_47:
whismanoid 0:68e64068330f 735 case CMD_r110_1010_xaaa_aaaa_dddd_dddd_UC_48:
whismanoid 0:68e64068330f 736 case CMD_r110_1011_xaaa_aaaa_dddd_dddd_UC_49:
whismanoid 0:68e64068330f 737 case CMD_r110_1100_xaaa_aaaa_dddd_dddd_UC_50:
whismanoid 0:68e64068330f 738 case CMD_r110_1101_xaaa_aaaa_dddd_dddd_UC_51:
whismanoid 0:68e64068330f 739 case CMD_r110_1110_xaaa_aaaa_dddd_dddd_UC_52:
whismanoid 0:68e64068330f 740 case CMD_r110_1111_xxxx_xxxx_xaaa_aaaa_UCADDR:
whismanoid 0:68e64068330f 741 return 16; // 16-bit register size
whismanoid 0:68e64068330f 742 }
whismanoid 0:68e64068330f 743 }
whismanoid 0:68e64068330f 744
whismanoid 0:68e64068330f 745 //----------------------------------------
whismanoid 0:68e64068330f 746 // Return the name of a MAX11410 register
whismanoid 0:68e64068330f 747 //
whismanoid 0:68e64068330f 748 // @return null-terminated constant C string containing register name or empty string
whismanoid 0:68e64068330f 749 const char* MAX11410::RegName(MAX11410_CMD_enum_t regAddress)
whismanoid 0:68e64068330f 750 {
whismanoid 0:68e64068330f 751
whismanoid 0:68e64068330f 752 //----------------------------------------
whismanoid 0:68e64068330f 753 // switch based on register address value regAddress
whismanoid 0:68e64068330f 754 regAddress = (MAX11410_CMD_enum_t)((regAddress &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
whismanoid 0:68e64068330f 755 switch(regAddress)
whismanoid 0:68e64068330f 756 {
whismanoid 0:68e64068330f 757 default:
whismanoid 0:68e64068330f 758 return ""; // undefined register
whismanoid 0:68e64068330f 759 case CMD_r000_0000_xxxx_xxdd_PD: return "PD";
whismanoid 0:68e64068330f 760 case CMD_r000_0001_xddd_xxdd_CONV_START: return "CONV_START";
whismanoid 0:68e64068330f 761 case CMD_r000_0010_xddd_dddd_SEQ_START: return "SEQ_START";
whismanoid 0:68e64068330f 762 case CMD_r000_0011_xxxx_xddd_CAL_START: return "CAL_START";
whismanoid 0:68e64068330f 763 case CMD_r000_0100_dddd_xddd_GP0_CTRL: return "GP0_CTRL";
whismanoid 0:68e64068330f 764 case CMD_r000_0101_dddd_xddd_GP1_CTRL: return "GP1_CTRL";
whismanoid 0:68e64068330f 765 case CMD_r000_0110_xddd_xxdd_GP_CONV: return "GP_CONV";
whismanoid 0:68e64068330f 766 case CMD_r000_0111_xddd_dddd_GP_SEQ_ADDR: return "GP_SEQ_ADDR";
whismanoid 0:68e64068330f 767 case CMD_r000_1000_x0dd_dddd_FILTER: return "FILTER";
whismanoid 0:68e64068330f 768 case CMD_r000_1001_dddd_dddd_CTRL: return "CTRL";
whismanoid 0:68e64068330f 769 case CMD_r000_1010_dddd_dddd_SOURCE: return "SOURCE";
whismanoid 0:68e64068330f 770 case CMD_r000_1011_dddd_dddd_MUX_CTRL0: return "MUX_CTRL0";
whismanoid 0:68e64068330f 771 case CMD_r000_1100_dddd_dddd_MUX_CTRL1: return "MUX_CTRL1";
whismanoid 0:68e64068330f 772 case CMD_r000_1101_dddd_dddd_MUX_CTRL2: return "MUX_CTRL2";
whismanoid 0:68e64068330f 773 case CMD_r000_1110_xxdd_xddd_PGA: return "PGA";
whismanoid 0:68e64068330f 774 case CMD_r000_1111_dddd_dddd_WAIT_EXT: return "WAIT_EXT";
whismanoid 0:68e64068330f 775 case CMD_r001_0000_xxxx_xxxx_WAIT_START: return "WAIT_START";
whismanoid 0:68e64068330f 776 case CMD_r001_0001_xxxx_xxxx_xxxx_xxxx_xxxx_xddd_PART_ID: return "PART_ID";
whismanoid 0:68e64068330f 777 case CMD_r001_0010_xxxx_xxxx_dddd_xxdd_dddd_dddd_SYSC_SEL: return "SYSC_SEL";
whismanoid 0:68e64068330f 778 case CMD_r001_0011_dddd_dddd_dddd_dddd_dddd_dddd_SYS_OFF_A: return "SYS_OFF_A";
whismanoid 0:68e64068330f 779 case CMD_r001_0100_dddd_dddd_dddd_dddd_dddd_dddd_SYS_OFF_B: return "SYS_OFF_B";
whismanoid 0:68e64068330f 780 case CMD_r001_0101_dddd_dddd_dddd_dddd_dddd_dddd_SYS_GAIN_A: return "SYS_GAIN_A";
whismanoid 0:68e64068330f 781 case CMD_r001_0110_dddd_dddd_dddd_dddd_dddd_dddd_SYS_GAIN_B: return "SYS_GAIN_B";
whismanoid 0:68e64068330f 782 case CMD_r001_0111_dddd_dddd_dddd_dddd_dddd_dddd_SELF_OFF: return "SELF_OFF";
whismanoid 0:68e64068330f 783 case CMD_r001_1000_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_1: return "SELF_GAIN_1";
whismanoid 0:68e64068330f 784 case CMD_r001_1001_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_2: return "SELF_GAIN_2";
whismanoid 0:68e64068330f 785 case CMD_r001_1010_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_4: return "SELF_GAIN_4";
whismanoid 0:68e64068330f 786 case CMD_r001_1011_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_8: return "SELF_GAIN_8";
whismanoid 0:68e64068330f 787 case CMD_r001_1100_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_16: return "SELF_GAIN_16";
whismanoid 0:68e64068330f 788 case CMD_r001_1101_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_32: return "SELF_GAIN_32";
whismanoid 0:68e64068330f 789 case CMD_r001_1110_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_64: return "SELF_GAIN_64";
whismanoid 0:68e64068330f 790 case CMD_r001_1111_dddd_dddd_dddd_dddd_dddd_dddd_SELF_GAIN_128: return "SELF_GAIN_128";
whismanoid 0:68e64068330f 791 case CMD_r010_0000_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH0: return "LTHRESH0";
whismanoid 0:68e64068330f 792 case CMD_r010_0001_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH1: return "LTHRESH1";
whismanoid 0:68e64068330f 793 case CMD_r010_0010_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH2: return "LTHRESH2";
whismanoid 0:68e64068330f 794 case CMD_r010_0011_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH3: return "LTHRESH3";
whismanoid 0:68e64068330f 795 case CMD_r010_0100_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH4: return "LTHRESH4";
whismanoid 0:68e64068330f 796 case CMD_r010_0101_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH5: return "LTHRESH5";
whismanoid 0:68e64068330f 797 case CMD_r010_0110_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH6: return "LTHRESH6";
whismanoid 0:68e64068330f 798 case CMD_r010_0111_dddd_dddd_dddd_dddd_dddd_dddd_LTHRESH7: return "LTHRESH7";
whismanoid 0:68e64068330f 799 case CMD_r010_1000_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH0: return "UTHRESH0";
whismanoid 0:68e64068330f 800 case CMD_r010_1001_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH1: return "UTHRESH1";
whismanoid 0:68e64068330f 801 case CMD_r010_1010_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH2: return "UTHRESH2";
whismanoid 0:68e64068330f 802 case CMD_r010_1011_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH3: return "UTHRESH3";
whismanoid 0:68e64068330f 803 case CMD_r010_1100_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH4: return "UTHRESH4";
whismanoid 0:68e64068330f 804 case CMD_r010_1101_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH5: return "UTHRESH5";
whismanoid 0:68e64068330f 805 case CMD_r010_1110_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH6: return "UTHRESH6";
whismanoid 0:68e64068330f 806 case CMD_r010_1111_dddd_dddd_dddd_dddd_dddd_dddd_UTHRESH7: return "UTHRESH7";
whismanoid 0:68e64068330f 807 case CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0: return "DATA0";
whismanoid 0:68e64068330f 808 case CMD_r011_0001_dddd_dddd_dddd_dddd_dddd_dddd_DATA1: return "DATA1";
whismanoid 0:68e64068330f 809 case CMD_r011_0010_dddd_dddd_dddd_dddd_dddd_dddd_DATA2: return "DATA2";
whismanoid 0:68e64068330f 810 case CMD_r011_0011_dddd_dddd_dddd_dddd_dddd_dddd_DATA3: return "DATA3";
whismanoid 0:68e64068330f 811 case CMD_r011_0100_dddd_dddd_dddd_dddd_dddd_dddd_DATA4: return "DATA4";
whismanoid 0:68e64068330f 812 case CMD_r011_0101_dddd_dddd_dddd_dddd_dddd_dddd_DATA5: return "DATA5";
whismanoid 0:68e64068330f 813 case CMD_r011_0110_dddd_dddd_dddd_dddd_dddd_dddd_DATA6: return "DATA6";
whismanoid 0:68e64068330f 814 case CMD_r011_0111_dddd_dddd_dddd_dddd_dddd_dddd_DATA7: return "DATA7";
whismanoid 0:68e64068330f 815 case CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS: return "STATUS";
whismanoid 0:68e64068330f 816 case CMD_r011_1001_dddd_dddd_dddd_dddd_dxxd_dddd_STATUS_IE: return "STATUS_IE";
whismanoid 0:68e64068330f 817 case CMD_r011_1010_xaaa_aaaa_dddd_dddd_UC_0: return "UC_0";
whismanoid 0:68e64068330f 818 case CMD_r011_1011_xaaa_aaaa_dddd_dddd_UC_1: return "UC_1";
whismanoid 0:68e64068330f 819 case CMD_r011_1100_xaaa_aaaa_dddd_dddd_UC_2: return "UC_2";
whismanoid 0:68e64068330f 820 case CMD_r011_1101_xaaa_aaaa_dddd_dddd_UC_3: return "UC_3";
whismanoid 0:68e64068330f 821 case CMD_r011_1110_xaaa_aaaa_dddd_dddd_UC_4: return "UC_4";
whismanoid 0:68e64068330f 822 case CMD_r011_1111_xaaa_aaaa_dddd_dddd_UC_5: return "UC_5";
whismanoid 0:68e64068330f 823 case CMD_r100_0000_xaaa_aaaa_dddd_dddd_UC_6: return "UC_6";
whismanoid 0:68e64068330f 824 case CMD_r100_0001_xaaa_aaaa_dddd_dddd_UC_7: return "UC_7";
whismanoid 0:68e64068330f 825 case CMD_r100_0010_xaaa_aaaa_dddd_dddd_UC_8: return "UC_8";
whismanoid 0:68e64068330f 826 case CMD_r100_0011_xaaa_aaaa_dddd_dddd_UC_9: return "UC_9";
whismanoid 0:68e64068330f 827 case CMD_r100_0100_xaaa_aaaa_dddd_dddd_UC_10: return "UC_10";
whismanoid 0:68e64068330f 828 case CMD_r100_0101_xaaa_aaaa_dddd_dddd_UC_11: return "UC_11";
whismanoid 0:68e64068330f 829 case CMD_r100_0110_xaaa_aaaa_dddd_dddd_UC_12: return "UC_12";
whismanoid 0:68e64068330f 830 case CMD_r100_0111_xaaa_aaaa_dddd_dddd_UC_13: return "UC_13";
whismanoid 0:68e64068330f 831 case CMD_r100_1000_xaaa_aaaa_dddd_dddd_UC_14: return "UC_14";
whismanoid 0:68e64068330f 832 case CMD_r100_1001_xaaa_aaaa_dddd_dddd_UC_15: return "UC_15";
whismanoid 0:68e64068330f 833 case CMD_r100_1010_xaaa_aaaa_dddd_dddd_UC_16: return "UC_16";
whismanoid 0:68e64068330f 834 case CMD_r100_1011_xaaa_aaaa_dddd_dddd_UC_17: return "UC_17";
whismanoid 0:68e64068330f 835 case CMD_r100_1100_xaaa_aaaa_dddd_dddd_UC_18: return "UC_18";
whismanoid 0:68e64068330f 836 case CMD_r100_1101_xaaa_aaaa_dddd_dddd_UC_19: return "UC_19";
whismanoid 0:68e64068330f 837 case CMD_r100_1110_xaaa_aaaa_dddd_dddd_UC_20: return "UC_20";
whismanoid 0:68e64068330f 838 case CMD_r100_1111_xaaa_aaaa_dddd_dddd_UC_21: return "UC_21";
whismanoid 0:68e64068330f 839 case CMD_r101_0000_xaaa_aaaa_dddd_dddd_UC_22: return "UC_22";
whismanoid 0:68e64068330f 840 case CMD_r101_0001_xaaa_aaaa_dddd_dddd_UC_23: return "UC_23";
whismanoid 0:68e64068330f 841 case CMD_r101_0010_xaaa_aaaa_dddd_dddd_UC_24: return "UC_24";
whismanoid 0:68e64068330f 842 case CMD_r101_0011_xaaa_aaaa_dddd_dddd_UC_25: return "UC_25";
whismanoid 0:68e64068330f 843 case CMD_r101_0100_xaaa_aaaa_dddd_dddd_UC_26: return "UC_26";
whismanoid 0:68e64068330f 844 case CMD_r101_0101_xaaa_aaaa_dddd_dddd_UC_27: return "UC_27";
whismanoid 0:68e64068330f 845 case CMD_r101_0110_xaaa_aaaa_dddd_dddd_UC_28: return "UC_28";
whismanoid 0:68e64068330f 846 case CMD_r101_0111_xaaa_aaaa_dddd_dddd_UC_29: return "UC_29";
whismanoid 0:68e64068330f 847 case CMD_r101_1000_xaaa_aaaa_dddd_dddd_UC_30: return "UC_30";
whismanoid 0:68e64068330f 848 case CMD_r101_1001_xaaa_aaaa_dddd_dddd_UC_31: return "UC_31";
whismanoid 0:68e64068330f 849 case CMD_r101_1010_xaaa_aaaa_dddd_dddd_UC_32: return "UC_32";
whismanoid 0:68e64068330f 850 case CMD_r101_1011_xaaa_aaaa_dddd_dddd_UC_33: return "UC_33";
whismanoid 0:68e64068330f 851 case CMD_r101_1100_xaaa_aaaa_dddd_dddd_UC_34: return "UC_34";
whismanoid 0:68e64068330f 852 case CMD_r101_1101_xaaa_aaaa_dddd_dddd_UC_35: return "UC_35";
whismanoid 0:68e64068330f 853 case CMD_r101_1110_xaaa_aaaa_dddd_dddd_UC_36: return "UC_36";
whismanoid 0:68e64068330f 854 case CMD_r101_1111_xaaa_aaaa_dddd_dddd_UC_37: return "UC_37";
whismanoid 0:68e64068330f 855 case CMD_r110_0000_xaaa_aaaa_dddd_dddd_UC_38: return "UC_38";
whismanoid 0:68e64068330f 856 case CMD_r110_0001_xaaa_aaaa_dddd_dddd_UC_39: return "UC_39";
whismanoid 0:68e64068330f 857 case CMD_r110_0010_xaaa_aaaa_dddd_dddd_UC_40: return "UC_40";
whismanoid 0:68e64068330f 858 case CMD_r110_0011_xaaa_aaaa_dddd_dddd_UC_41: return "UC_41";
whismanoid 0:68e64068330f 859 case CMD_r110_0100_xaaa_aaaa_dddd_dddd_UC_42: return "UC_42";
whismanoid 0:68e64068330f 860 case CMD_r110_0101_xaaa_aaaa_dddd_dddd_UC_43: return "UC_43";
whismanoid 0:68e64068330f 861 case CMD_r110_0110_xaaa_aaaa_dddd_dddd_UC_44: return "UC_44";
whismanoid 0:68e64068330f 862 case CMD_r110_0111_xaaa_aaaa_dddd_dddd_UC_45: return "UC_45";
whismanoid 0:68e64068330f 863 case CMD_r110_1000_xaaa_aaaa_dddd_dddd_UC_46: return "UC_46";
whismanoid 0:68e64068330f 864 case CMD_r110_1001_xaaa_aaaa_dddd_dddd_UC_47: return "UC_47";
whismanoid 0:68e64068330f 865 case CMD_r110_1010_xaaa_aaaa_dddd_dddd_UC_48: return "UC_48";
whismanoid 0:68e64068330f 866 case CMD_r110_1011_xaaa_aaaa_dddd_dddd_UC_49: return "UC_49";
whismanoid 0:68e64068330f 867 case CMD_r110_1100_xaaa_aaaa_dddd_dddd_UC_50: return "UC_50";
whismanoid 0:68e64068330f 868 case CMD_r110_1101_xaaa_aaaa_dddd_dddd_UC_51: return "UC_51";
whismanoid 0:68e64068330f 869 case CMD_r110_1110_xaaa_aaaa_dddd_dddd_UC_52: return "UC_52";
whismanoid 0:68e64068330f 870 case CMD_r110_1111_xxxx_xxxx_xaaa_aaaa_UCADDR: return "UCADDR";
whismanoid 0:68e64068330f 871 }
whismanoid 0:68e64068330f 872 }
whismanoid 0:68e64068330f 873
whismanoid 0:68e64068330f 874 //----------------------------------------
whismanoid 0:68e64068330f 875 // Configure Measurement for voltage input.
whismanoid 0:68e64068330f 876 //
whismanoid 0:68e64068330f 877 // Example code for typical voltage measurement.
whismanoid 0:68e64068330f 878 //
whismanoid 0:68e64068330f 879 // SPI register write sequence test AIN0-AGND voltage input using REF2=2.5V
whismanoid 0:68e64068330f 880 // write8 0x00 PD = 0x03 (Reset Registers; enter Standby mode)
whismanoid 0:68e64068330f 881 // write8 0x00 PD = 0x00 (NOP)
whismanoid 0:68e64068330f 882 // write8 0x08 FILTER = 0x34 to select RATE_0100, LINEF_11_SINC4 60SPS (given CONV_TYPE_01_Continuous )
whismanoid 0:68e64068330f 883 // write8 0x0B MUX_CTRL0 = 0x0A to select AINP=AIN0 and AINN=GND
whismanoid 0:68e64068330f 884 // write8 0x09 CTRL = 0x02 to select reference REF2P/REF2N; or CTRL = 0x1A to select reference REF2P/REF2N with reference input buffers enabled; Data Format = Bipolar 2's Complement
whismanoid 0:68e64068330f 885 // write8 0x0E PGA = 0x00 to select input path = Buffers, digital gain = 1V/V
whismanoid 0:68e64068330f 886 // write8 0x01 CONV_START = 0x01 to set Conversion Mode = Continuous
whismanoid 0:68e64068330f 887 // read24 0x80|0x38 STATUS (%SW 0xB8 0 0 0)
whismanoid 0:68e64068330f 888 // read24 0x80|0x30 DATA0 (%SW 0xB0 0 0 0)
whismanoid 0:68e64068330f 889 //
whismanoid 0:68e64068330f 890 // @param[in] channel_hi = channel high side
whismanoid 0:68e64068330f 891 // @param[in] channel_lo = channel low side
whismanoid 0:68e64068330f 892 //
whismanoid 0:68e64068330f 893 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 894 uint8_t MAX11410::Configure_Voltage(MAX11410_AINP_SEL_enum_t channel_hi, MAX11410_AINN_SEL_enum_t channel_lo)
whismanoid 0:68e64068330f 895 {
whismanoid 0:68e64068330f 896
whismanoid 0:68e64068330f 897 //----------------------------------------
whismanoid 0:68e64068330f 898 // warning -- WIP work in progress
whismanoid 0:68e64068330f 899 #warning "Not Tested Yet: MAX11410::Configure_Voltage..."
whismanoid 0:68e64068330f 900
whismanoid 0:68e64068330f 901 //----------------------------------------
whismanoid 0:68e64068330f 902 // write8 0x00 PD = 0x03 (Reset Registers; enter Standby mode)
whismanoid 0:68e64068330f 903 RegWrite(CMD_r000_0000_xxxx_xxdd_PD, PD_11_Reset);
whismanoid 0:68e64068330f 904
whismanoid 0:68e64068330f 905 //----------------------------------------
whismanoid 0:68e64068330f 906 // write8 0x00 PD = 0x00 (NOP)
whismanoid 0:68e64068330f 907 RegWrite(CMD_r000_0000_xxxx_xxdd_PD, PD_00_Normal);
whismanoid 0:68e64068330f 908
whismanoid 0:68e64068330f 909 //----------------------------------------
whismanoid 0:68e64068330f 910 // write8 0x08 FILTER = 0x34 to select RATE_0100, LINEF_11_SINC4 60SPS (given CONV_TYPE_01_Continuous)
whismanoid 0:68e64068330f 911 RegWrite(CMD_r000_1000_x0dd_dddd_FILTER, 0x34);
whismanoid 0:68e64068330f 912
whismanoid 0:68e64068330f 913 //----------------------------------------
whismanoid 0:68e64068330f 914 // write8 0x0B MUX_CTRL0 = 0x0A to select AINP=AIN0 and AINN=GND
whismanoid 0:68e64068330f 915 RegWrite(CMD_r000_1011_dddd_dddd_MUX_CTRL0, 0x0A);
whismanoid 0:68e64068330f 916
whismanoid 0:68e64068330f 917 //----------------------------------------
whismanoid 0:68e64068330f 918 // write8 0x09 CTRL = 0x02 to select reference REF2P/REF2N; or CTRL = 0x1A to select reference REF2P/REF2N with reference input buffers enabled; Data Format = Bipolar 2's Complement
whismanoid 0:68e64068330f 919 RegWrite(CMD_r000_1001_dddd_dddd_CTRL, 0x02);
whismanoid 0:68e64068330f 920
whismanoid 0:68e64068330f 921 //----------------------------------------
whismanoid 0:68e64068330f 922 // write8 0x0E PGA = 0x00 to select input path = Buffers, digital gain = 1V/V
whismanoid 0:68e64068330f 923 RegWrite(CMD_r000_1110_xxdd_xddd_PGA, 0x00);
whismanoid 0:68e64068330f 924
whismanoid 0:68e64068330f 925 //----------------------------------------
whismanoid 0:68e64068330f 926 // write8 0x01 CONV_START = 0x01 to set Conversion Mode = Continuous
whismanoid 0:68e64068330f 927 RegWrite(CMD_r000_0001_xddd_xxdd_CONV_START, 0x01);
whismanoid 0:68e64068330f 928
whismanoid 0:68e64068330f 929 //----------------------------------------
whismanoid 0:68e64068330f 930 // read24 0x80|0x38 STATUS (%SW 0xB8 0 0 0)
whismanoid 0:68e64068330f 931 RegRead(CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS, &status);
whismanoid 0:68e64068330f 932
whismanoid 0:68e64068330f 933 //----------------------------------------
whismanoid 0:68e64068330f 934 // read24 0x80|0x30 DATA0 (%SW 0xB0 0 0 0)
whismanoid 0:68e64068330f 935 RegRead(CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0, &data0);
whismanoid 0:68e64068330f 936
whismanoid 0:68e64068330f 937 //----------------------------------------
whismanoid 0:68e64068330f 938 // success
whismanoid 0:68e64068330f 939 return 1;
whismanoid 0:68e64068330f 940 }
whismanoid 0:68e64068330f 941
whismanoid 0:68e64068330f 942 //----------------------------------------
whismanoid 0:68e64068330f 943 // Measure ADC channels in sequence from AIN0 to channelNumber_0_9.
whismanoid 0:68e64068330f 944 // @param[in] channel_hi = channel high side
whismanoid 0:68e64068330f 945 // @param[in] channel_lo = channel low side
whismanoid 0:68e64068330f 946 // @post AINcode[index]: measurement
whismanoid 0:68e64068330f 947 //
whismanoid 0:68e64068330f 948 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 949 uint8_t MAX11410::_TODO_MAX11410_Read_All_Voltages_(MAX11410_AINP_SEL_enum_t channel_hi, MAX11410_AINN_SEL_enum_t channel_lo)
whismanoid 0:68e64068330f 950 {
whismanoid 0:68e64068330f 951
whismanoid 0:68e64068330f 952 //----------------------------------------
whismanoid 0:68e64068330f 953 // warning -- WIP work in progress
whismanoid 0:68e64068330f 954 #warning "Not Tested Yet: MAX11410::_TODO_MAX11410_Read_All_Voltages_..."
whismanoid 0:68e64068330f 955
whismanoid 0:68e64068330f 956 //----------------------------------------
whismanoid 0:68e64068330f 957 // read24 0x80|0x38 STATUS (%SW 0xB8 0 0 0)
whismanoid 0:68e64068330f 958 RegRead(CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS, &status);
whismanoid 0:68e64068330f 959
whismanoid 0:68e64068330f 960 //----------------------------------------
whismanoid 0:68e64068330f 961 // read24 0x80|0x30 DATA0 (%SW 0xB0 0 0 0)
whismanoid 0:68e64068330f 962 RegRead(CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0, &data0);
whismanoid 0:68e64068330f 963
whismanoid 0:68e64068330f 964 //----------------------------------------
whismanoid 0:68e64068330f 965 // success
whismanoid 0:68e64068330f 966 return 1;
whismanoid 0:68e64068330f 967 }
whismanoid 0:68e64068330f 968
whismanoid 0:68e64068330f 969 //----------------------------------------
whismanoid 0:68e64068330f 970 // Trigger Measurement for voltage input.
whismanoid 0:68e64068330f 971 //
whismanoid 0:68e64068330f 972 // Example code for typical voltage measurement.
whismanoid 0:68e64068330f 973 //
whismanoid 0:68e64068330f 974 // @param[in] channel_hi = channel high side
whismanoid 0:68e64068330f 975 // @param[in] channel_lo = channel low side
whismanoid 0:68e64068330f 976 // @post TODO: where does the measurement go? struct member?
whismanoid 0:68e64068330f 977 //
whismanoid 0:68e64068330f 978 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 979 uint8_t MAX11410::Measure_Voltage(MAX11410_AINP_SEL_enum_t channel_hi, MAX11410_AINN_SEL_enum_t channel_lo)
whismanoid 0:68e64068330f 980 {
whismanoid 0:68e64068330f 981
whismanoid 0:68e64068330f 982 //----------------------------------------
whismanoid 0:68e64068330f 983 // warning -- WIP work in progress
whismanoid 0:68e64068330f 984 #warning "Not Tested Yet: MAX11410::Measure_Voltage..."
whismanoid 0:68e64068330f 985
whismanoid 0:68e64068330f 986 //----------------------------------------
whismanoid 0:68e64068330f 987 // read24 0x80|0x38 STATUS (%SW 0xB8 0 0 0)
whismanoid 0:68e64068330f 988 RegRead(CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS, &status);
whismanoid 0:68e64068330f 989
whismanoid 0:68e64068330f 990 //----------------------------------------
whismanoid 0:68e64068330f 991 // read24 0x80|0x30 DATA0 (%SW 0xB0 0 0 0)
whismanoid 0:68e64068330f 992 RegRead(CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0, &data0);
whismanoid 0:68e64068330f 993
whismanoid 0:68e64068330f 994 //----------------------------------------
whismanoid 0:68e64068330f 995 // success
whismanoid 0:68e64068330f 996 return 1;
whismanoid 0:68e64068330f 997 }
whismanoid 0:68e64068330f 998
whismanoid 0:68e64068330f 999 //----------------------------------------
whismanoid 0:68e64068330f 1000 // Configure Measurement for Resistive Temperature Device (RTD).
whismanoid 0:68e64068330f 1001 //
whismanoid 0:68e64068330f 1002 // Example code for typical RTD measurement.
whismanoid 0:68e64068330f 1003 //
whismanoid 0:68e64068330f 1004 // @param[in] channel_RTD_Force = channel RTD high side force
whismanoid 0:68e64068330f 1005 // @param[in] channel_RTD_Hi = channel RTD high side sense
whismanoid 0:68e64068330f 1006 // @param[in] channel_RTD_Lo = channel RTD low side
whismanoid 0:68e64068330f 1007 //
whismanoid 0:68e64068330f 1008 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 1009 uint8_t MAX11410::Configure_RTD(MAX11410_AINP_SEL_enum_t channel_RTD_Force, MAX11410_AINP_SEL_enum_t channel_RTD_Hi, MAX11410_AINN_SEL_enum_t channel_RTD_Lo)
whismanoid 0:68e64068330f 1010 {
whismanoid 0:68e64068330f 1011
whismanoid 0:68e64068330f 1012 //----------------------------------------
whismanoid 0:68e64068330f 1013 // warning -- WIP work in progress
whismanoid 0:68e64068330f 1014 #warning "Not Implemented Yet: MAX11410::Configure_RTD..."
whismanoid 0:68e64068330f 1015
whismanoid 0:68e64068330f 1016 //----------------------------------------
whismanoid 0:68e64068330f 1017 // read24 0x80|0x38 STATUS (%SW 0xB8 0 0 0)
whismanoid 0:68e64068330f 1018 RegRead(CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS, &status);
whismanoid 0:68e64068330f 1019
whismanoid 0:68e64068330f 1020 //----------------------------------------
whismanoid 0:68e64068330f 1021 // read24 0x80|0x30 DATA0 (%SW 0xB0 0 0 0)
whismanoid 0:68e64068330f 1022 RegRead(CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0, &data0);
whismanoid 0:68e64068330f 1023
whismanoid 0:68e64068330f 1024 //----------------------------------------
whismanoid 0:68e64068330f 1025 // success
whismanoid 0:68e64068330f 1026 return 1;
whismanoid 0:68e64068330f 1027 }
whismanoid 0:68e64068330f 1028
whismanoid 0:68e64068330f 1029 //----------------------------------------
whismanoid 0:68e64068330f 1030 // Trigger Measurement for Resistive Temperature Device (RTD).
whismanoid 0:68e64068330f 1031 //
whismanoid 0:68e64068330f 1032 // Example code for typical RTD measurement.
whismanoid 0:68e64068330f 1033 //
whismanoid 0:68e64068330f 1034 // @param[in] channel_RTD_Force = channel RTD high side force
whismanoid 0:68e64068330f 1035 // @param[in] channel_RTD_Hi = channel RTD high side sense
whismanoid 0:68e64068330f 1036 // @param[in] channel_RTD_Lo = channel RTD low side
whismanoid 0:68e64068330f 1037 // @post TODO: where does the measurement go? struct member?
whismanoid 0:68e64068330f 1038 //
whismanoid 0:68e64068330f 1039 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 1040 uint8_t MAX11410::Measure_RTD(MAX11410_AINP_SEL_enum_t channel_RTD_Force, MAX11410_AINP_SEL_enum_t channel_RTD_Hi, MAX11410_AINN_SEL_enum_t channel_RTD_Lo)
whismanoid 0:68e64068330f 1041 {
whismanoid 0:68e64068330f 1042
whismanoid 0:68e64068330f 1043 //----------------------------------------
whismanoid 0:68e64068330f 1044 // warning -- WIP work in progress
whismanoid 0:68e64068330f 1045 #warning "Not Implemented Yet: MAX11410::Measure_RTD..."
whismanoid 0:68e64068330f 1046
whismanoid 0:68e64068330f 1047 //----------------------------------------
whismanoid 0:68e64068330f 1048 // read24 0x80|0x38 STATUS (%SW 0xB8 0 0 0)
whismanoid 0:68e64068330f 1049 RegRead(CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS, &status);
whismanoid 0:68e64068330f 1050
whismanoid 0:68e64068330f 1051 //----------------------------------------
whismanoid 0:68e64068330f 1052 // read24 0x80|0x30 DATA0 (%SW 0xB0 0 0 0)
whismanoid 0:68e64068330f 1053 RegRead(CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0, &data0);
whismanoid 0:68e64068330f 1054
whismanoid 0:68e64068330f 1055 //----------------------------------------
whismanoid 0:68e64068330f 1056 // success
whismanoid 0:68e64068330f 1057 return 1;
whismanoid 0:68e64068330f 1058 }
whismanoid 0:68e64068330f 1059
whismanoid 0:68e64068330f 1060 //----------------------------------------
whismanoid 0:68e64068330f 1061 // Configure Measurement for Thermocouple
whismanoid 0:68e64068330f 1062 //
whismanoid 0:68e64068330f 1063 // Example code for typical Thermocouple measurement.
whismanoid 0:68e64068330f 1064 //
whismanoid 0:68e64068330f 1065 // @param[in] channel_TC_Hi = channel of Thermocouple high side
whismanoid 0:68e64068330f 1066 // @param[in] channel_TC_Lo = channel of Thermocouple low side
whismanoid 0:68e64068330f 1067 // @param[in] channel_RTD_Hi = channel of cold junction RTD high side
whismanoid 0:68e64068330f 1068 // @param[in] channel_RTD_Lo = channel of cold junction RTD low side
whismanoid 0:68e64068330f 1069 //
whismanoid 0:68e64068330f 1070 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 1071 uint8_t MAX11410::Configure_Thermocouple(MAX11410_AINP_SEL_enum_t channel_TC_Hi, MAX11410_AINN_SEL_enum_t channel_TC_Lo, MAX11410_AINP_SEL_enum_t channel_RTD_Hi, MAX11410_AINP_SEL_enum_t channel_RTD_Lo)
whismanoid 0:68e64068330f 1072 {
whismanoid 0:68e64068330f 1073
whismanoid 0:68e64068330f 1074 //----------------------------------------
whismanoid 0:68e64068330f 1075 // warning -- WIP work in progress
whismanoid 0:68e64068330f 1076 #warning "Not Implemented Yet: MAX11410::Configure_Thermocouple..."
whismanoid 0:68e64068330f 1077
whismanoid 0:68e64068330f 1078 //----------------------------------------
whismanoid 0:68e64068330f 1079 // read24 0x80|0x38 STATUS (%SW 0xB8 0 0 0)
whismanoid 0:68e64068330f 1080 RegRead(CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS, &status);
whismanoid 0:68e64068330f 1081
whismanoid 0:68e64068330f 1082 //----------------------------------------
whismanoid 0:68e64068330f 1083 // read24 0x80|0x30 DATA0 (%SW 0xB0 0 0 0)
whismanoid 0:68e64068330f 1084 RegRead(CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0, &data0);
whismanoid 0:68e64068330f 1085
whismanoid 0:68e64068330f 1086 //----------------------------------------
whismanoid 0:68e64068330f 1087 // success
whismanoid 0:68e64068330f 1088 return 1;
whismanoid 0:68e64068330f 1089 }
whismanoid 0:68e64068330f 1090
whismanoid 0:68e64068330f 1091 //----------------------------------------
whismanoid 0:68e64068330f 1092 // Trigger Measurement for Thermocouple
whismanoid 0:68e64068330f 1093 //
whismanoid 0:68e64068330f 1094 // Example code for typical Thermocouple measurement.
whismanoid 0:68e64068330f 1095 //
whismanoid 0:68e64068330f 1096 // @param[in] channel_TC_Hi = channel of Thermocouple high side
whismanoid 0:68e64068330f 1097 // @param[in] channel_TC_Lo = channel of Thermocouple low side
whismanoid 0:68e64068330f 1098 // @param[in] channel_RTD_Hi = channel of cold junction RTD high side
whismanoid 0:68e64068330f 1099 // @param[in] channel_RTD_Lo = channel of cold junction RTD low side
whismanoid 0:68e64068330f 1100 // @post TODO: where does the measurement go? struct member?
whismanoid 0:68e64068330f 1101 //
whismanoid 0:68e64068330f 1102 // @return 1 on success; 0 on failure
whismanoid 0:68e64068330f 1103 uint8_t MAX11410::Measure_Thermocouple(MAX11410_AINP_SEL_enum_t channel_TC_Hi, MAX11410_AINN_SEL_enum_t channel_TC_Lo, MAX11410_AINP_SEL_enum_t channel_RTD_Hi, MAX11410_AINP_SEL_enum_t channel_RTD_Lo)
whismanoid 0:68e64068330f 1104 {
whismanoid 0:68e64068330f 1105
whismanoid 0:68e64068330f 1106 //----------------------------------------
whismanoid 0:68e64068330f 1107 // warning -- WIP work in progress
whismanoid 0:68e64068330f 1108 #warning "Not Implemented Yet: MAX11410::Measure_Thermocouple..."
whismanoid 0:68e64068330f 1109
whismanoid 0:68e64068330f 1110 //----------------------------------------
whismanoid 0:68e64068330f 1111 // read24 0x80|0x38 STATUS (%SW 0xB8 0 0 0)
whismanoid 0:68e64068330f 1112 RegRead(CMD_r011_1000_dddd_dddd_dddd_dddd_dxxx_dddd_STATUS, &status);
whismanoid 0:68e64068330f 1113
whismanoid 0:68e64068330f 1114 //----------------------------------------
whismanoid 0:68e64068330f 1115 // read24 0x80|0x30 DATA0 (%SW 0xB0 0 0 0)
whismanoid 0:68e64068330f 1116 RegRead(CMD_r011_0000_dddd_dddd_dddd_dddd_dddd_dddd_DATA0, &data0);
whismanoid 0:68e64068330f 1117
whismanoid 0:68e64068330f 1118 //----------------------------------------
whismanoid 0:68e64068330f 1119 // success
whismanoid 0:68e64068330f 1120 return 1;
whismanoid 0:68e64068330f 1121 }
whismanoid 0:68e64068330f 1122
whismanoid 0:68e64068330f 1123
whismanoid 0:68e64068330f 1124 // End of file