repo time

Dependencies:   mbed MAX14720 MAX30205 USBDevice

Committer:
darienf
Date:
Tue Apr 06 06:41:40 2021 +0000
Revision:
20:6d2af70c92ab
another repo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
darienf 20:6d2af70c92ab 1 /*******************************************************************************
darienf 20:6d2af70c92ab 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All rights Reserved.
darienf 20:6d2af70c92ab 3 *
darienf 20:6d2af70c92ab 4 * This software is protected by copyright laws of the United States and
darienf 20:6d2af70c92ab 5 * of foreign countries. This material may also be protected by patent laws
darienf 20:6d2af70c92ab 6 * and technology transfer regulations of the United States and of foreign
darienf 20:6d2af70c92ab 7 * countries. This software is furnished under a license agreement and/or a
darienf 20:6d2af70c92ab 8 * nondisclosure agreement and may only be used or reproduced in accordance
darienf 20:6d2af70c92ab 9 * with the terms of those agreements. Dissemination of this information to
darienf 20:6d2af70c92ab 10 * any party or parties not specified in the license agreement and/or
darienf 20:6d2af70c92ab 11 * nondisclosure agreement is expressly prohibited.
darienf 20:6d2af70c92ab 12 *
darienf 20:6d2af70c92ab 13 * The above copyright notice and this permission notice shall be included
darienf 20:6d2af70c92ab 14 * in all copies or substantial portions of the Software.
darienf 20:6d2af70c92ab 15 *
darienf 20:6d2af70c92ab 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
darienf 20:6d2af70c92ab 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
darienf 20:6d2af70c92ab 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
darienf 20:6d2af70c92ab 19 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
darienf 20:6d2af70c92ab 20 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
darienf 20:6d2af70c92ab 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
darienf 20:6d2af70c92ab 22 * OTHER DEALINGS IN THE SOFTWARE.
darienf 20:6d2af70c92ab 23 *
darienf 20:6d2af70c92ab 24 * Except as contained in this notice, the name of Maxim Integrated
darienf 20:6d2af70c92ab 25 * Products, Inc. shall not be used except as stated in the Maxim Integrated
darienf 20:6d2af70c92ab 26 * Products, Inc. Branding Policy.
darienf 20:6d2af70c92ab 27 *
darienf 20:6d2af70c92ab 28 * The mere transfer of this software does not imply any licenses
darienf 20:6d2af70c92ab 29 * of trade secrets, proprietary technology, copyrights, patents,
darienf 20:6d2af70c92ab 30 * trademarks, maskwork rights, or any other form of intellectual
darienf 20:6d2af70c92ab 31 * property whatsoever. Maxim Integrated Products, Inc. retains all
darienf 20:6d2af70c92ab 32 * ownership rights.
darienf 20:6d2af70c92ab 33 *******************************************************************************
darienf 20:6d2af70c92ab 34 */
darienf 20:6d2af70c92ab 35
darienf 20:6d2af70c92ab 36 using System;
darienf 20:6d2af70c92ab 37 using System.Collections.Generic;
darienf 20:6d2af70c92ab 38 using System.Linq;
darienf 20:6d2af70c92ab 39 using System.Text;
darienf 20:6d2af70c92ab 40 using HealthSensorPlatform.DeviceDescriptions;
darienf 20:6d2af70c92ab 41 using RPCSupport.DeviceSupport;
darienf 20:6d2af70c92ab 42
darienf 20:6d2af70c92ab 43 namespace Maxim.CustomControls
darienf 20:6d2af70c92ab 44 {
darienf 20:6d2af70c92ab 45 class MAX30003Info : Device
darienf 20:6d2af70c92ab 46 {
darienf 20:6d2af70c92ab 47
darienf 20:6d2af70c92ab 48 public MAX30003Info()
darienf 20:6d2af70c92ab 49 {
darienf 20:6d2af70c92ab 50 deviceDetails = new DeviceDetails();
darienf 20:6d2af70c92ab 51 deviceDetails.type = DeviceDetails.eType.eMAX30001;
darienf 20:6d2af70c92ab 52
darienf 20:6d2af70c92ab 53 initalizeDescription();
darienf 20:6d2af70c92ab 54
darienf 20:6d2af70c92ab 55 }
darienf 20:6d2af70c92ab 56
darienf 20:6d2af70c92ab 57 void initalizeDescription()
darienf 20:6d2af70c92ab 58 {
darienf 20:6d2af70c92ab 59 Info = new RegisterInfo[] {
darienf 20:6d2af70c92ab 60 new RegisterInfo("STATUS", 0x01, 3, RegisterInfo.RegisterType.ReadOnly),
darienf 20:6d2af70c92ab 61 new RegisterInfo("EN_INT", 0x02, 3),
darienf 20:6d2af70c92ab 62 new RegisterInfo("EN_INT2", 0x03, 3),
darienf 20:6d2af70c92ab 63 new RegisterInfo("MNGR_INT", 0x04, 3),
darienf 20:6d2af70c92ab 64 new RegisterInfo("MNGR_DYN", 0x05, 3),
darienf 20:6d2af70c92ab 65 new RegisterInfo("SW_RST", 0x08, 3, RegisterInfo.RegisterType.WriteOnly),
darienf 20:6d2af70c92ab 66 new RegisterInfo("SYNCH", 0x09, 3, RegisterInfo.RegisterType.WriteOnly),
darienf 20:6d2af70c92ab 67 new RegisterInfo("FIFO_RST", 0x0A, 3, RegisterInfo.RegisterType.WriteOnly),
darienf 20:6d2af70c92ab 68 new RegisterInfo("INFO", 0x0F, 3, RegisterInfo.RegisterType.ReadOnly),
darienf 20:6d2af70c92ab 69 new RegisterInfo("CNFG_GEN", 0x10, 3),
darienf 20:6d2af70c92ab 70 new RegisterInfo("CNFG_CAL", 0x12, 3),
darienf 20:6d2af70c92ab 71 new RegisterInfo("CNFG_EMUX", 0x14, 3),
darienf 20:6d2af70c92ab 72 new RegisterInfo("CNFG_ECG", 0x15, 3),
darienf 20:6d2af70c92ab 73 //new RegisterInfo("CNFG_BMUX", 0x17, 3),
darienf 20:6d2af70c92ab 74 //new RegisterInfo("CNFG_BIOZ", 0x18, 3),
darienf 20:6d2af70c92ab 75 //new RegisterInfo("CNFG_PACE", 0x1A, 3),
darienf 20:6d2af70c92ab 76 new RegisterInfo("CNFG_RTOR1", 0x1D, 3),
darienf 20:6d2af70c92ab 77 new RegisterInfo("CNFG_RTOR2", 0x1E, 3)
darienf 20:6d2af70c92ab 78 };
darienf 20:6d2af70c92ab 79
darienf 20:6d2af70c92ab 80
darienf 20:6d2af70c92ab 81 //bit description for STATUS
darienf 20:6d2af70c92ab 82 Descriptions(0x01).Add("Bit [23]", "EINT", "ECG FIFO Interrupt: indicates ECG records meeting/exceeding the ECG FIFO Interrupt Threshold (EFIT) are available for read back. Remains active until ECG FIFO is read back to the extent required to clear the EFIT condition.");
darienf 20:6d2af70c92ab 83 Descriptions(0x01).Add("Bit [22]", "EOVF", "ECG FIFO Overflow: indicates the ECG FIFO has overflowed and the data record has been corrupted. ");
darienf 20:6d2af70c92ab 84 Descriptions(0x01).Add("Bit [21]", "FSTINT", "ECG Fast Recovery Mode: Issued when the ECG Fast Recovery Mode is engaged (either manually or automatically).");
darienf 20:6d2af70c92ab 85 Descriptions(0x01).Add("Bit [20]", "DCLOFFINT", "DC Lead Off Detection Interrupt: indicates the part has determined it is in an ECG/BIOZ Leads Off condition (as selected in CNFG_GEN) for more than 90ms. Remains active as long as the Leads Off condition persists even after a STATUS register read, then held until cleared by STATUS register read (30th SCLK) if condition has ceased. Note: Exact time depends on BIOZ modulation frequency (the clock used for counting) and can range from 90ms to 140ms.");
darienf 20:6d2af70c92ab 86 /*
darienf 20:6d2af70c92ab 87 Descriptions(0x01).Add("Bit [19]", "BINT", "BIOZ FIFO Interrupt: indicates BIOZ records meeting/exceeding the BIOZ FIFO Interrupt Threshold (BFIT) are available for read back. Remains active until BIOZ FIFO is read back to the extent required to clear the BFIT condition.");
darienf 20:6d2af70c92ab 88 Descriptions(0x01).Add("Bit [18]", "BOVF", "BIOZ FIFO Overflow: indicates the BIOZ FIFO has overflowed and the data record has been corrupted. ");
darienf 20:6d2af70c92ab 89 Descriptions(0x01).Add("Bit [17]", "BOVER", "BIOZ Over Range: indicates the BIOZ output magnitude has exceeded the BIOZ High Threshold (BLOFF_HI_IT) for at least 100ms, recommended for use in 2 and 4 electrode BIOZ Lead Off detection.");
darienf 20:6d2af70c92ab 90 Descriptions(0x01).Add("Bit [16]", "BUNDR", "BIOZ Under Range: indicates the BIOZ output magnitude has been bounded by the BIOZ Low Threshold (BLOFF_LO_IT) for at least 1.7 seconds, recommended for use in 4 electrode BIOZ Lead Off detection.");
darienf 20:6d2af70c92ab 91 Descriptions(0x01).Add("Bit [15]", "BCGMON", "BIOZ Current Generator Monitor: indicates the DRVP and/or DRVN current generator has been in a Lead Off condition for at least 128ms, recommended for use in 4 electrode BIOZ Lead Off detection.");
darienf 20:6d2af70c92ab 92 Descriptions(0x01).Add("Bit [14]", "PINT", "PACE FIFO Interrupt: indicates PACE records are available for read back (should be used in conjunction with EINT). ");
darienf 20:6d2af70c92ab 93 Descriptions(0x01).Add("Bit [13]", "POVF", "PACE FIFO Overflow: indicates the PACE FIFO has overflowed and the data record has been corrupted. ");
darienf 20:6d2af70c92ab 94 Descriptions(0x01).Add("Bit [12]", "PEDGE", "PACE Edge Detection Interrupt: real time PACE edge indicator showing when the MAX30001 has determined a PACE edge occurred (note this is different than the PINT interrupt, which indicates when the detected edges are logged into the PACE FIFO). Clear behavior is defined by CLR_PEDGE[1:0], see MNGR_INT for details.");
darienf 20:6d2af70c92ab 95 */
darienf 20:6d2af70c92ab 96 Descriptions(0x01).Add("Bit [11]", "LONINT", "Ultra Low Power Lead On Detection Interrupt: indicates the part has determined it is in a Leads On condition (as selected in CNFG_GEN). Remains active while the Leads On condition persists, then held until cleared by STATUS read back (32nd SCLK).");
darienf 20:6d2af70c92ab 97 Descriptions(0x01).Add("Bit [10]", "RRINT", "ECG R to R Detector R Event Interrupt: Issued when the R to R detector has identified a new R event.");
darienf 20:6d2af70c92ab 98 Descriptions(0x01).Add("Bit [9]", "SAMP", "Sample Synchronization Pulse: issued on the ECG/BIOZ base-rate sampling instant, for use in assisting µC monitoring and synchronizing other peripheral operations and data, generally recommended for use as a dedicated interrupt. ECG is the default, BIOZ is used only when ECG is not in use. Frequency is selected by SAMP_IT[1:0], see MNGR_INT for details. Clear behavior is defined by CLR_SAMP, see MNGR_INT for details.");
darienf 20:6d2af70c92ab 99 Descriptions(0x01).Add("Bit [8]", "PLLINT", "PLL Unlocked Interrupt: indicates the PLL has not yet achieved or has lost its phase lock. PLLINT will only be asserted when the PLL is powered up and active (ECG and/or BIOZ Channel enabled). Remains asserted while the PLL unlocked condition persists, then held until cleared by STATUS read back (32nd SCLK). Note: Writes to CNFG_GEN which either enable the PLL or alter the FMSTR setting will result in an issuance of PLLINT while the PLL re-achieves lock – users should allow this behavior to settle out before considering the data valid.");
darienf 20:6d2af70c92ab 100 /*
darienf 20:6d2af70c92ab 101 Descriptions(0x01).Add("Bit [5]", "BCGMP", "BIOZ Current Generator Monitor individual outputs: indicates the DRVP or DRVN current generator has been in a Lead Off condition for at least 128ms. These are not strictly interrupt terms, but are detailed status bits, covered by the BCGMON interrupt term.");
darienf 20:6d2af70c92ab 102 Descriptions(0x01).Add("Bit [4]", "BCGMN", "BIOZ Current Generator Monitor individual outputs: indicates the DRVP or DRVN current generator has been in a Lead Off condition for at least 128ms. These are not strictly interrupt terms, but are detailed status bits, covered by the BCGMON interrupt term.");
darienf 20:6d2af70c92ab 103 */
darienf 20:6d2af70c92ab 104 Descriptions(0x01).Add("Bit [3]", "LDOFF_PH", "DC Lead Off Detection Detailed Status: indicates the part has determined (as selected by CNFG_GEN): ");
darienf 20:6d2af70c92ab 105 Descriptions(0x01).Add("Bit [2]", "LDOFF_PL", "ECGP/BIP is above the high threshold (VTHH), ECGP/BIP is below the low threshold (VTHL),");
darienf 20:6d2af70c92ab 106 Descriptions(0x01).Add("Bit [1]", "LDOFF_NH", "ECGN/BIN is above the high threshold (VTHH), ECGN/BIN is below the low threshold (VTHL), respectively.");
darienf 20:6d2af70c92ab 107 Descriptions(0x01).Add("Bit [0]", "LDOFF_NL", "Remain active as long as the Lead Off Detection is active and the Leads Off condition persists, then held until cleared by STATUS read back (32nd SCLK). These are not strictly interrupt terms, but are detailed status bits, covered by the DCLOFFINT bit.");
darienf 20:6d2af70c92ab 108
darienf 20:6d2af70c92ab 109 //bit description for EN_INT
darienf 20:6d2af70c92ab 110 Descriptions(0x02).Add("Bit [23]", "EN_EINT", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 111 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 112 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 113 Descriptions(0x02).Add("Bit [22]", "EN_EOVF", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 114 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 115 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 116 Descriptions(0x02).Add("Bit [21]", "EN_FSTINT", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 117 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 118 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 119 Descriptions(0x02).Add("Bit [20]", "EN_DCLOFFINT", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 120 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 121 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 122 /*
darienf 20:6d2af70c92ab 123 Descriptions(0x02).Add("Bit [19]", "EN_BINT", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 124 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 125 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 126 Descriptions(0x02).Add("Bit [18]", "EN_BOVF", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 127 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 128 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 129 Descriptions(0x02).Add("Bit [17]", "EN_BOVER", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 130 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 131 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 132 Descriptions(0x02).Add("Bit [16]", "EN_BUNDR", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 133 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 134 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 135 Descriptions(0x02).Add("Bit [15]", "EN_BCGMON", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 136 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 137 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 138 Descriptions(0x02).Add("Bit [14]", "EN_PINT", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 139 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 140 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 141 Descriptions(0x02).Add("Bit [13]", "EN_POVF", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 142 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 143 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 144 Descriptions(0x02).Add("Bit [12]", "EN_PEDGE", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 145 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 146 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 147 */
darienf 20:6d2af70c92ab 148 Descriptions(0x02).Add("Bit [11]", "EN_LONINT", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 149 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 150 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 151 Descriptions(0x02).Add("Bit [10]", "EN_RRINT", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 152 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 153 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 154 Descriptions(0x02).Add("Bit [9]", "EN_SAMP", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 155 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 156 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 157 Descriptions(0x02).Add("Bit [8]", "EN_PLLINT", @"Interrupt enable for INTB pin.
darienf 20:6d2af70c92ab 158 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 159 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 160 Descriptions(0x02).Add("Bit [1:0]", "INTB_TYPE[1:0]", "INTB Port Type (EN_INT Selections)");
darienf 20:6d2af70c92ab 161
darienf 20:6d2af70c92ab 162 //bit description for EN_INT2
darienf 20:6d2af70c92ab 163 Descriptions(0x03).Add("Bit [23]", "EN_EINT2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 164 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 165 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 166 Descriptions(0x03).Add("Bit [22]", "EN_EOVF2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 167 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 168 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 169 Descriptions(0x03).Add("Bit [21]", "EN_FSTINT2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 170 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 171 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 172 Descriptions(0x03).Add("Bit [20]", "EN_DCLOFFINT2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 173 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 174 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 175 /*
darienf 20:6d2af70c92ab 176 Descriptions(0x03).Add("Bit [19]", "EN_BINT2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 177 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 178 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 179 Descriptions(0x03).Add("Bit [18]", "EN_BOVF2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 180 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 181 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 182 Descriptions(0x03).Add("Bit [17]", "EN_BOVER2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 183 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 184 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 185 Descriptions(0x03).Add("Bit [16]", "EN_BUNDR2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 186 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 187 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 188 Descriptions(0x03).Add("Bit [15]", "EN_BCGMON2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 189 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 190 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 191 Descriptions(0x03).Add("Bit [14]", "EN_PINT2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 192 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 193 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 194 Descriptions(0x03).Add("Bit [13]", "EN_POVF2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 195 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 196 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 197 Descriptions(0x03).Add("Bit [12]", "EN_PEDGE2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 198 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 199 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 200 */
darienf 20:6d2af70c92ab 201 Descriptions(0x03).Add("Bit [11]", "EN_LONINT2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 202 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 203 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 204 Descriptions(0x03).Add("Bit [10]", "EN_RRINT2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 205 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 206 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 207 Descriptions(0x03).Add("Bit [9]", "EN_SAMP2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 208 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 209 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 210 Descriptions(0x03).Add("Bit [8]", "EN_PLLINT2", @"Interrupt enable for INT2B pin.
darienf 20:6d2af70c92ab 211 0 = Individual Interrupt bit is not included in (or masked from) the Interrupt logical OR Term
darienf 20:6d2af70c92ab 212 1 = Individual Interrupt bit is included in (or unmasked from) the Interrupt logical OR Term");
darienf 20:6d2af70c92ab 213 Descriptions(0x03).Add("Bit [1:0]", "INTB2_TYPE[1:0]", "INT2B Port Type (EN_INT Selections)");
darienf 20:6d2af70c92ab 214
darienf 20:6d2af70c92ab 215 //bit description for MNGR_INT
darienf 20:6d2af70c92ab 216 Descriptions(0x04).Add("Bit [23:19]", "EFIT[4:0]", "ECG FIFO Interrupt Threshold (issues EINT based on number of unread FIFO records)");
darienf 20:6d2af70c92ab 217 //Descriptions(0x04).Add("Bit [18:16]", "BFIT[2:0]", "BIOZ FIFO Interrupt Threshold (issues BINT based on number of unread FIFO records)");
darienf 20:6d2af70c92ab 218 Descriptions(0x04).Add("Bit [6]", "CLR_FAST", "FAST MODE Interrupt Clear Behavior ");
darienf 20:6d2af70c92ab 219 Descriptions(0x04).Add("Bit [5:4]", "CLR_RRINT[1:0]", "RTOR R Detect Interrupt (RRINT) Clear Behavior ");
darienf 20:6d2af70c92ab 220 //Descriptions(0x04).Add("Bit [3]", "CLR_PEDGE", "PACE Edge Detect Interrupt (PEDGE) Clear Behavior ");
darienf 20:6d2af70c92ab 221 Descriptions(0x04).Add("Bit [2]", "CLR_SAMP", "Sample Synchronization Pulse (SAMP) Clear Behavior ");
darienf 20:6d2af70c92ab 222 Descriptions(0x04).Add("Bit [1:0]", "SAMP_IT[1:0]", "Sample Synchronization Pulse (SAMP) Frequency ");
darienf 20:6d2af70c92ab 223
darienf 20:6d2af70c92ab 224 //bit description for MNGR_DYN
darienf 20:6d2af70c92ab 225 Descriptions(0x05).Add("Bit [23:22]", "FAST[1:0]", "ECG Channel Fast Recovery Mode Selection (aka ECG High Pass Filter Bypass)");
darienf 20:6d2af70c92ab 226 Descriptions(0x05).Add("Bit [21:16]", "FAST_TH[5:0]", "Automatic Fast Recovery Threshold ");
darienf 20:6d2af70c92ab 227 //Descriptions(0x05).Add("Bit [15:8]", "BLOFF_HI_IT[7:0]", "BIOZ AC Lead Off Over-Range Threshold ");
darienf 20:6d2af70c92ab 228 //Descriptions(0x05).Add("Bit [7:0]", "BLOFF_LO_IT[7:0]", "BIOZ AC Lead Off Under-Range Threshold ");
darienf 20:6d2af70c92ab 229
darienf 20:6d2af70c92ab 230 //bit description for SW_RST
darienf 20:6d2af70c92ab 231 Descriptions(0x08).Add("Bit [23:0]", "RESET", "Data Required for Execution = 00_00_00");
darienf 20:6d2af70c92ab 232
darienf 20:6d2af70c92ab 233 //bit description for SYNCH
darienf 20:6d2af70c92ab 234 Descriptions(0x09).Add("Bit [23:0]", "SYNCH", "Data Required for Execution = 00_00_00");
darienf 20:6d2af70c92ab 235
darienf 20:6d2af70c92ab 236 //bit description for FIFO_RST
darienf 20:6d2af70c92ab 237 Descriptions(0x0A).Add("Bit [23:0]", "FIFO_RST", "Data Required for Execution = 00_00_00");
darienf 20:6d2af70c92ab 238
darienf 20:6d2af70c92ab 239 //bit description for INFO
darienf 20:6d2af70c92ab 240 Descriptions(0x0F).Add("Bit [19:16]", "REV_ID[3:0]", "Revision ID");
darienf 20:6d2af70c92ab 241 //Descriptions(0x0F).Add("Bit [14]", "SAMPLE", "Sample - Experimental Functionality Enable\n0 - Production functionality only\n1 - Experimental functionality");
darienf 20:6d2af70c92ab 242 //Descriptions(0x0F).Add("Bit [13:12]", "PART_ID[1:0]", "Part ID\n00 - MAX30004\n01 - MAX30001\n10 - MAX30002\n11 - MAX30003");
darienf 20:6d2af70c92ab 243 //Descriptions(0x0F).Add("Bit [11:0]", "SERIAL[11:0]", "Serial Number");
darienf 20:6d2af70c92ab 244
darienf 20:6d2af70c92ab 245 //bit description for CNFG_GEN
darienf 20:6d2af70c92ab 246 Descriptions(0x10).Add("Bit [23:22]", "EN_ULP_LON[1:0]", "Ultra Low Power Lead On Detection Enable");
darienf 20:6d2af70c92ab 247 Descriptions(0x10).Add("Bit [21:20]", "FMSTR[1:0]", "Master Clock Frequency");
darienf 20:6d2af70c92ab 248 Descriptions(0x10).Add("Bit [19]", "EN_ECG", "ECG Channel Enable");
darienf 20:6d2af70c92ab 249 //Descriptions(0x10).Add("Bit [18]", "EN_BIOZ", "BIOZ Channel Enable");
darienf 20:6d2af70c92ab 250 //Descriptions(0x10).Add("Bit [17]", "EN_PACE", "PACE Channel Enable");
darienf 20:6d2af70c92ab 251 //Descriptions(0x10).Add("Bit [15:14]", "EN_BLOFF[1:0]", "BIOZ Digital Lead Off Detection Enable ");
darienf 20:6d2af70c92ab 252 Descriptions(0x10).Add("Bit [13:12]", "EN_DCLOFF", "DC Lead Off Detection Enable");
darienf 20:6d2af70c92ab 253 Descriptions(0x10).Add("Bit [11]", "DCLOFF_IPOL", "DC Lead Off Current Polarity (if current sources are enabled/connected)");
darienf 20:6d2af70c92ab 254 Descriptions(0x10).Add("Bit [10:8]", "DCLOFF_IMAG[2:0]", "DC Lead Off Current Magnitude Selection");
darienf 20:6d2af70c92ab 255 Descriptions(0x10).Add("Bit [7:6]", "DCLOFF_VTH[1:0]", "DC Lead Off Voltage Threshold Selection ");
darienf 20:6d2af70c92ab 256 Descriptions(0x10).Add("Bit [5:4]", "EN_RBIAS[1:0]", "Enable and Select Resistive Lead Bias Mode ");
darienf 20:6d2af70c92ab 257 Descriptions(0x10).Add("Bit [3:2]", "RBIASV[1:0]", "Resistive Bias Mode Value Selection ");
darienf 20:6d2af70c92ab 258 Descriptions(0x10).Add("Bit [1]", "RBIASP", "Enables Resistive Bias on Positive Input");
darienf 20:6d2af70c92ab 259 Descriptions(0x10).Add("Bit [0]", "RBIASN", "Enables Resistive Bias on Negative Input");
darienf 20:6d2af70c92ab 260
darienf 20:6d2af70c92ab 261 //bit description for CNFG_CAL
darienf 20:6d2af70c92ab 262 Descriptions(0x12).Add("Bit [22]", "CAL_EN_VCAL", "Calibration Source (VCALP and VCALN) Enable ");
darienf 20:6d2af70c92ab 263 Descriptions(0x12).Add("Bit [21]", "CAL_VMODE", "Calibration Source Mode Selection ");
darienf 20:6d2af70c92ab 264 Descriptions(0x12).Add("Bit [20]", "CAL_VMAG", "Calibration Source Magnitude Selection (VMAG)");
darienf 20:6d2af70c92ab 265 Descriptions(0x12).Add("Bit [14:12]", "CAL_FCAL[2:0]", "Calibration Source Frequency Selection (FCAL)");
darienf 20:6d2af70c92ab 266 Descriptions(0x12).Add("Bit [11]", "CAL_FIFTY", "Calibration Source Duty Cycle Mode Selection");
darienf 20:6d2af70c92ab 267 Descriptions(0x12).Add("Bit [10:0]", "CAL_THIGH[10:0]", "Calibration Source Time High Selection ");
darienf 20:6d2af70c92ab 268
darienf 20:6d2af70c92ab 269 //bit description for CNFG_EMUX
darienf 20:6d2af70c92ab 270 Descriptions(0x14).Add("Bit [23]", "EMUX_POL", "ECG Input Polarity Selection");
darienf 20:6d2af70c92ab 271 Descriptions(0x14).Add("Bit [21]", "EMUX_OPENP", "Open the ECGP Input Switch (most often used for testing and calibration studies)");
darienf 20:6d2af70c92ab 272 Descriptions(0x14).Add("Bit [20]", "EMUX_OPENN", "Open the ECGN Input Switch (most often used for testing and calibration studies)");
darienf 20:6d2af70c92ab 273 Descriptions(0x14).Add("Bit [19:18]", "EMUX_CALP_SEL[1:0]", "ECGP Calibration Selection");
darienf 20:6d2af70c92ab 274 Descriptions(0x14).Add("Bit [17:16]", "EMUX_CALN_SEL[1:0]", "ECGN Calibration Selection");
darienf 20:6d2af70c92ab 275
darienf 20:6d2af70c92ab 276 //bit description for CNFG_ECG
darienf 20:6d2af70c92ab 277 Descriptions(0x15).Add("Bit [23:22]", "ECG_RATE[1:0]", "ECG Data Rate (also dependent on FMSTR selection, see CNFG_GEN and table below):");
darienf 20:6d2af70c92ab 278 Descriptions(0x15).Add("Bit [17:16]", "ECG_GAIN[1:0]", "ECG Channel Gain Setting ");
darienf 20:6d2af70c92ab 279 Descriptions(0x15).Add("Bit [14]", "ECG_DHPF", "ECG Channel Digital High Pass Filter Cutoff Frequency");
darienf 20:6d2af70c92ab 280 Descriptions(0x15).Add("Bit [13:12]", "ECG_DLPF[1:0]", "ECG Channel Digital Low Pass Filter Cutoff Frequency");
darienf 20:6d2af70c92ab 281
darienf 20:6d2af70c92ab 282 /*
darienf 20:6d2af70c92ab 283 //bit description for CNFG_BMUX
darienf 20:6d2af70c92ab 284 Descriptions(0x17).Add("Bit [21]", "BMUX_OPENP", "Open the BIP Input Switch (most often used for testing and calibration studies)");
darienf 20:6d2af70c92ab 285 Descriptions(0x17).Add("Bit [20]", "BMUX_OPENN", "Open the BIN Input Switch (most often used for testing and calibration studies)");
darienf 20:6d2af70c92ab 286 Descriptions(0x17).Add("Bit [19:18]", "BMUX_CALP_SEL[1:0]", "BIP Calibration Selection (VCAL application to BIP/N inputs intended for use in PACE testing only.)");
darienf 20:6d2af70c92ab 287 Descriptions(0x17).Add("Bit [17:16]", "BMUX_CALN_SEL[1:0]", "BIN Calibration Selection (VCAL application to BIP/N inputs intended for use in PACE testing only.)");
darienf 20:6d2af70c92ab 288 Descriptions(0x17).Add("Bit [13:12]", "BMUX_CG_MODE[1:0]", "BIOZ Current Generator Mode Selection");
darienf 20:6d2af70c92ab 289 Descriptions(0x17).Add("Bit [11]", "BMUX_EN_BIST", "BIOZ Modulated Resistance Built-In-Self-Test (RMOD BIST) Mode Enable");
darienf 20:6d2af70c92ab 290 Descriptions(0x17).Add("Bit [10:8]", "BMUX_RNOM[2:0]", "BIOZ RMOD BIST Nominal Resistance Selection");
darienf 20:6d2af70c92ab 291 Descriptions(0x17).Add("Bit [6:4]", "BMUX_RMOD[2:0]", "BIOZ RMOD BIST Modulated Resistance Selection (See RMOD BIST Settings Table for details.)");
darienf 20:6d2af70c92ab 292 Descriptions(0x17).Add("Bit [1:0]", "BMUX_FBIST[1:0]", "BIOZ RMOD BIST Frequency Selection");
darienf 20:6d2af70c92ab 293
darienf 20:6d2af70c92ab 294 //bit description for CNFG_BIOZ
darienf 20:6d2af70c92ab 295 Descriptions(0x18).Add("Bit [23]", "BIOZ_RATE", "BIOZ Data Rate (also dependent on FMSTR selection, see CNFG_GEN):");
darienf 20:6d2af70c92ab 296 Descriptions(0x18).Add("Bit [22:20]", "BIOZ_AHPF[2:0]", "BIOZ/PACE Channel Analog High Pass Filter Cutoff Frequency and Bypass");
darienf 20:6d2af70c92ab 297 Descriptions(0x18).Add("Bit [19]", "EXT_RBIAS", "External Resistor Bias Enable");
darienf 20:6d2af70c92ab 298 Descriptions(0x18).Add("Bit [17:16]", "BIOZ_GAIN[1:0]", "BIOZ Channel Gain Setting ");
darienf 20:6d2af70c92ab 299 Descriptions(0x18).Add("Bit [15:14]", "BIOZ_DHPF[1:0]", "BIOZ Channel Digital High Pass Filter Cutoff Frequency");
darienf 20:6d2af70c92ab 300 Descriptions(0x18).Add("Bit [13:12]", "BIOZ_DLPF[1:0]", "BIOZ Channel Digital Low Pass Filter Cutoff Frequency");
darienf 20:6d2af70c92ab 301 Descriptions(0x18).Add("Bit [11:8]", "BIOZ_FCGEN[3:0]", "BIOZ Current Generator Modulation Frequency");
darienf 20:6d2af70c92ab 302 Descriptions(0x18).Add("Bit [7]", "BIOZ_CGMON", "BIOZ Current Generator Monitor");
darienf 20:6d2af70c92ab 303 Descriptions(0x18).Add("Bit [6:4]", "BIOZ_CGMAG[2:0]", "BIOZ Current Generator Magnitude");
darienf 20:6d2af70c92ab 304 Descriptions(0x18).Add("Bit [3:0]", "BIOZ_PHOFF[3:0]", "BIOZ Current Generator Modulation Phase Offset ");
darienf 20:6d2af70c92ab 305
darienf 20:6d2af70c92ab 306 //bit description for CNFG_PACE
darienf 20:6d2af70c92ab 307 Descriptions(0x1A).Add("Bit [23]", "PACE_POL", "PACE Input Polarity Selection");
darienf 20:6d2af70c92ab 308 Descriptions(0x1A).Add("Bit [19]", "PACE_GN_DIFF_OFF", "PACE Differentiator (Derivative) Mode");
darienf 20:6d2af70c92ab 309 Descriptions(0x1A).Add("Bit [18:16]", "PACE_GAIN[2:0]", "PACE Channel Gain Selection");
darienf 20:6d2af70c92ab 310 Descriptions(0x1A).Add("Bit [14]", "PACE_AOUT_LBW", "PACE Analog Output Buffer Bandwidth Mode ");
darienf 20:6d2af70c92ab 311 Descriptions(0x1A).Add("Bit [13:12]", "PACE_AOUT[1:0]", "PACE Single Ended Analog Output Buffer Signal Monitoring Selection");
darienf 20:6d2af70c92ab 312 Descriptions(0x1A).Add("Bit [7:4]", "PACE_DACP[3:0]", "PACE Detector Positive Comparator Threshold");
darienf 20:6d2af70c92ab 313 Descriptions(0x1A).Add("Bit [3:0]", "PACE_DACN[3:0]", "PACE Detector Negative Comparator Threshold");
darienf 20:6d2af70c92ab 314 */
darienf 20:6d2af70c92ab 315
darienf 20:6d2af70c92ab 316 //bit description for CNFG_RTOR1
darienf 20:6d2af70c92ab 317 Descriptions(0x1D).Add("Bit [23:20]", "RTOR_WNDW[3:0]", "R to R Window Averaging (Window Width = RTOR_WNDW[3:0]*8ms)");
darienf 20:6d2af70c92ab 318 Descriptions(0x1D).Add("Bit [19:16]", "RTOR_GAIN[3:0]", "R to R Gain (where Gain = 2^RTOR_GAIN[3:0], plus an auto-scale option)");
darienf 20:6d2af70c92ab 319 Descriptions(0x1D).Add("Bit [15]", "EN_RTOR", "ECG RTOR Detection Enable ");
darienf 20:6d2af70c92ab 320 Descriptions(0x1D).Add("Bit [13:12]", "RTOR_PAVG[1:0]", "R to R Peak Averaging Weight Factor");
darienf 20:6d2af70c92ab 321 Descriptions(0x1D).Add("Bit [11:8]", "RTOR_PTSF[3:0]", "R to R Peak Threshold Scaling Factor");
darienf 20:6d2af70c92ab 322
darienf 20:6d2af70c92ab 323 //bit description for CNFG_RTOR2
darienf 20:6d2af70c92ab 324 Descriptions(0x1E).Add("Bit [21:16]", "RTOR_HOFF[5:0]", "R to R Minimum Hold Off ");
darienf 20:6d2af70c92ab 325 Descriptions(0x1E).Add("Bit [13:12]", "RTOR_RAVG[1:0]", "R to R Interval Averaging Weight Factor");
darienf 20:6d2af70c92ab 326 Descriptions(0x1E).Add("Bit [10:8]", "RTOR_RHSF[2:0]", "R to R Interval Hold Off Scaling Factor");
darienf 20:6d2af70c92ab 327
darienf 20:6d2af70c92ab 328 }
darienf 20:6d2af70c92ab 329 }
darienf 20:6d2af70c92ab 330 }