Maxim Integrated MAX5715 12-bit 4-channel voltage-output DAC

Dependents:   MAX5715BOB_Tester MAX5715BOB_12bit_4ch_SPI_DAC MAX5715BOB_Serial_Tester

Committer:
whismanoid
Date:
Fri Sep 27 21:15:44 2019 -0700
Revision:
6:d8d589ad1f5e
Parent:
5:7894decf9375
Child:
7:3c45adf3efe8
Added tag 2019-09-27_r1.0 for changeset 7894decf9375

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 0:777851395940 1 // /*******************************************************************************
whismanoid 0:777851395940 2 // * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 0:777851395940 3 // *
whismanoid 0:777851395940 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 0:777851395940 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 0:777851395940 6 // * to deal in the Software without restriction, including without limitation
whismanoid 0:777851395940 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 0:777851395940 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 0:777851395940 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 0:777851395940 10 // *
whismanoid 0:777851395940 11 // * The above copyright notice and this permission notice shall be included
whismanoid 0:777851395940 12 // * in all copies or substantial portions of the Software.
whismanoid 0:777851395940 13 // *
whismanoid 0:777851395940 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 0:777851395940 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 0:777851395940 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 0:777851395940 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 0:777851395940 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 0:777851395940 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 0:777851395940 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 0:777851395940 21 // *
whismanoid 0:777851395940 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 0:777851395940 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 0:777851395940 24 // * Products, Inc. Branding Policy.
whismanoid 0:777851395940 25 // *
whismanoid 0:777851395940 26 // * The mere transfer of this software does not imply any licenses
whismanoid 0:777851395940 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 0:777851395940 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 0:777851395940 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 0:777851395940 30 // * ownership rights.
whismanoid 0:777851395940 31 // *******************************************************************************
whismanoid 0:777851395940 32 // */
whismanoid 0:777851395940 33 // *********************************************************************
whismanoid 0:777851395940 34 // @file MAX5715.h
whismanoid 0:777851395940 35 // *********************************************************************
whismanoid 0:777851395940 36 // Header file
whismanoid 0:777851395940 37 // DO NOT EDIT; except areas designated "CUSTOMIZE". Automatically generated file.
whismanoid 0:777851395940 38 // generated by XMLSystemOfDevicesToMBED.py
whismanoid 0:777851395940 39 // System Name = ExampleSystem
whismanoid 0:777851395940 40 // System Description = Device driver example
whismanoid 0:777851395940 41 // Device Name = MAX5715
whismanoid 0:777851395940 42 // Device Description = Ultra-Small, 12-Bit, 4-Channel, Buffered Output Voltage DAC with Internal Reference and SPI Interface
whismanoid 5:7894decf9375 43 // Device DeviceBriefDescription = 12-bit 4-ch SPI VOUT DAC
whismanoid 0:777851395940 44 // Device Manufacturer = Maxim Integrated
whismanoid 0:777851395940 45 // Device PartNumber = MAX5715AAUD+
whismanoid 0:777851395940 46 // Device RegValue_Width = DataWidth16bit_HL
whismanoid 0:777851395940 47 //
whismanoid 0:777851395940 48 // DAC NumChannels = 4
whismanoid 0:777851395940 49 // DAC ResolutionBits = 12
whismanoid 0:777851395940 50 //
whismanoid 0:777851395940 51 // SPI CS = ActiveLow
whismanoid 0:777851395940 52 // SPI FrameStart = CS
whismanoid 0:777851395940 53 // SPI CPOL = 1
whismanoid 0:777851395940 54 // SPI CPHA = 0
whismanoid 0:777851395940 55 // SPI MOSI and MISO Data are both stable on Falling edge of SCLK
whismanoid 0:777851395940 56 // SPI SCLK Idle High
whismanoid 0:777851395940 57 // SPI SCLKMaxMHz = 50
whismanoid 0:777851395940 58 // SPI SCLKMinMHz = 0
whismanoid 0:777851395940 59 //
whismanoid 0:777851395940 60
whismanoid 0:777851395940 61
whismanoid 0:777851395940 62 // Prevent multiple declaration
whismanoid 0:777851395940 63 #ifndef __MAX5715_H__
whismanoid 0:777851395940 64 #define __MAX5715_H__
whismanoid 0:777851395940 65
whismanoid 5:7894decf9375 66 // standard include for target platform -- Platform_Include_Boilerplate
whismanoid 0:777851395940 67 #include "mbed.h"
whismanoid 5:7894decf9375 68 // Platforms:
whismanoid 5:7894decf9375 69 // - MAX32625MBED
whismanoid 5:7894decf9375 70 // - supports mbed-os-5.11, requires USBDevice library
whismanoid 5:7894decf9375 71 // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/
whismanoid 5:7894decf9375 72 // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 73 // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 74 // - MAX32600MBED
whismanoid 5:7894decf9375 75 // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 76 // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 77 // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board.
whismanoid 5:7894decf9375 78 // - NUCLEO_F446RE
whismanoid 5:7894decf9375 79 // - remove USBDevice library
whismanoid 5:7894decf9375 80 // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 81 // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 82 // - NUCLEO_F401RE
whismanoid 5:7894decf9375 83 // - remove USBDevice library
whismanoid 5:7894decf9375 84 // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 85 // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 86 // - MAX32630FTHR
whismanoid 5:7894decf9375 87 // - #include "max32630fthr.h"
whismanoid 5:7894decf9375 88 // - add http://os.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 5:7894decf9375 89 // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 90 // - MAX32620FTHR
whismanoid 5:7894decf9375 91 // - #include "MAX32620FTHR.h"
whismanoid 5:7894decf9375 92 // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 93 // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 5:7894decf9375 94 // - not tested yet
whismanoid 5:7894decf9375 95 // - MAX32625PICO
whismanoid 5:7894decf9375 96 // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 97 // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 98 // - not tested yet
whismanoid 5:7894decf9375 99 //
whismanoid 5:7894decf9375 100 // end Platform_Include_Boilerplate
whismanoid 0:777851395940 101
whismanoid 0:777851395940 102 /**
whismanoid 0:777851395940 103 * @brief MAX5715 Ultra-Small, 12-Bit, 4-Channel, Buffered Output Voltage DAC with Internal Reference and SPI Interface
whismanoid 0:777851395940 104 *
whismanoid 1:7a5d38577aa1 105 *
whismanoid 1:7a5d38577aa1 106 *
whismanoid 1:7a5d38577aa1 107 * Datasheet: https://www.maximintegrated.com/MAX5715
whismanoid 1:7a5d38577aa1 108 *
whismanoid 1:7a5d38577aa1 109 *
whismanoid 1:7a5d38577aa1 110 *
whismanoid 0:777851395940 111 * @code
whismanoid 0:777851395940 112 * // example code includes
whismanoid 5:7894decf9375 113 * // standard include for target platform -- Platform_Include_Boilerplate
whismanoid 0:777851395940 114 * #include "mbed.h"
whismanoid 5:7894decf9375 115 * // Platforms:
whismanoid 5:7894decf9375 116 * // - MAX32625MBED
whismanoid 5:7894decf9375 117 * // - supports mbed-os-5.11, requires USBDevice library
whismanoid 5:7894decf9375 118 * // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/
whismanoid 5:7894decf9375 119 * // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 120 * // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 121 * // - MAX32600MBED
whismanoid 5:7894decf9375 122 * // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 123 * // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 124 * // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board.
whismanoid 5:7894decf9375 125 * // - NUCLEO_F446RE
whismanoid 5:7894decf9375 126 * // - remove USBDevice library
whismanoid 5:7894decf9375 127 * // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 128 * // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 129 * // - NUCLEO_F401RE
whismanoid 5:7894decf9375 130 * // - remove USBDevice library
whismanoid 5:7894decf9375 131 * // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 132 * // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 133 * // - MAX32630FTHR
whismanoid 5:7894decf9375 134 * // - #include "max32630fthr.h"
whismanoid 5:7894decf9375 135 * // - add http://os.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 5:7894decf9375 136 * // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 137 * // - MAX32620FTHR
whismanoid 5:7894decf9375 138 * // - #include "MAX32620FTHR.h"
whismanoid 5:7894decf9375 139 * // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 140 * // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 5:7894decf9375 141 * // - not tested yet
whismanoid 5:7894decf9375 142 * // - MAX32625PICO
whismanoid 5:7894decf9375 143 * // - remove max32630fthr library (if present)
whismanoid 5:7894decf9375 144 * // - remove MAX32620FTHR library (if present)
whismanoid 5:7894decf9375 145 * // - not tested yet
whismanoid 5:7894decf9375 146 * //
whismanoid 5:7894decf9375 147 * // end Platform_Include_Boilerplate
whismanoid 0:777851395940 148 * #include "MAX5715.h"
whismanoid 0:777851395940 149 *
whismanoid 0:777851395940 150 * // example code board support
whismanoid 0:777851395940 151 * //MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 0:777851395940 152 * //DigitalOut rLED(LED1);
whismanoid 0:777851395940 153 * //DigitalOut gLED(LED2);
whismanoid 0:777851395940 154 * //DigitalOut bLED(LED3);
whismanoid 0:777851395940 155 * //
whismanoid 0:777851395940 156 * // Arduino "shield" connector port definitions (MAX32625MBED shown)
whismanoid 0:777851395940 157 * #if defined(TARGET_MAX32625MBED)
whismanoid 0:777851395940 158 * #define A0 AIN_0
whismanoid 0:777851395940 159 * #define A1 AIN_1
whismanoid 0:777851395940 160 * #define A2 AIN_2
whismanoid 0:777851395940 161 * #define A3 AIN_3
whismanoid 0:777851395940 162 * #define D0 P0_0
whismanoid 0:777851395940 163 * #define D1 P0_1
whismanoid 0:777851395940 164 * #define D2 P0_2
whismanoid 0:777851395940 165 * #define D3 P0_3
whismanoid 0:777851395940 166 * #define D4 P0_4
whismanoid 0:777851395940 167 * #define D5 P0_5
whismanoid 0:777851395940 168 * #define D6 P0_6
whismanoid 0:777851395940 169 * #define D7 P0_7
whismanoid 0:777851395940 170 * #define D8 P1_4
whismanoid 0:777851395940 171 * #define D9 P1_5
whismanoid 0:777851395940 172 * #define D10 P1_3
whismanoid 0:777851395940 173 * #define D11 P1_1
whismanoid 0:777851395940 174 * #define D12 P1_2
whismanoid 0:777851395940 175 * #define D13 P1_0
whismanoid 0:777851395940 176 * #endif
whismanoid 0:777851395940 177 *
whismanoid 0:777851395940 178 * // example code declare SPI interface
whismanoid 0:777851395940 179 * #if defined(TARGET_MAX32625MBED)
whismanoid 0:777851395940 180 * 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:777851395940 181 * DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
whismanoid 0:777851395940 182 * #elif defined(TARGET_MAX32600MBED)
whismanoid 0:777851395940 183 * SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 0:777851395940 184 * DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 0:777851395940 185 * #else
whismanoid 0:777851395940 186 * SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 0:777851395940 187 * DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
whismanoid 0:777851395940 188 * #endif
whismanoid 0:777851395940 189 *
whismanoid 0:777851395940 190 * // example code declare GPIO interface pins
whismanoid 0:777851395940 191 * DigitalOut LDACb_pin(D9); // Digital Trigger Input to MAX5715 device
whismanoid 0:777851395940 192 * DigitalOut CLRb_pin(D8); // Digital Trigger Input to MAX5715 device
whismanoid 0:777851395940 193 * // AnalogOut REF_pin(Px_x_PortName_To_Be_Determined); // Reference Input to MAX5715 device
whismanoid 0:777851395940 194 * // AnalogIn OUTA_pin(A0); // Analog Output from MAX5715 device
whismanoid 0:777851395940 195 * // AnalogIn OUTB_pin(A1); // Analog Output from MAX5715 device
whismanoid 0:777851395940 196 * // AnalogIn OUTC_pin(A2); // Analog Output from MAX5715 device
whismanoid 0:777851395940 197 * // AnalogIn OUTD_pin(A3); // Analog Output from MAX5715 device
whismanoid 0:777851395940 198 * // DigitalIn RDYb_pin(Px_x_PortName_To_Be_Determined); // Digital MAX5715 Output from MAX5715 device
whismanoid 0:777851395940 199 * // example code declare device instance
whismanoid 0:777851395940 200 * MAX5715 g_MAX5715_device(spi, spi_cs, LDACb_pin, CLRb_pin, MAX5715::MAX5715_IC);
whismanoid 0:777851395940 201 *
whismanoid 0:777851395940 202 * // example code main function
whismanoid 0:777851395940 203 * int main()
whismanoid 0:777851395940 204 * {
whismanoid 0:777851395940 205 * while (1)
whismanoid 0:777851395940 206 * {
whismanoid 0:777851395940 207 * g_MAX5715_device.Init();
whismanoid 0:777851395940 208 *
whismanoid 0:777851395940 209 * g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_2V500);
whismanoid 0:777851395940 210 *
whismanoid 5:7894decf9375 211 * uint16_t ch;
whismanoid 5:7894decf9375 212 * uint16_t code;
whismanoid 0:777851395940 213 * //
whismanoid 5:7894decf9375 214 * ch = 0;
whismanoid 5:7894decf9375 215 * code = 0x0ccc; // 80.0% of full scale REF(2.50V) = 2.00V
whismanoid 0:777851395940 216 * g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:777851395940 217 * //
whismanoid 0:777851395940 218 * ch = 1;
whismanoid 5:7894decf9375 219 * code = 0x07ff; // 50.0% of full scale REF(2.50V) = 1.25V
whismanoid 0:777851395940 220 * g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:777851395940 221 * //
whismanoid 0:777851395940 222 * ch = 2;
whismanoid 5:7894decf9375 223 * code = 0x0666; // 40.0% of full scale REF(2.50V) = 1.00V
whismanoid 0:777851395940 224 * g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:777851395940 225 * //
whismanoid 0:777851395940 226 * ch = 3;
whismanoid 5:7894decf9375 227 * code = 0x0fff; // 100.0% of full scale REF(2.50V) = 2.50V
whismanoid 0:777851395940 228 * g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:777851395940 229 *
whismanoid 0:777851395940 230 * wait(3.0);
whismanoid 0:777851395940 231 * }
whismanoid 0:777851395940 232 * }
whismanoid 0:777851395940 233 * @endcode
whismanoid 0:777851395940 234 */
whismanoid 0:777851395940 235 class MAX5715 {
whismanoid 0:777851395940 236 public:
whismanoid 0:777851395940 237 //----------------------------------------
whismanoid 0:777851395940 238 /// Command Codes (first byte)
whismanoid 0:777851395940 239 ///
whismanoid 0:777851395940 240 /// Naming convention is CMD_bitstream_FUNCTION_NAME
whismanoid 0:777851395940 241 /// - nnnn = channel selection
whismanoid 0:777851395940 242 /// - dcba = channel bitmask
whismanoid 0:777851395940 243 /// - dddd_dddd_dddd = data field
whismanoid 0:777851395940 244 /// - xxxx = don't care
whismanoid 0:777851395940 245 typedef enum MAX5715_CMD_enum_t {
whismanoid 0:777851395940 246 CMD_0000_nnnn_dddd_dddd_dddd_0000_CODEn = 0x00, //!< 8'b00000000
whismanoid 0:777851395940 247 CMD_0001_nnnn_0000_0000_0000_0000_LOADn = 0x10, //!< 8'b00010000
whismanoid 0:777851395940 248 CMD_0010_nnnn_dddd_dddd_dddd_0000_CODEnLOADall = 0x20, //!< 8'b00100000
whismanoid 0:777851395940 249 CMD_0011_nnnn_dddd_dddd_dddd_0000_CODEnLOADn = 0x30, //!< 8'b00110000
whismanoid 0:777851395940 250 CMD_0100_0000_0000_dcba_0000_0000_POWERn_Normal = 0x40, //!< 8'b01000000
whismanoid 0:777851395940 251 CMD_0100_0001_0000_dcba_0000_0000_POWERn_PD1k = 0x41, //!< 8'b01000001
whismanoid 0:777851395940 252 CMD_0100_0010_0000_dcba_0000_0000_POWERn_PD100k = 0x42, //!< 8'b01000010
whismanoid 0:777851395940 253 CMD_0100_0011_0000_dcba_0000_0000_POWERn_PDHiZ = 0x43, //!< 8'b01000011
whismanoid 0:777851395940 254 CMD_0101_0000_0000_0000_0000_0000_SW_CLEAR = 0x50, //!< 8'b01010000
whismanoid 0:777851395940 255 CMD_0101_0001_0000_0000_0000_0000_SW_RESET = 0x51, //!< 8'b01010001
whismanoid 0:777851395940 256 CMD_0110_0000_0000_dcba_0000_0000_CONFIGn_LATCHED = 0x60, //!< 8'b01100000
whismanoid 0:777851395940 257 CMD_0110_0001_0000_dcba_0000_0000_CONFIGn_TRANSPARENT = 0x61, //!< 8'b01100001
whismanoid 0:777851395940 258 CMD_0110_1000_0000_0000_0000_0000_CONFIGall_LATCHED = 0x68, //!< 8'b01101000
whismanoid 0:777851395940 259 CMD_0110_1001_0000_0000_0000_0000_CONFIGall_TRANSPARENT = 0x69, //!< 8'b01101001
whismanoid 0:777851395940 260 CMD_0111_0000_0000_0000_0000_0000_REF_EXT = 0x70, //!< 8'b01110000
whismanoid 0:777851395940 261 CMD_0111_0001_0000_0000_0000_0000_REF_2V500 = 0x71, //!< 8'b01110001
whismanoid 0:777851395940 262 CMD_0111_0010_0000_0000_0000_0000_REF_2V048 = 0x72, //!< 8'b01110010
whismanoid 0:777851395940 263 CMD_0111_0011_0000_0000_0000_0000_REF_4V096 = 0x73, //!< 8'b01110011
whismanoid 0:777851395940 264 CMD_0111_0100_0000_0000_0000_0000_REF_AlwaysOn_EXT = 0x74, //!< 8'b01110100
whismanoid 0:777851395940 265 CMD_0111_0101_0000_0000_0000_0000_REF_AlwaysOn_2V500 = 0x75, //!< 8'b01110101
whismanoid 0:777851395940 266 CMD_0111_0110_0000_0000_0000_0000_REF_AlwaysOn_2V048 = 0x76, //!< 8'b01110110
whismanoid 0:777851395940 267 CMD_0111_0111_0000_0000_0000_0000_REF_AlwaysOn_4V096 = 0x77, //!< 8'b01110111
whismanoid 0:777851395940 268 CMD_1000_0000_dddd_dddd_dddd_0000_CODEall = 0x80, //!< 8'b10000000
whismanoid 0:777851395940 269 CMD_1000_0001_0000_0000_0000_0000_LOADall = 0x81, //!< 8'b10000001
whismanoid 0:777851395940 270 CMD_1000_0010_dddd_dddd_dddd_0000_CODEallLOADall = 0x82, //!< 8'b10000010
whismanoid 0:777851395940 271 CMD_1000_0011_dddd_dddd_dddd_0000_CODEallLOADall = 0x83, //!< 8'b10000011
whismanoid 0:777851395940 272 CMD_1001_xxxx_NOP = 0x90, //!< 8'b10010000
whismanoid 0:777851395940 273 CMD_1010_xxxx_NOP = 0xa0, //!< 8'b10100000
whismanoid 0:777851395940 274 CMD_1011_xxxx_NOP = 0xb0, //!< 8'b10110000
whismanoid 0:777851395940 275 CMD_1100_xxxx_NOP = 0xc0, //!< 8'b11000000
whismanoid 0:777851395940 276 CMD_1101_xxxx_NOP = 0xd0, //!< 8'b11010000
whismanoid 0:777851395940 277 CMD_1110_xxxx_NOP = 0xe0, //!< 8'b11100000
whismanoid 0:777851395940 278 CMD_1111_xxxx_NOP = 0xf0, //!< 8'b11110000
whismanoid 0:777851395940 279 } MAX5715_CMD_enum_t;
whismanoid 0:777851395940 280
whismanoid 0:777851395940 281 //----------------------------------------
whismanoid 0:777851395940 282 /// Argument to POWER function
whismanoid 0:777851395940 283 typedef enum MAX5715_POWER_enum_t {
whismanoid 0:777851395940 284 POWERn_Normal = 0x00, //!< 8'b00000000
whismanoid 0:777851395940 285 POWERn_PD1k = 0x01, //!< 8'b00000001
whismanoid 0:777851395940 286 POWERn_PD100k = 0x02, //!< 8'b00000010
whismanoid 0:777851395940 287 POWERn_PDHiZ = 0x03, //!< 8'b00000011
whismanoid 0:777851395940 288 } MAX5715_POWER_enum_t;
whismanoid 0:777851395940 289
whismanoid 0:777851395940 290 //----------------------------------------
whismanoid 0:777851395940 291 /// Argument to REF function ( external? voltage? always on? )
whismanoid 0:777851395940 292 typedef enum MAX5715_REF_enum_t {
whismanoid 0:777851395940 293 REF_EXT = 0x00, //!< 8'b00000000
whismanoid 0:777851395940 294 REF_2V500 = 0x01, //!< 8'b00000001
whismanoid 0:777851395940 295 REF_2V048 = 0x02, //!< 8'b00000010
whismanoid 0:777851395940 296 REF_4V096 = 0x03, //!< 8'b00000011
whismanoid 0:777851395940 297 REF_AlwaysOn_EXT = 0x04, //!< 8'b00000100
whismanoid 0:777851395940 298 REF_AlwaysOn_2V500 = 0x05, //!< 8'b00000101
whismanoid 0:777851395940 299 REF_AlwaysOn_2V048 = 0x06, //!< 8'b00000110
whismanoid 0:777851395940 300 REF_AlwaysOn_4V096 = 0x07, //!< 8'b00000111
whismanoid 0:777851395940 301 } MAX5715_REF_enum_t;
whismanoid 0:777851395940 302
whismanoid 0:777851395940 303 /**
whismanoid 0:777851395940 304 * @brief IC's supported with this driver
whismanoid 0:777851395940 305 * @details MAX5715
whismanoid 0:777851395940 306 */
whismanoid 0:777851395940 307 typedef enum
whismanoid 0:777851395940 308 {
whismanoid 0:777851395940 309 MAX5715_IC = 0,
whismanoid 0:777851395940 310 //MAX5715_IC = 1
whismanoid 0:777851395940 311 } MAX5715_ic_t;
whismanoid 0:777851395940 312
whismanoid 0:777851395940 313 /**********************************************************//**
whismanoid 0:777851395940 314 * @brief Constructor for MAX5715 Class.
whismanoid 0:777851395940 315 *
whismanoid 0:777851395940 316 * @details Requires an existing SPI object as well as a DigitalOut object.
whismanoid 0:777851395940 317 * The DigitalOut object is used for a chip enable signal
whismanoid 0:777851395940 318 *
whismanoid 0:777851395940 319 * On Entry:
whismanoid 0:777851395940 320 * @param[in] spi - pointer to existing SPI object
whismanoid 0:777851395940 321 * @param[in] cs_pin - pointer to a DigitalOut pin object
whismanoid 0:777851395940 322 * @param[in] LDACb_pin - pointer to a DigitalOut pin object
whismanoid 0:777851395940 323 * @param[in] CLRb_pin - pointer to a DigitalOut pin object
whismanoid 0:777851395940 324 * @param[in] ic_variant - which type of MAX5715 is used
whismanoid 0:777851395940 325 *
whismanoid 0:777851395940 326 * On Exit:
whismanoid 0:777851395940 327 *
whismanoid 0:777851395940 328 * @return None
whismanoid 0:777851395940 329 **************************************************************/
whismanoid 0:777851395940 330 MAX5715(SPI &spi, DigitalOut &cs_pin, // SPI interface
whismanoid 0:777851395940 331 DigitalOut &LDACb_pin, // Digital Trigger Input to MAX5715 device
whismanoid 0:777851395940 332 DigitalOut &CLRb_pin, // Digital Trigger Input to MAX5715 device
whismanoid 0:777851395940 333 // AnalogOut &REF_pin, // Reference Input to MAX5715 device
whismanoid 0:777851395940 334 // AnalogIn &OUTA_pin, // Analog Output from MAX5715 device
whismanoid 0:777851395940 335 // AnalogIn &OUTB_pin, // Analog Output from MAX5715 device
whismanoid 0:777851395940 336 // AnalogIn &OUTC_pin, // Analog Output from MAX5715 device
whismanoid 0:777851395940 337 // AnalogIn &OUTD_pin, // Analog Output from MAX5715 device
whismanoid 5:7894decf9375 338 // DigitalIn &RDYb_pin, // Digital DaisyChain Output from MAX5715 device
whismanoid 0:777851395940 339 MAX5715_ic_t ic_variant);
whismanoid 0:777851395940 340
whismanoid 0:777851395940 341 /************************************************************
whismanoid 0:777851395940 342 * @brief Default destructor for MAX5715 Class.
whismanoid 0:777851395940 343 *
whismanoid 0:777851395940 344 * @details Destroys SPI object if owner
whismanoid 0:777851395940 345 *
whismanoid 0:777851395940 346 * On Entry:
whismanoid 0:777851395940 347 *
whismanoid 0:777851395940 348 * On Exit:
whismanoid 0:777851395940 349 *
whismanoid 0:777851395940 350 * @return None
whismanoid 0:777851395940 351 **************************************************************/
whismanoid 0:777851395940 352 ~MAX5715();
whismanoid 0:777851395940 353
whismanoid 5:7894decf9375 354 /// Function pointer void f(size_t byteCount, uint8_t mosiData[], uint8_t misoData[])
whismanoid 5:7894decf9375 355 Callback<void(size_t, uint8_t*, uint8_t*)> onSPIprint; //!< optional @ref onSPIprint SPI diagnostic function
whismanoid 5:7894decf9375 356
whismanoid 5:7894decf9375 357 /// set SPI SCLK frequency
whismanoid 0:777851395940 358 void spi_frequency(int spi_sclk_Hz);
whismanoid 0:777851395940 359
whismanoid 0:777851395940 360 //----------------------------------------
whismanoid 0:777851395940 361 public:
whismanoid 0:777851395940 362
whismanoid 0:777851395940 363 /// reference voltage, in Volts
whismanoid 0:777851395940 364 double VRef;
whismanoid 0:777851395940 365
whismanoid 5:7894decf9375 366 /// DAC Selection: 0=OUTA, 1=OUTB, 2=OUTC, 3=OUTD, 4..15=ALL OUTA,OUTB,OUTC,OUTD; shadow of channel_0_3
whismanoid 0:777851395940 367 uint8_t channelNumber_0_3;
whismanoid 0:777851395940 368
whismanoid 0:777851395940 369 /// channel bitmask channel_dcba: 1=OUTA, 2=OUTB, 4=OUTC, 8=OUTD
whismanoid 0:777851395940 370 uint8_t channels_bitmask_DCBA;
whismanoid 0:777851395940 371
whismanoid 0:777851395940 372 /// shadow of write-only register CODE[channel_0_3] CMD_0010_nnnn
whismanoid 0:777851395940 373 int16_t Shadow_0010_nnnn_CODE[4];
whismanoid 0:777851395940 374
whismanoid 0:777851395940 375 /// shadow of write-only register POWER[channel_0_3] CMD_0100_00pp
whismanoid 0:777851395940 376 int16_t Shadow_0100_00pp_POWER[4];
whismanoid 0:777851395940 377
whismanoid 0:777851395940 378 /// shadow of write-only register CONFIG[channel_0_3] CMD_0110_a00t
whismanoid 0:777851395940 379 int16_t Shadow_0110_a00t_CONFIG[4];
whismanoid 0:777851395940 380
whismanoid 0:777851395940 381 /// shadow of write-only register REF CMD_0111_0rrr
whismanoid 0:777851395940 382 int16_t Shadow_0111_0rrr_REF;
whismanoid 0:777851395940 383
whismanoid 5:7894decf9375 384 /// shadow of dacCodeLsbs; CODE field of write-only register CODE[channel_0_3] CMD_0010_nnnn
whismanoid 0:777851395940 385 int16_t CODE[4];
whismanoid 0:777851395940 386
whismanoid 0:777851395940 387
whismanoid 0:777851395940 388 //----------------------------------------
whismanoid 0:777851395940 389 // Assert SPI Chip Select
whismanoid 0:777851395940 390 // SPI chip-select for MAX5715
whismanoid 0:777851395940 391 //
whismanoid 0:777851395940 392 void SPIoutputCS(int isLogicHigh);
whismanoid 0:777851395940 393
whismanoid 0:777851395940 394 //----------------------------------------
whismanoid 0:777851395940 395 // SPI write 24 bits
whismanoid 0:777851395940 396 // SPI interface to MAX5715 shift 24 bits mosiData into MAX5715 DIN
whismanoid 0:777851395940 397 //
whismanoid 0:777851395940 398 void SPIwrite24bits(int8_t mosiData8_FF0000, int16_t mosiData16_00FFFF);
whismanoid 0:777851395940 399
whismanoid 0:777851395940 400 //----------------------------------------
whismanoid 0:777851395940 401 // Assert MAX5715 LDAC pin : High = inactive, Low = load DAC.
whismanoid 0:777851395940 402 //
whismanoid 0:777851395940 403 void LDACboutputValue(int isLogicHigh);
whismanoid 0:777851395940 404
whismanoid 0:777851395940 405 //----------------------------------------
whismanoid 0:777851395940 406 // Assert MAX5715 CLR pin : High = inactive, Low = clear DAC.
whismanoid 0:777851395940 407 //
whismanoid 0:777851395940 408 void CLRboutputValue(int isLogicHigh);
whismanoid 0:777851395940 409
whismanoid 0:777851395940 410 private:
whismanoid 0:777851395940 411 // SPI object
whismanoid 0:777851395940 412 SPI &m_spi;
whismanoid 0:777851395940 413 int m_SPI_SCLK_Hz;
whismanoid 0:777851395940 414 int m_SPI_dataMode;
whismanoid 0:777851395940 415 int m_SPI_cs_state;
whismanoid 0:777851395940 416
whismanoid 0:777851395940 417 // Selector pin object
whismanoid 0:777851395940 418 DigitalOut &m_cs_pin;
whismanoid 0:777851395940 419
whismanoid 0:777851395940 420 // InputPin Name = LDAC#
whismanoid 0:777851395940 421 // InputPin Description = Dedicated Active-Low Asynchronous Load DAC.
whismanoid 0:777851395940 422 // InputPin Function = Trigger
whismanoid 0:777851395940 423 DigitalOut &m_LDACb_pin;
whismanoid 0:777851395940 424 //
whismanoid 0:777851395940 425 // InputPin Name = CLR#
whismanoid 0:777851395940 426 // InputPin Description = Active-Low Clear Input.
whismanoid 0:777851395940 427 // InputPin Function = Trigger
whismanoid 0:777851395940 428 DigitalOut &m_CLRb_pin;
whismanoid 0:777851395940 429 //
whismanoid 0:777851395940 430 // InputPin Name = REF
whismanoid 0:777851395940 431 // InputPin Description = Reference Voltage Input/Output.
whismanoid 0:777851395940 432 // Software selectable to be external reference or internal 2.048V, 2.500V, or 4.096V reference.
whismanoid 0:777851395940 433 // Default is external reference mode.
whismanoid 0:777851395940 434 // InputPin Function = Reference
whismanoid 0:777851395940 435 // AnalogOut &m_REF_pin;
whismanoid 0:777851395940 436 //
whismanoid 0:777851395940 437 // OutputPin Name = OUTA
whismanoid 0:777851395940 438 // OutputPin Description = Buffered Channel A DAC Output
whismanoid 0:777851395940 439 // OutputPin Function = Analog
whismanoid 0:777851395940 440 // AnalogIn &m_OUTA_pin;
whismanoid 0:777851395940 441 //
whismanoid 0:777851395940 442 // OutputPin Name = OUTB
whismanoid 0:777851395940 443 // OutputPin Description = Buffered Channel B DAC Output
whismanoid 0:777851395940 444 // OutputPin Function = Analog
whismanoid 0:777851395940 445 // AnalogIn &m_OUTB_pin;
whismanoid 0:777851395940 446 //
whismanoid 0:777851395940 447 // OutputPin Name = OUTC
whismanoid 0:777851395940 448 // OutputPin Description = Buffered Channel C DAC Output
whismanoid 0:777851395940 449 // OutputPin Function = Analog
whismanoid 0:777851395940 450 // AnalogIn &m_OUTC_pin;
whismanoid 0:777851395940 451 //
whismanoid 0:777851395940 452 // OutputPin Name = OUTD
whismanoid 0:777851395940 453 // OutputPin Description = Buffered Channel D DAC Output
whismanoid 0:777851395940 454 // OutputPin Function = Analog
whismanoid 0:777851395940 455 // AnalogIn &m_OUTD_pin;
whismanoid 0:777851395940 456 //
whismanoid 0:777851395940 457 // OutputPin Name = RDY#
whismanoid 0:777851395940 458 // OutputPin Description = SPI RDY Output. In daisy-chained applications connect RDY to the CSB of the next device in the chain.
whismanoid 0:777851395940 459 // OutputPin Function = DaisyChain
whismanoid 0:777851395940 460 // DigitalIn &m_RDYb_pin;
whismanoid 0:777851395940 461 //
whismanoid 0:777851395940 462
whismanoid 0:777851395940 463 // Identifies which IC variant is being used
whismanoid 0:777851395940 464 MAX5715_ic_t m_ic_variant;
whismanoid 0:777851395940 465
whismanoid 0:777851395940 466 public:
whismanoid 0:777851395940 467
whismanoid 0:777851395940 468 //----------------------------------------
whismanoid 5:7894decf9375 469 /// Menu item '!'
whismanoid 0:777851395940 470 /// Initialize device
whismanoid 0:777851395940 471 /// @return 1 on success; 0 on failure
whismanoid 0:777851395940 472 uint8_t Init(void);
whismanoid 0:777851395940 473
whismanoid 0:777851395940 474 //----------------------------------------
whismanoid 0:777851395940 475 /// Return the DAC register value corresponding to physical voltage.
whismanoid 0:777851395940 476 /// Does not perform any offset or gain correction.
whismanoid 0:777851395940 477 ///
whismanoid 0:777851395940 478 /// @pre g_MAX5715_device.VRef = Voltage of REF input, in Volts
whismanoid 0:777851395940 479 /// @param[in] voltage = physical voltage in Volts
whismanoid 0:777851395940 480 /// @return raw 12-bit MAX5715 code (right justified).
whismanoid 0:777851395940 481 uint16_t DACCodeOfVoltage(double voltageV);
whismanoid 0:777851395940 482
whismanoid 0:777851395940 483 //----------------------------------------
whismanoid 0:777851395940 484 /// Return the physical voltage corresponding to DAC register.
whismanoid 0:777851395940 485 /// Does not perform any offset or gain correction.
whismanoid 0:777851395940 486 ///
whismanoid 0:777851395940 487 /// @pre g_MAX5715_device.VRef = Voltage of REF input, in Volts
whismanoid 0:777851395940 488 /// @param[in] value_u12: raw 12-bit MAX5715 code (right justified).
whismanoid 0:777851395940 489 /// @return physical voltage corresponding to MAX5715 code.
whismanoid 0:777851395940 490 double VoltageOfCode(uint16_t value_u12);
whismanoid 0:777851395940 491
whismanoid 0:777851395940 492 //----------------------------------------
whismanoid 0:777851395940 493 /// CMD_1000_0000_dddd_dddd_dddd_0000_CODEall
whismanoid 0:777851395940 494 ///
whismanoid 0:777851395940 495 /// Writes data to all CODE registers
whismanoid 0:777851395940 496 /// @post updates g_MAX5815_device.Shadow_0010_nnnn_CODE[0..3]
whismanoid 0:777851395940 497 /// @post updates g_MAX5815_device.CODE[0..3]
whismanoid 0:777851395940 498 void CODEall(uint16_t dacCodeLsbs);
whismanoid 0:777851395940 499
whismanoid 0:777851395940 500 //----------------------------------------
whismanoid 0:777851395940 501 /// CMD_0000_nnnn_dddd_dddd_dddd_0000_CODEn
whismanoid 0:777851395940 502 ///
whismanoid 0:777851395940 503 /// Writes data to the selected CODE register(s)
whismanoid 0:777851395940 504 ///
whismanoid 0:777851395940 505 /// @param[in] channel_0_3 = DAC Selection: 0=OUTA, 1=OUTB, 2=OUTC, 3=OUTD, 4..15=ALL OUTA,OUTB,OUTC,OUTD
whismanoid 0:777851395940 506 /// @post updates g_MAX5815_device.Shadow_0010_nnnn_CODE[0..3]
whismanoid 0:777851395940 507 /// @post updates g_MAX5815_device.CODE[0..3]
whismanoid 0:777851395940 508 void CODEn(uint8_t channel_0_3, uint16_t dacCodeLsbs);
whismanoid 0:777851395940 509
whismanoid 0:777851395940 510 //----------------------------------------
whismanoid 0:777851395940 511 /// CMD_1000_0010_dddd_dddd_dddd_0000_CODEallLOADall
whismanoid 0:777851395940 512 ///
whismanoid 0:777851395940 513 /// Simultaneously writes data to all CODE registers while updating all DAC registers
whismanoid 0:777851395940 514 /// @post updates g_MAX5815_device.Shadow_0010_nnnn_CODE[0..3]
whismanoid 0:777851395940 515 /// @post updates g_MAX5815_device.CODE[0..3]
whismanoid 0:777851395940 516 void CODEallLOADall(uint16_t dacCodeLsbs);
whismanoid 0:777851395940 517
whismanoid 0:777851395940 518 //----------------------------------------
whismanoid 0:777851395940 519 /// CMD_0010_nnnn_dddd_dddd_dddd_0000_CODEnLOADall
whismanoid 0:777851395940 520 ///
whismanoid 0:777851395940 521 /// Simultaneously writes data to the selected CODE register(s) while updating all DAC registers.
whismanoid 0:777851395940 522 ///
whismanoid 0:777851395940 523 /// @param[in] channel_0_3 = DAC Selection: 0=OUTA, 1=OUTB, 2=OUTC, 3=OUTD, 4..15=ALL OUTA,OUTB,OUTC,OUTD
whismanoid 0:777851395940 524 /// @post updates g_MAX5815_device.Shadow_0010_nnnn_CODE[0..3]
whismanoid 0:777851395940 525 /// @post updates g_MAX5815_device.CODE[0..3]
whismanoid 0:777851395940 526 void CODEnLOADall(uint8_t channel_0_3, uint16_t dacCodeLsbs);
whismanoid 0:777851395940 527
whismanoid 0:777851395940 528 //----------------------------------------
whismanoid 0:777851395940 529 /// CMD_0011_nnnn_dddd_dddd_dddd_0000_CODEnLOADn
whismanoid 0:777851395940 530 ///
whismanoid 0:777851395940 531 /// Simultaneously writes data to the selected CODE register(s) while updating selected DAC register(s)
whismanoid 0:777851395940 532 ///
whismanoid 0:777851395940 533 /// @param[in] channel_0_3 = DAC Selection: 0=OUTA, 1=OUTB, 2=OUTC, 3=OUTD, 4..15=ALL OUTA,OUTB,OUTC,OUTD
whismanoid 0:777851395940 534 /// @post updates g_MAX5815_device.Shadow_0010_nnnn_CODE[0..3]
whismanoid 0:777851395940 535 /// @post updates g_MAX5815_device.CODE[0..3]
whismanoid 0:777851395940 536 void CODEnLOADn(uint8_t channel_0_3, uint16_t dacCodeLsbs);
whismanoid 0:777851395940 537
whismanoid 0:777851395940 538 //----------------------------------------
whismanoid 0:777851395940 539 /// CMD_0110_0000_0000_dcba_0000_0000_CONFIGn_LATCHED
whismanoid 0:777851395940 540 ///
whismanoid 0:777851395940 541 /// Sets the DAC Latch Mode of the selected DACs.
whismanoid 0:777851395940 542 /// Only DACS with a 1 in the selection bit are updated by the command.
whismanoid 0:777851395940 543 /// LD_EN = 0: DAC latch is operational (LOAD and LDAC controlled)
whismanoid 0:777851395940 544 ///
whismanoid 0:777851395940 545 /// @param[in] channels_bitmask_DCBA = channel select bitmap
whismanoid 0:777851395940 546 /// bit 1000 = channel D
whismanoid 0:777851395940 547 /// bit 0100 = channel C
whismanoid 0:777851395940 548 /// bit 0010 = channel B
whismanoid 0:777851395940 549 /// bit 0001 = channel A
whismanoid 0:777851395940 550 void CONFIGn_LATCHED(uint8_t channels_bitmask_DCBA);
whismanoid 0:777851395940 551
whismanoid 0:777851395940 552 //----------------------------------------
whismanoid 0:777851395940 553 /// CMD_0110_0001_0000_dcba_0000_0000_CONFIGn_TRANSPARENT
whismanoid 0:777851395940 554 ///
whismanoid 0:777851395940 555 /// Sets the DAC Latch Mode of the selected DACs.
whismanoid 0:777851395940 556 /// Only DACS with a 1 in the selection bit are updated by the command.
whismanoid 0:777851395940 557 /// LD_EN = 1: DAC latch is transparent
whismanoid 0:777851395940 558 ///
whismanoid 0:777851395940 559 /// @param[in] channels_bitmask_DCBA = channel select bitmap
whismanoid 0:777851395940 560 /// bit 1000 = channel D
whismanoid 0:777851395940 561 /// bit 0100 = channel C
whismanoid 0:777851395940 562 /// bit 0010 = channel B
whismanoid 0:777851395940 563 /// bit 0001 = channel A
whismanoid 0:777851395940 564 void CONFIGn_TRANSPARENT(uint8_t channels_bitmask_DCBA);
whismanoid 0:777851395940 565
whismanoid 0:777851395940 566 //----------------------------------------
whismanoid 0:777851395940 567 /// CMD_0110_1000_0000_0000_0000_0000_CONFIGall_LATCHED
whismanoid 0:777851395940 568 ///
whismanoid 0:777851395940 569 /// Sets the DAC Latch Mode of all DACs.
whismanoid 0:777851395940 570 /// LD_EN = 0: DAC latch is operational (LOAD and LDAC controlled)
whismanoid 0:777851395940 571 void CONFIGall_LATCHED(void);
whismanoid 0:777851395940 572
whismanoid 0:777851395940 573 //----------------------------------------
whismanoid 0:777851395940 574 /// CMD_0110_1001_0000_0000_0000_0000_CONFIGall_TRANSPARENT
whismanoid 0:777851395940 575 ///
whismanoid 0:777851395940 576 /// Sets the DAC Latch Mode of all DACs.
whismanoid 0:777851395940 577 /// LD_EN = 1: DAC latch is transparent
whismanoid 0:777851395940 578 void CONFIGall_TRANSPARENT(void);
whismanoid 0:777851395940 579
whismanoid 0:777851395940 580 //----------------------------------------
whismanoid 0:777851395940 581 /// CMD_1000_0001_0000_0000_0000_0000_LOADall
whismanoid 0:777851395940 582 ///
whismanoid 0:777851395940 583 /// Updates all DAC latches with current CODE register data
whismanoid 0:777851395940 584 void LOADall(void);
whismanoid 0:777851395940 585
whismanoid 0:777851395940 586 //----------------------------------------
whismanoid 0:777851395940 587 /// CMD_0001_nnnn_0000_0000_0000_0000_LOADn
whismanoid 0:777851395940 588 ///
whismanoid 0:777851395940 589 /// Transfers data from the selected CODE register(s) to the selected DAC register(s).
whismanoid 0:777851395940 590 ///
whismanoid 0:777851395940 591 /// @param[in] channel_0_3 = DAC Selection: 0=OUTA, 1=OUTB, 2=OUTC, 3=OUTD, 4..15=ALL OUTA,OUTB,OUTC,OUTD
whismanoid 0:777851395940 592 void LOADn(uint8_t channel_0_3);
whismanoid 0:777851395940 593
whismanoid 0:777851395940 594 //----------------------------------------
whismanoid 0:777851395940 595 /// CMD_0100_0000_0000_dcba_0000_0000_POWERn_Normal
whismanoid 5:7894decf9375 596 /// CMD_0100_0001_0000_dcba_0000_0000_POWERn_PD1k
whismanoid 5:7894decf9375 597 /// CMD_0100_0010_0000_dcba_0000_0000_POWERn_PD100k
whismanoid 5:7894decf9375 598 /// CMD_0100_0011_0000_dcba_0000_0000_POWERn_PDHiZ
whismanoid 0:777851395940 599 ///
whismanoid 0:777851395940 600 /// Sets the power mode of the selected DACs
whismanoid 0:777851395940 601 /// (DACs selected with a 1 in the corresponding DACn bit are updated,
whismanoid 0:777851395940 602 /// DACs with a 0 in the corresponding DACn bit are not impacted)
whismanoid 0:777851395940 603 ///
whismanoid 0:777851395940 604 /// @param[in] channels_bitmask_DCBA = channel select bitmap
whismanoid 0:777851395940 605 /// bit 1000 = channel D
whismanoid 0:777851395940 606 /// bit 0100 = channel C
whismanoid 0:777851395940 607 /// bit 0010 = channel B
whismanoid 0:777851395940 608 /// bit 0001 = channel A
whismanoid 0:777851395940 609 /// @param[in] powerValue = power configuration for selected channel
whismanoid 0:777851395940 610 void POWER(uint8_t channels_bitmask_DCBA, MAX5715_POWER_enum_t powerValue);
whismanoid 0:777851395940 611
whismanoid 0:777851395940 612 //----------------------------------------
whismanoid 0:777851395940 613 /// CMD_0111_0000_0000_0000_0000_0000_REF_EXT
whismanoid 0:777851395940 614 /// CMD_0111_0001_0000_0000_0000_0000_REF_2V500
whismanoid 0:777851395940 615 /// CMD_0111_0010_0000_0000_0000_0000_REF_2V048
whismanoid 0:777851395940 616 /// CMD_0111_0011_0000_0000_0000_0000_REF_4V096
whismanoid 0:777851395940 617 /// CMD_0111_0100_0000_0000_0000_0000_REF_AlwaysOn_EXT
whismanoid 0:777851395940 618 /// CMD_0111_0101_0000_0000_0000_0000_REF_AlwaysOn_2V500
whismanoid 0:777851395940 619 /// CMD_0111_0110_0000_0000_0000_0000_REF_AlwaysOn_2V048
whismanoid 0:777851395940 620 /// CMD_0111_0111_0000_0000_0000_0000_REF_AlwaysOn_4V096
whismanoid 0:777851395940 621 ///
whismanoid 0:777851395940 622 /// Sets the reference operating mode.
whismanoid 0:777851395940 623 /// REF Power (B18): 0 = Internal reference is only powered if at least one DAC is powered
whismanoid 0:777851395940 624 /// 1 = Internal reference is always powered
whismanoid 5:7894decf9375 625 void REF(MAX5715_REF_enum_t ref);
whismanoid 0:777851395940 626
whismanoid 0:777851395940 627 //----------------------------------------
whismanoid 0:777851395940 628 /// CMD_0101_0000_0000_0000_0000_0000_SW_CLEAR
whismanoid 0:777851395940 629 ///
whismanoid 0:777851395940 630 /// Software Clear
whismanoid 0:777851395940 631 /// All CODE and DAC registers cleared to their default values.
whismanoid 0:777851395940 632 ///
whismanoid 0:777851395940 633 /// @return 1 on success; 0 on failure
whismanoid 0:777851395940 634 uint8_t SW_CLEAR(void);
whismanoid 0:777851395940 635
whismanoid 0:777851395940 636 //----------------------------------------
whismanoid 0:777851395940 637 /// CMD_0101_0001_0000_0000_0000_0000_SW_RESET
whismanoid 0:777851395940 638 ///
whismanoid 0:777851395940 639 /// Software Reset
whismanoid 0:777851395940 640 /// All CODE, DAC, and control registers returned to their default values,
whismanoid 0:777851395940 641 /// simulating a power cycle reset.
whismanoid 0:777851395940 642 ///
whismanoid 0:777851395940 643 /// @return 1 on success; 0 on failure
whismanoid 0:777851395940 644 uint8_t SW_RESET(void);
whismanoid 0:777851395940 645
whismanoid 0:777851395940 646 }; // end of class MAX5715
whismanoid 0:777851395940 647
whismanoid 0:777851395940 648 #endif // __MAX5715_H__
whismanoid 0:777851395940 649
whismanoid 0:777851395940 650 // End of file