Maxim Integrated MAX5715 12-bit 4-channel voltage-output DAC
Dependents: MAX5715BOB_Tester MAX5715BOB_12bit_4ch_SPI_DAC MAX5715BOB_Serial_Tester
MAX5715.h@7:3c45adf3efe8, 2019-10-30 (annotated)
- Committer:
- whismanoid
- Date:
- Wed Oct 30 15:33:06 2019 -0700
- Revision:
- 7:3c45adf3efe8
- Parent:
- 5:7894decf9375
comment out optional wait from demo loop
Who changed what in which revision?
User | Revision | Line number | New 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 | 7:3c45adf3efe8 | 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 |