Alex Borisevich
/
OpenBCI
Definitions.h@1:4683702d7ad8, 2017-01-22 (annotated)
- Committer:
- akpc806a
- Date:
- Sun Jan 22 04:10:11 2017 +0000
- Revision:
- 1:4683702d7ad8
OpenBCI 32bit board variation with STM32L476 mircocontroller and mbed support. Version V2 of firmware, forked from the same official version for the PIC32 board.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
akpc806a | 1:4683702d7ad8 | 1 | // |
akpc806a | 1:4683702d7ad8 | 2 | // Definitions_32.h |
akpc806a | 1:4683702d7ad8 | 3 | // |
akpc806a | 1:4683702d7ad8 | 4 | // |
akpc806a | 1:4683702d7ad8 | 5 | // Created by Conor Russomanno, Luke Travis, and Joel Murphy. Summer 2013. |
akpc806a | 1:4683702d7ad8 | 6 | // Modified by Joel Murphy, Summer 2014 |
akpc806a | 1:4683702d7ad8 | 7 | // Joel Added Daisy Functionality Fall 2014 |
akpc806a | 1:4683702d7ad8 | 8 | // |
akpc806a | 1:4683702d7ad8 | 9 | |
akpc806a | 1:4683702d7ad8 | 10 | #ifndef _____OpenBCI_32bit_Library_Definitions_h |
akpc806a | 1:4683702d7ad8 | 11 | #define _____OpenBCI_32bit_Library_Definitions_h |
akpc806a | 1:4683702d7ad8 | 12 | |
akpc806a | 1:4683702d7ad8 | 13 | // The default baud rate |
akpc806a | 1:4683702d7ad8 | 14 | #define OPENBCI_BAUD_RATE 115200 |
akpc806a | 1:4683702d7ad8 | 15 | |
akpc806a | 1:4683702d7ad8 | 16 | // File transmissions |
akpc806a | 1:4683702d7ad8 | 17 | #define OPENBCI_BOP 'A' // Begining of stream packet |
akpc806a | 1:4683702d7ad8 | 18 | #define OPENBCI_EOP_STND_ACCEL 0xC0 // End of standard stream packet |
akpc806a | 1:4683702d7ad8 | 19 | #define OPENBCI_EOP_STND_RAW_AUX 0xC1 // End of stream packet with raw packet |
akpc806a | 1:4683702d7ad8 | 20 | #define OPENBCI_EOP_USER_DEFINED 0xC2 // End of stream packet, user defined |
akpc806a | 1:4683702d7ad8 | 21 | #define OPENBCI_EOP_ACCEL_TIME_SET 0xC3 // End of time sync up with accel stream packet |
akpc806a | 1:4683702d7ad8 | 22 | #define OPENBCI_EOP_ACCEL_TIME_SYNCED 0xC4 // End of time synced stream packet |
akpc806a | 1:4683702d7ad8 | 23 | #define OPENBCI_EOP_RAW_AUX_TIME_SET 0xC5 // End of time sync up stream packet |
akpc806a | 1:4683702d7ad8 | 24 | #define OPENBCI_EOP_RAW_AUX_TIME_SYNCED 0xC6 // End of time synced stream packet |
akpc806a | 1:4683702d7ad8 | 25 | |
akpc806a | 1:4683702d7ad8 | 26 | //PIN CONNECTIONS |
akpc806a | 1:4683702d7ad8 | 27 | /* |
akpc806a | 1:4683702d7ad8 | 28 | // MBED: pin definitions are in PlatformDefs.h |
akpc806a | 1:4683702d7ad8 | 29 | #define ADS_DRDY 9 // ADS data ready pin |
akpc806a | 1:4683702d7ad8 | 30 | #define ADS_RST 4 // ADS reset pin |
akpc806a | 1:4683702d7ad8 | 31 | #define BOARD_ADS 8 // ADS chip select |
akpc806a | 1:4683702d7ad8 | 32 | #define DAISY_ADS 3 // ADS Daisy chip select |
akpc806a | 1:4683702d7ad8 | 33 | #define BOTH_ADS 5 // Slave Select Both ADS chips |
akpc806a | 1:4683702d7ad8 | 34 | #define SD_SS 2 // SD card chip select |
akpc806a | 1:4683702d7ad8 | 35 | #define LIS3DH_SS 1 // LIS3DH chip select |
akpc806a | 1:4683702d7ad8 | 36 | #define LIS3DH_DRDY 0 // LIS3DH data ready pin |
akpc806a | 1:4683702d7ad8 | 37 | #define OPENBCI_PIN_LED 11 |
akpc806a | 1:4683702d7ad8 | 38 | #define OPENBCI_PIN_PGC 12 |
akpc806a | 1:4683702d7ad8 | 39 | */ |
akpc806a | 1:4683702d7ad8 | 40 | #define BOTH_ADS 5 // Slave Select Both ADS chips |
akpc806a | 1:4683702d7ad8 | 41 | |
akpc806a | 1:4683702d7ad8 | 42 | //ADS1299 SPI Command Definition Byte Assignments |
akpc806a | 1:4683702d7ad8 | 43 | #define _WAKEUP 0x02 // Wake-up from standby mode |
akpc806a | 1:4683702d7ad8 | 44 | #define _STANDBY 0x04 // Enter Standby mode |
akpc806a | 1:4683702d7ad8 | 45 | #define _RESET 0x06 // Reset the device registers to default |
akpc806a | 1:4683702d7ad8 | 46 | #define _START 0x08 // Start and restart (synchronize) conversions |
akpc806a | 1:4683702d7ad8 | 47 | #define _STOP 0x0A // Stop conversion |
akpc806a | 1:4683702d7ad8 | 48 | #define _RDATAC 0x10 // Enable Read Data Continuous mode (default mode at power-up) |
akpc806a | 1:4683702d7ad8 | 49 | #define _SDATAC 0x11 // Stop Read Data Continuous mode |
akpc806a | 1:4683702d7ad8 | 50 | #define _RDATA 0x12 // Read data by command supports multiple read back |
akpc806a | 1:4683702d7ad8 | 51 | |
akpc806a | 1:4683702d7ad8 | 52 | //ASD1299 Register Addresses |
akpc806a | 1:4683702d7ad8 | 53 | #define ADS_ID 0x3E // product ID for ADS1299 |
akpc806a | 1:4683702d7ad8 | 54 | #define ID_REG 0x00 // this register contains ADS_ID |
akpc806a | 1:4683702d7ad8 | 55 | #define CONFIG1 0x01 |
akpc806a | 1:4683702d7ad8 | 56 | #define CONFIG2 0x02 |
akpc806a | 1:4683702d7ad8 | 57 | #define CONFIG3 0x03 |
akpc806a | 1:4683702d7ad8 | 58 | #define LOFF 0x04 |
akpc806a | 1:4683702d7ad8 | 59 | #define CH1SET 0x05 |
akpc806a | 1:4683702d7ad8 | 60 | #define CH2SET 0x06 |
akpc806a | 1:4683702d7ad8 | 61 | #define CH3SET 0x07 |
akpc806a | 1:4683702d7ad8 | 62 | #define CH4SET 0x08 |
akpc806a | 1:4683702d7ad8 | 63 | #define CH5SET 0x09 |
akpc806a | 1:4683702d7ad8 | 64 | #define CH6SET 0x0A |
akpc806a | 1:4683702d7ad8 | 65 | #define CH7SET 0x0B |
akpc806a | 1:4683702d7ad8 | 66 | #define CH8SET 0x0C |
akpc806a | 1:4683702d7ad8 | 67 | #define BIAS_SENSP 0x0D |
akpc806a | 1:4683702d7ad8 | 68 | #define BIAS_SENSN 0x0E |
akpc806a | 1:4683702d7ad8 | 69 | #define LOFF_SENSP 0x0F |
akpc806a | 1:4683702d7ad8 | 70 | #define LOFF_SENSN 0x10 |
akpc806a | 1:4683702d7ad8 | 71 | #define LOFF_FLIP 0x11 |
akpc806a | 1:4683702d7ad8 | 72 | #define LOFF_STATP 0x12 |
akpc806a | 1:4683702d7ad8 | 73 | #define LOFF_STATN 0x13 |
akpc806a | 1:4683702d7ad8 | 74 | //#define GPIO 0x14 // MBED: interfere with STM32 library |
akpc806a | 1:4683702d7ad8 | 75 | static const int GPIO = 0x14; |
akpc806a | 1:4683702d7ad8 | 76 | #define MISC1 0x15 |
akpc806a | 1:4683702d7ad8 | 77 | #define MISC2 0x16 |
akpc806a | 1:4683702d7ad8 | 78 | #define CONFIG4 0x17 |
akpc806a | 1:4683702d7ad8 | 79 | |
akpc806a | 1:4683702d7ad8 | 80 | #define OUTPUT_NOTHING (0) // quiet |
akpc806a | 1:4683702d7ad8 | 81 | #define OUTPUT_8_CHAN (1) // not using Daisy module |
akpc806a | 1:4683702d7ad8 | 82 | #define OUTPUT_16_CHAN (2) // using Daisy module |
akpc806a | 1:4683702d7ad8 | 83 | #define ON_BOARD (BOARD_ADS) // slave address for on board ADS |
akpc806a | 1:4683702d7ad8 | 84 | #define ON_DAISY (DAISY_ADS) // slave address for daisy ADS |
akpc806a | 1:4683702d7ad8 | 85 | // CHANNEL SETTINGS |
akpc806a | 1:4683702d7ad8 | 86 | #define POWER_DOWN (0) |
akpc806a | 1:4683702d7ad8 | 87 | #define GAIN_SET (1) |
akpc806a | 1:4683702d7ad8 | 88 | #define INPUT_TYPE_SET (2) |
akpc806a | 1:4683702d7ad8 | 89 | #define BIAS_SET (3) |
akpc806a | 1:4683702d7ad8 | 90 | #define SRB2_SET (4) |
akpc806a | 1:4683702d7ad8 | 91 | #define SRB1_SET (5) |
akpc806a | 1:4683702d7ad8 | 92 | #define YES (0x01) |
akpc806a | 1:4683702d7ad8 | 93 | #define NO (0x00) |
akpc806a | 1:4683702d7ad8 | 94 | |
akpc806a | 1:4683702d7ad8 | 95 | //gainCode choices |
akpc806a | 1:4683702d7ad8 | 96 | #define ADS_GAIN01 (0b00000000) // 0x00 |
akpc806a | 1:4683702d7ad8 | 97 | #define ADS_GAIN02 (0b00010000) // 0x10 |
akpc806a | 1:4683702d7ad8 | 98 | #define ADS_GAIN04 (0b00100000) // 0x20 |
akpc806a | 1:4683702d7ad8 | 99 | #define ADS_GAIN06 (0b00110000) // 0x30 |
akpc806a | 1:4683702d7ad8 | 100 | #define ADS_GAIN08 (0b01000000) // 0x40 |
akpc806a | 1:4683702d7ad8 | 101 | #define ADS_GAIN12 (0b01010000) // 0x50 |
akpc806a | 1:4683702d7ad8 | 102 | #define ADS_GAIN24 (0b01100000) // 0x60 |
akpc806a | 1:4683702d7ad8 | 103 | |
akpc806a | 1:4683702d7ad8 | 104 | //inputType choices |
akpc806a | 1:4683702d7ad8 | 105 | #define ADSINPUT_NORMAL (0b00000000) |
akpc806a | 1:4683702d7ad8 | 106 | #define ADSINPUT_SHORTED (0b00000001) |
akpc806a | 1:4683702d7ad8 | 107 | #define ADSINPUT_BIAS_MEAS (0b00000010) |
akpc806a | 1:4683702d7ad8 | 108 | #define ADSINPUT_MVDD (0b00000011) |
akpc806a | 1:4683702d7ad8 | 109 | #define ADSINPUT_TEMP (0b00000100) |
akpc806a | 1:4683702d7ad8 | 110 | #define ADSINPUT_TESTSIG (0b00000101) |
akpc806a | 1:4683702d7ad8 | 111 | #define ADSINPUT_BIAS_DRP (0b00000110) |
akpc806a | 1:4683702d7ad8 | 112 | #define ADSINPUT_BIAL_DRN (0b00000111) |
akpc806a | 1:4683702d7ad8 | 113 | |
akpc806a | 1:4683702d7ad8 | 114 | //test signal choices...ADS1299 datasheet page 41 |
akpc806a | 1:4683702d7ad8 | 115 | #define ADSTESTSIG_AMP_1X (0b00000000) |
akpc806a | 1:4683702d7ad8 | 116 | #define ADSTESTSIG_AMP_2X (0b00000100) |
akpc806a | 1:4683702d7ad8 | 117 | #define ADSTESTSIG_PULSE_SLOW (0b00000000) |
akpc806a | 1:4683702d7ad8 | 118 | #define ADSTESTSIG_PULSE_FAST (0b00000001) |
akpc806a | 1:4683702d7ad8 | 119 | #define ADSTESTSIG_DCSIG (0b00000011) |
akpc806a | 1:4683702d7ad8 | 120 | #define ADSTESTSIG_NOCHANGE (0b11111111) |
akpc806a | 1:4683702d7ad8 | 121 | |
akpc806a | 1:4683702d7ad8 | 122 | //Lead-off signal choices |
akpc806a | 1:4683702d7ad8 | 123 | #define LOFF_MAG_6NA (0b00000000) |
akpc806a | 1:4683702d7ad8 | 124 | #define LOFF_MAG_24NA (0b00000100) |
akpc806a | 1:4683702d7ad8 | 125 | #define LOFF_MAG_6UA (0b00001000) |
akpc806a | 1:4683702d7ad8 | 126 | #define LOFF_MAG_24UA (0b00001100) |
akpc806a | 1:4683702d7ad8 | 127 | #define LOFF_FREQ_DC (0b00000000) |
akpc806a | 1:4683702d7ad8 | 128 | #define LOFF_FREQ_7p8HZ (0b00000001) |
akpc806a | 1:4683702d7ad8 | 129 | #define LOFF_FREQ_31p2HZ (0b00000010) |
akpc806a | 1:4683702d7ad8 | 130 | #define LOFF_FREQ_FS_4 (0b00000011) |
akpc806a | 1:4683702d7ad8 | 131 | #define PCHAN (0) |
akpc806a | 1:4683702d7ad8 | 132 | #define NCHAN (1) |
akpc806a | 1:4683702d7ad8 | 133 | #define OFF (0) |
akpc806a | 1:4683702d7ad8 | 134 | #define ON (1) |
akpc806a | 1:4683702d7ad8 | 135 | |
akpc806a | 1:4683702d7ad8 | 136 | // used for channel settings |
akpc806a | 1:4683702d7ad8 | 137 | #define ACTIVATE_SHORTED (2) |
akpc806a | 1:4683702d7ad8 | 138 | #define ACTIVATE (1) |
akpc806a | 1:4683702d7ad8 | 139 | #define DEACTIVATE (0) |
akpc806a | 1:4683702d7ad8 | 140 | |
akpc806a | 1:4683702d7ad8 | 141 | #define PCKT_START 0xA0 // prefix for data packet error checking |
akpc806a | 1:4683702d7ad8 | 142 | #define PCKT_END 0xC0 // postfix for data packet error checking |
akpc806a | 1:4683702d7ad8 | 143 | |
akpc806a | 1:4683702d7ad8 | 144 | // daisy module |
akpc806a | 1:4683702d7ad8 | 145 | #define CLK_EN 5 |
akpc806a | 1:4683702d7ad8 | 146 | |
akpc806a | 1:4683702d7ad8 | 147 | //LIS3DH |
akpc806a | 1:4683702d7ad8 | 148 | //#define READ_REG 0x80 // MBED: interfere with STM32 library |
akpc806a | 1:4683702d7ad8 | 149 | static const int READ_REG = 0x80; |
akpc806a | 1:4683702d7ad8 | 150 | |
akpc806a | 1:4683702d7ad8 | 151 | #define READ_MULTI 0x40 |
akpc806a | 1:4683702d7ad8 | 152 | |
akpc806a | 1:4683702d7ad8 | 153 | #define STATUS_REG_AUX 0x07 // axis over-run and data available flags (see 0x27) |
akpc806a | 1:4683702d7ad8 | 154 | #define OUT_ADC1_L 0x08 // |
akpc806a | 1:4683702d7ad8 | 155 | #define OUT_ADC1_H 0x09 // |
akpc806a | 1:4683702d7ad8 | 156 | #define OUT_ADC2_L 0x0A // ADC input values (check DS) |
akpc806a | 1:4683702d7ad8 | 157 | #define OUT_ADC2_H 0x0B // |
akpc806a | 1:4683702d7ad8 | 158 | #define OUT_ADC3_L 0x0C // |
akpc806a | 1:4683702d7ad8 | 159 | #define OUT_ADC3_H 0x0D // |
akpc806a | 1:4683702d7ad8 | 160 | #define INT_COUNTER_REG 0x0E // ?? |
akpc806a | 1:4683702d7ad8 | 161 | #define WHO_AM_I 0x0F // DEVICE ID 0x33 |
akpc806a | 1:4683702d7ad8 | 162 | #define TMP_CFG_REG 0x1F // ADC enable (0x80) Temperature sensor enable (0x40) |
akpc806a | 1:4683702d7ad8 | 163 | #define CTRL_REG1 0x20 // Data Rate Power Mode X enable Y enable Z enable (on >0x10) |
akpc806a | 1:4683702d7ad8 | 164 | #define CTRL_REG2 0x21 // High Pass Filter Stuph |
akpc806a | 1:4683702d7ad8 | 165 | #define CTRL_REG3 0x22 // INT1 select register |
akpc806a | 1:4683702d7ad8 | 166 | #define CTRL_REG4 0x23 // Block update timing endian G-force resolution self test SPI pins |
akpc806a | 1:4683702d7ad8 | 167 | #define CTRL_REG5 0x24 // reboot FIFO enable latch 4D detection |
akpc806a | 1:4683702d7ad8 | 168 | #define CTRL_REG6 0x25 // ?? |
akpc806a | 1:4683702d7ad8 | 169 | #define REFERENCE 0x26 // interrupt reference |
akpc806a | 1:4683702d7ad8 | 170 | #define STATUS_REG2 0x27 // axis overrun and availale flags (see 0x07) |
akpc806a | 1:4683702d7ad8 | 171 | #define OUT_X_L 0x28 // |
akpc806a | 1:4683702d7ad8 | 172 | #define OUT_X_H 0x29 // |
akpc806a | 1:4683702d7ad8 | 173 | #define OUT_Y_L 0x2A // tripple axis values (see 0x0A) |
akpc806a | 1:4683702d7ad8 | 174 | #define OUT_Y_H 0x2B // |
akpc806a | 1:4683702d7ad8 | 175 | #define OUT_Z_L 0x2C // |
akpc806a | 1:4683702d7ad8 | 176 | #define OUT_Z_H 0x2D // |
akpc806a | 1:4683702d7ad8 | 177 | #define FIFO_CTRL_REG 0x2E // FIFO mode trigger output pin select (?) |
akpc806a | 1:4683702d7ad8 | 178 | #define FIFO_SRC_REG 0x2F // ?? |
akpc806a | 1:4683702d7ad8 | 179 | #define INT1_CFG 0x30 // 6 degree control register |
akpc806a | 1:4683702d7ad8 | 180 | #define INT1_SOURCE 0x31 // axis threshold interrupt control |
akpc806a | 1:4683702d7ad8 | 181 | #define INT1_THS 0x32 // INT1 threshold |
akpc806a | 1:4683702d7ad8 | 182 | #define INT1_DURATION 0x33 // INT1 duration |
akpc806a | 1:4683702d7ad8 | 183 | #define CLICK_CFG 0x38 // click on axis |
akpc806a | 1:4683702d7ad8 | 184 | #define CLICK_SRC 0x39 // other click |
akpc806a | 1:4683702d7ad8 | 185 | #define CLICK_THS 0x3A // more click |
akpc806a | 1:4683702d7ad8 | 186 | #define TIME_LIMIT 0x3B // click related |
akpc806a | 1:4683702d7ad8 | 187 | #define TIME_LATENCY 0x3C // and so on |
akpc806a | 1:4683702d7ad8 | 188 | #define TIME_WINDOW 0x3D // contined click |
akpc806a | 1:4683702d7ad8 | 189 | |
akpc806a | 1:4683702d7ad8 | 190 | #define SCALE_2G 0x00 //(b00000000) // +/- 2G sensitivity |
akpc806a | 1:4683702d7ad8 | 191 | #define SCALE_4G 0x10 //(b00010000) // +/- 4G sensitivity |
akpc806a | 1:4683702d7ad8 | 192 | #define SCALE_8G 0x20 //(b00100000) // +/- 8G sensitivity |
akpc806a | 1:4683702d7ad8 | 193 | #define SCALE_16G 0x30 //(b00110000) // +/- 16G sensitivity |
akpc806a | 1:4683702d7ad8 | 194 | #define RATE_1HZ 0x10 //(b00010000) // 1Hz sample rate in normal or low-power mode |
akpc806a | 1:4683702d7ad8 | 195 | #define RATE_10HZ 0x20 //(b00100000) // 10Hz sample rate in normal or low-power mode |
akpc806a | 1:4683702d7ad8 | 196 | #define RATE_25HZ 0x30 //(b00110000) // 25Hz sample rate in normal or low-power mode |
akpc806a | 1:4683702d7ad8 | 197 | #define RATE_50HZ 0x40 //(b01000000) // 50Hz sample rate in normal or low-power mode |
akpc806a | 1:4683702d7ad8 | 198 | #define RATE_100HZ 0x50 //(b01010000) // 100Hz sample rate in normal or low-power mode |
akpc806a | 1:4683702d7ad8 | 199 | #define RATE_200HZ 0x60 //(b01100000) // 200Hz sample rate in normal or low-power mode |
akpc806a | 1:4683702d7ad8 | 200 | #define RATE_400HZ 0x70 //(b01110000) // 400Hz sample rate in normal or low-power mode |
akpc806a | 1:4683702d7ad8 | 201 | #define RATE_1600HZ_LP 0x80 //(b10000000) // 1600Hz sample rate in low-power mode |
akpc806a | 1:4683702d7ad8 | 202 | #define RATE_1250HZ_N 0x90 //(b10010000) // 1250Hz sample rate in normal mode |
akpc806a | 1:4683702d7ad8 | 203 | #define RATE_5000HZ_LP 0x90 //(b10010000) // 5000Hz sample rate in low-power mode |
akpc806a | 1:4683702d7ad8 | 204 | #define ACCEL_AXIS_X 0x07 // x axis |
akpc806a | 1:4683702d7ad8 | 205 | #define ACCEL_AXIS_Y 0x08 // y axis |
akpc806a | 1:4683702d7ad8 | 206 | #define ACCEL_AXIS_Z 0x09 // z axis |
akpc806a | 1:4683702d7ad8 | 207 | |
akpc806a | 1:4683702d7ad8 | 208 | // OPENBCI_COMMANDS |
akpc806a | 1:4683702d7ad8 | 209 | /** Turning channels off */ |
akpc806a | 1:4683702d7ad8 | 210 | #define OPENBCI_CHANNEL_OFF_1 '1' |
akpc806a | 1:4683702d7ad8 | 211 | #define OPENBCI_CHANNEL_OFF_2 '2' |
akpc806a | 1:4683702d7ad8 | 212 | #define OPENBCI_CHANNEL_OFF_3 '3' |
akpc806a | 1:4683702d7ad8 | 213 | #define OPENBCI_CHANNEL_OFF_4 '4' |
akpc806a | 1:4683702d7ad8 | 214 | #define OPENBCI_CHANNEL_OFF_5 '5' |
akpc806a | 1:4683702d7ad8 | 215 | #define OPENBCI_CHANNEL_OFF_6 '6' |
akpc806a | 1:4683702d7ad8 | 216 | #define OPENBCI_CHANNEL_OFF_7 '7' |
akpc806a | 1:4683702d7ad8 | 217 | #define OPENBCI_CHANNEL_OFF_8 '8' |
akpc806a | 1:4683702d7ad8 | 218 | #define OPENBCI_CHANNEL_OFF_9 'q' |
akpc806a | 1:4683702d7ad8 | 219 | #define OPENBCI_CHANNEL_OFF_10 'w' |
akpc806a | 1:4683702d7ad8 | 220 | #define OPENBCI_CHANNEL_OFF_11 'e' |
akpc806a | 1:4683702d7ad8 | 221 | #define OPENBCI_CHANNEL_OFF_12 'r' |
akpc806a | 1:4683702d7ad8 | 222 | #define OPENBCI_CHANNEL_OFF_13 't' |
akpc806a | 1:4683702d7ad8 | 223 | #define OPENBCI_CHANNEL_OFF_14 'y' |
akpc806a | 1:4683702d7ad8 | 224 | #define OPENBCI_CHANNEL_OFF_15 'u' |
akpc806a | 1:4683702d7ad8 | 225 | #define OPENBCI_CHANNEL_OFF_16 'i' |
akpc806a | 1:4683702d7ad8 | 226 | |
akpc806a | 1:4683702d7ad8 | 227 | /** Turn channels on */ |
akpc806a | 1:4683702d7ad8 | 228 | #define OPENBCI_CHANNEL_ON_1 '!' |
akpc806a | 1:4683702d7ad8 | 229 | #define OPENBCI_CHANNEL_ON_2 '@' |
akpc806a | 1:4683702d7ad8 | 230 | #define OPENBCI_CHANNEL_ON_3 '#' |
akpc806a | 1:4683702d7ad8 | 231 | #define OPENBCI_CHANNEL_ON_4 '$' |
akpc806a | 1:4683702d7ad8 | 232 | #define OPENBCI_CHANNEL_ON_5 '%' |
akpc806a | 1:4683702d7ad8 | 233 | #define OPENBCI_CHANNEL_ON_6 '^' |
akpc806a | 1:4683702d7ad8 | 234 | #define OPENBCI_CHANNEL_ON_7 '&' |
akpc806a | 1:4683702d7ad8 | 235 | #define OPENBCI_CHANNEL_ON_8 '*' |
akpc806a | 1:4683702d7ad8 | 236 | #define OPENBCI_CHANNEL_ON_9 'Q' |
akpc806a | 1:4683702d7ad8 | 237 | #define OPENBCI_CHANNEL_ON_10 'W' |
akpc806a | 1:4683702d7ad8 | 238 | #define OPENBCI_CHANNEL_ON_11 'E' |
akpc806a | 1:4683702d7ad8 | 239 | #define OPENBCI_CHANNEL_ON_12 'R' |
akpc806a | 1:4683702d7ad8 | 240 | #define OPENBCI_CHANNEL_ON_13 'T' |
akpc806a | 1:4683702d7ad8 | 241 | #define OPENBCI_CHANNEL_ON_14 'Y' |
akpc806a | 1:4683702d7ad8 | 242 | #define OPENBCI_CHANNEL_ON_15 'U' |
akpc806a | 1:4683702d7ad8 | 243 | #define OPENBCI_CHANNEL_ON_16 'I' |
akpc806a | 1:4683702d7ad8 | 244 | |
akpc806a | 1:4683702d7ad8 | 245 | /** Test Signal Control Commands |
akpc806a | 1:4683702d7ad8 | 246 | * 1x - Voltage will be 1 * (VREFP - VREFN) / 2.4 mV |
akpc806a | 1:4683702d7ad8 | 247 | * 2x - Voltage will be 2 * (VREFP - VREFN) / 2.4 mV |
akpc806a | 1:4683702d7ad8 | 248 | */ |
akpc806a | 1:4683702d7ad8 | 249 | #define OPENBCI_TEST_SIGNAL_CONNECT_TO_DC 'p' |
akpc806a | 1:4683702d7ad8 | 250 | #define OPENBCI_TEST_SIGNAL_CONNECT_TO_GROUND '0' |
akpc806a | 1:4683702d7ad8 | 251 | #define OPENBCI_TEST_SIGNAL_CONNECT_TO_PULSE_1X_FAST '=' |
akpc806a | 1:4683702d7ad8 | 252 | #define OPENBCI_TEST_SIGNAL_CONNECT_TO_PULSE_1X_SLOW '-' |
akpc806a | 1:4683702d7ad8 | 253 | #define OPENBCI_TEST_SIGNAL_CONNECT_TO_PULSE_2X_FAST ']' |
akpc806a | 1:4683702d7ad8 | 254 | #define OPENBCI_TEST_SIGNAL_CONNECT_TO_PULSE_2X_SLOW '[' |
akpc806a | 1:4683702d7ad8 | 255 | |
akpc806a | 1:4683702d7ad8 | 256 | /** Channel Setting Commands */ |
akpc806a | 1:4683702d7ad8 | 257 | #define OPENBCI_CHANNEL_CMD_ADC_Normal '0' |
akpc806a | 1:4683702d7ad8 | 258 | #define OPENBCI_CHANNEL_CMD_ADC_Shorted '1' |
akpc806a | 1:4683702d7ad8 | 259 | #define OPENBCI_CHANNEL_CMD_ADC_BiasDRP '6' |
akpc806a | 1:4683702d7ad8 | 260 | #define OPENBCI_CHANNEL_CMD_ADC_BiasDRN '7' |
akpc806a | 1:4683702d7ad8 | 261 | #define OPENBCI_CHANNEL_CMD_ADC_BiasMethod '2' |
akpc806a | 1:4683702d7ad8 | 262 | #define OPENBCI_CHANNEL_CMD_ADC_MVDD '3' |
akpc806a | 1:4683702d7ad8 | 263 | #define OPENBCI_CHANNEL_CMD_ADC_Temp '4' |
akpc806a | 1:4683702d7ad8 | 264 | #define OPENBCI_CHANNEL_CMD_ADC_TestSig '5' |
akpc806a | 1:4683702d7ad8 | 265 | #define OPENBCI_CHANNEL_CMD_BIAS_INCLUDE '1' |
akpc806a | 1:4683702d7ad8 | 266 | #define OPENBCI_CHANNEL_CMD_BIAS_REMOVE '0' |
akpc806a | 1:4683702d7ad8 | 267 | #define OPENBCI_CHANNEL_CMD_CHANNEL_1 '1' |
akpc806a | 1:4683702d7ad8 | 268 | #define OPENBCI_CHANNEL_CMD_CHANNEL_2 '2' |
akpc806a | 1:4683702d7ad8 | 269 | #define OPENBCI_CHANNEL_CMD_CHANNEL_3 '3' |
akpc806a | 1:4683702d7ad8 | 270 | #define OPENBCI_CHANNEL_CMD_CHANNEL_4 '4' |
akpc806a | 1:4683702d7ad8 | 271 | #define OPENBCI_CHANNEL_CMD_CHANNEL_5 '5' |
akpc806a | 1:4683702d7ad8 | 272 | #define OPENBCI_CHANNEL_CMD_CHANNEL_6 '6' |
akpc806a | 1:4683702d7ad8 | 273 | #define OPENBCI_CHANNEL_CMD_CHANNEL_7 '7' |
akpc806a | 1:4683702d7ad8 | 274 | #define OPENBCI_CHANNEL_CMD_CHANNEL_8 '8' |
akpc806a | 1:4683702d7ad8 | 275 | #define OPENBCI_CHANNEL_CMD_CHANNEL_9 'Q' |
akpc806a | 1:4683702d7ad8 | 276 | #define OPENBCI_CHANNEL_CMD_CHANNEL_10 'W' |
akpc806a | 1:4683702d7ad8 | 277 | #define OPENBCI_CHANNEL_CMD_CHANNEL_11 'E' |
akpc806a | 1:4683702d7ad8 | 278 | #define OPENBCI_CHANNEL_CMD_CHANNEL_12 'R' |
akpc806a | 1:4683702d7ad8 | 279 | #define OPENBCI_CHANNEL_CMD_CHANNEL_13 'T' |
akpc806a | 1:4683702d7ad8 | 280 | #define OPENBCI_CHANNEL_CMD_CHANNEL_14 'Y' |
akpc806a | 1:4683702d7ad8 | 281 | #define OPENBCI_CHANNEL_CMD_CHANNEL_15 'U' |
akpc806a | 1:4683702d7ad8 | 282 | #define OPENBCI_CHANNEL_CMD_CHANNEL_16 'I' |
akpc806a | 1:4683702d7ad8 | 283 | #define OPENBCI_CHANNEL_CMD_GAIN_1 '0' |
akpc806a | 1:4683702d7ad8 | 284 | #define OPENBCI_CHANNEL_CMD_GAIN_2 '1' |
akpc806a | 1:4683702d7ad8 | 285 | #define OPENBCI_CHANNEL_CMD_GAIN_4 '2' |
akpc806a | 1:4683702d7ad8 | 286 | #define OPENBCI_CHANNEL_CMD_GAIN_6 '3' |
akpc806a | 1:4683702d7ad8 | 287 | #define OPENBCI_CHANNEL_CMD_GAIN_8 '4' |
akpc806a | 1:4683702d7ad8 | 288 | #define OPENBCI_CHANNEL_CMD_GAIN_12 '5' |
akpc806a | 1:4683702d7ad8 | 289 | #define OPENBCI_CHANNEL_CMD_GAIN_24 '6' |
akpc806a | 1:4683702d7ad8 | 290 | #define OPENBCI_CHANNEL_CMD_LATCH 'X' |
akpc806a | 1:4683702d7ad8 | 291 | #define OPENBCI_CHANNEL_CMD_POWER_OFF '1' |
akpc806a | 1:4683702d7ad8 | 292 | #define OPENBCI_CHANNEL_CMD_POWER_ON '0' |
akpc806a | 1:4683702d7ad8 | 293 | #define OPENBCI_CHANNEL_CMD_SET 'x' |
akpc806a | 1:4683702d7ad8 | 294 | #define OPENBCI_CHANNEL_CMD_SRB1_CONNECT '1' |
akpc806a | 1:4683702d7ad8 | 295 | #define OPENBCI_CHANNEL_CMD_SRB1_DISCONNECT '0' |
akpc806a | 1:4683702d7ad8 | 296 | #define OPENBCI_CHANNEL_CMD_SRB2_CONNECT '1' |
akpc806a | 1:4683702d7ad8 | 297 | #define OPENBCI_CHANNEL_CMD_SRB2_DISCONNECT '0' |
akpc806a | 1:4683702d7ad8 | 298 | |
akpc806a | 1:4683702d7ad8 | 299 | /** Default Channel Settings */ |
akpc806a | 1:4683702d7ad8 | 300 | #define OPENBCI_CHANNEL_DEFAULT_ALL_SET 'd' |
akpc806a | 1:4683702d7ad8 | 301 | #define OPENBCI_CHANNEL_DEFAULT_ALL_REPORT 'D' |
akpc806a | 1:4683702d7ad8 | 302 | |
akpc806a | 1:4683702d7ad8 | 303 | /** LeadOff Impedance Commands */ |
akpc806a | 1:4683702d7ad8 | 304 | #define OPENBCI_CHANNEL_IMPEDANCE_LATCH 'Z' |
akpc806a | 1:4683702d7ad8 | 305 | #define OPENBCI_CHANNEL_IMPEDANCE_SET 'z' |
akpc806a | 1:4683702d7ad8 | 306 | #define OPENBCI_CHANNEL_IMPEDANCE_TEST_SIGNAL_APPLIED '1' |
akpc806a | 1:4683702d7ad8 | 307 | #define OPENBCI_CHANNEL_IMPEDANCE_TEST_SIGNAL_APPLIED_NOT '0' |
akpc806a | 1:4683702d7ad8 | 308 | |
akpc806a | 1:4683702d7ad8 | 309 | /** SD card Commands */ |
akpc806a | 1:4683702d7ad8 | 310 | #define OPENBCI_SD_LOG_FOR_HOUR_1 'G' |
akpc806a | 1:4683702d7ad8 | 311 | #define OPENBCI_SD_LOG_FOR_HOUR_2 'H' |
akpc806a | 1:4683702d7ad8 | 312 | #define OPENBCI_SD_LOG_FOR_HOUR_4 'J' |
akpc806a | 1:4683702d7ad8 | 313 | #define OPENBCI_SD_LOG_FOR_HOUR_12 'K' |
akpc806a | 1:4683702d7ad8 | 314 | #define OPENBCI_SD_LOG_FOR_HOUR_24 'L' |
akpc806a | 1:4683702d7ad8 | 315 | #define OPENBCI_SD_LOG_FOR_MIN_5 'A' |
akpc806a | 1:4683702d7ad8 | 316 | #define OPENBCI_SD_LOG_FOR_MIN_15 'S' |
akpc806a | 1:4683702d7ad8 | 317 | #define OPENBCI_SD_LOG_FOR_MIN_30 'F' |
akpc806a | 1:4683702d7ad8 | 318 | #define OPENBCI_SD_LOG_FOR_SEC_14 'a' |
akpc806a | 1:4683702d7ad8 | 319 | #define OPENBCI_SD_LOG_STOP 'j' |
akpc806a | 1:4683702d7ad8 | 320 | |
akpc806a | 1:4683702d7ad8 | 321 | /** Stream Data Commands */ |
akpc806a | 1:4683702d7ad8 | 322 | #define OPENBCI_STREAM_START 'b' |
akpc806a | 1:4683702d7ad8 | 323 | #define OPENBCI_STREAM_STOP 's' |
akpc806a | 1:4683702d7ad8 | 324 | |
akpc806a | 1:4683702d7ad8 | 325 | /** Miscellaneous */ |
akpc806a | 1:4683702d7ad8 | 326 | #define OPENBCI_MISC_QUERY_REGISTER_SETTINGS '?' |
akpc806a | 1:4683702d7ad8 | 327 | #define OPENBCI_MISC_SOFT_RESET 'v' |
akpc806a | 1:4683702d7ad8 | 328 | |
akpc806a | 1:4683702d7ad8 | 329 | /** 16 Channel Commands */ |
akpc806a | 1:4683702d7ad8 | 330 | #define OPENBCI_CHANNEL_MAX_NUMBER_8 'c' |
akpc806a | 1:4683702d7ad8 | 331 | #define OPENBCI_CHANNEL_MAX_NUMBER_16 'C' |
akpc806a | 1:4683702d7ad8 | 332 | |
akpc806a | 1:4683702d7ad8 | 333 | /** Set Packet Type */ |
akpc806a | 1:4683702d7ad8 | 334 | #define OPENBCI_BOARD_MODE_SET '/' |
akpc806a | 1:4683702d7ad8 | 335 | #define OPENBCI_BOARD_MODE_DEFAULT '0' |
akpc806a | 1:4683702d7ad8 | 336 | #define OPENBCI_BOARD_MODE_DEBUG '1' |
akpc806a | 1:4683702d7ad8 | 337 | #define OPENBCI_BOARD_MODE_WIFI '2' |
akpc806a | 1:4683702d7ad8 | 338 | #define OPENBCI_BOARD_MODE_INPUT_ANALOG '3' |
akpc806a | 1:4683702d7ad8 | 339 | #define OPENBCI_BOARD_MODE_INPUT_DIGITAL '4' |
akpc806a | 1:4683702d7ad8 | 340 | |
akpc806a | 1:4683702d7ad8 | 341 | /** Sync Clocks */ |
akpc806a | 1:4683702d7ad8 | 342 | #define OPENBCI_TIME_SET '<' |
akpc806a | 1:4683702d7ad8 | 343 | #define OPENBCI_TIME_STOP '>' |
akpc806a | 1:4683702d7ad8 | 344 | |
akpc806a | 1:4683702d7ad8 | 345 | /** Possible number of channels */ |
akpc806a | 1:4683702d7ad8 | 346 | #define OPENBCI_NUMBER_OF_CHANNELS_DAISY 16 |
akpc806a | 1:4683702d7ad8 | 347 | #define OPENBCI_NUMBER_OF_CHANNELS_DEFAULT 8 |
akpc806a | 1:4683702d7ad8 | 348 | |
akpc806a | 1:4683702d7ad8 | 349 | /** Helpful numbers */ |
akpc806a | 1:4683702d7ad8 | 350 | #define OPENBCI_NUMBER_OF_BOARD_SETTINGS 1 |
akpc806a | 1:4683702d7ad8 | 351 | #define OPENBCI_NUMBER_OF_CHANNEL_SETTINGS 6 |
akpc806a | 1:4683702d7ad8 | 352 | #define OPENBCI_NUMBER_OF_LEAD_OFF_SETTINGS 2 |
akpc806a | 1:4683702d7ad8 | 353 | |
akpc806a | 1:4683702d7ad8 | 354 | /** Possible Sample Rates*/ |
akpc806a | 1:4683702d7ad8 | 355 | #define OPENBCI_SAMPLE_RATE_125 125 |
akpc806a | 1:4683702d7ad8 | 356 | #define OPENBCI_SAMPLE_RATE_250 250 |
akpc806a | 1:4683702d7ad8 | 357 | |
akpc806a | 1:4683702d7ad8 | 358 | /** Packet Size */ |
akpc806a | 1:4683702d7ad8 | 359 | #define OPENBCI_PACKET_SIZE 33 |
akpc806a | 1:4683702d7ad8 | 360 | |
akpc806a | 1:4683702d7ad8 | 361 | /** Impedance Calculation Variables */ |
akpc806a | 1:4683702d7ad8 | 362 | #define OPENBCI_LEAD_OFF_DRIVE_AMPS 0.000000006 |
akpc806a | 1:4683702d7ad8 | 363 | #define OPENBCI_LEAD_OFF_FREQUENCY_HZ 31 |
akpc806a | 1:4683702d7ad8 | 364 | |
akpc806a | 1:4683702d7ad8 | 365 | /** Raw data packet types/codes */ |
akpc806a | 1:4683702d7ad8 | 366 | #define OPENBCI_PACKET_TYPE_V3 0 // 0000 |
akpc806a | 1:4683702d7ad8 | 367 | #define OPENBCI_PACKET_TYPE_TIME_SYNCED 1 // 0001 |
akpc806a | 1:4683702d7ad8 | 368 | #define OPENBCI_PACKET_TYPE_TIME_SET 2 // 0010 |
akpc806a | 1:4683702d7ad8 | 369 | #define OPENBCI_PACKET_TYPE_USER_DEFINED 3 // 0011 |
akpc806a | 1:4683702d7ad8 | 370 | #define OPENBCI_PACKET_TYPE_RAW_AUX 4 // 0100 |
akpc806a | 1:4683702d7ad8 | 371 | |
akpc806a | 1:4683702d7ad8 | 372 | #define OPENBCI_TIME_OUT_MS_1 1 |
akpc806a | 1:4683702d7ad8 | 373 | #define OPENBCI_TIME_OUT_MS_3 3 |
akpc806a | 1:4683702d7ad8 | 374 | |
akpc806a | 1:4683702d7ad8 | 375 | #define OPENBCI_NUMBER_OF_BYTES_SETTINGS_CHANNEL 9 |
akpc806a | 1:4683702d7ad8 | 376 | #define OPENBCI_NUMBER_OF_BYTES_SETTINGS_LEAD_OFF 5 |
akpc806a | 1:4683702d7ad8 | 377 | |
akpc806a | 1:4683702d7ad8 | 378 | #define OPENBCI_NUMBER_OF_BYTES_AUX 6 |
akpc806a | 1:4683702d7ad8 | 379 | |
akpc806a | 1:4683702d7ad8 | 380 | #define OPENBCI_FIRMWARE_VERSION_V1 1 |
akpc806a | 1:4683702d7ad8 | 381 | #define OPENBCI_FIRMWARE_VERSION_V2 1 |
akpc806a | 1:4683702d7ad8 | 382 | |
akpc806a | 1:4683702d7ad8 | 383 | #endif |