I have hard time using an auto-increment feature for reading ECG registers. If I specify to read 3 registers for one channel, I get correct data, but if I specify to read 9 registers, I get proper data for the channel 1 and random-ish noise on channels 2 and 3.
If I make three separate calls to read 3 bytes from 0x37, 0x3A and 0x3D, I get correct data for every channel.
I have tried configuring output of 3 ECG channels via DATA_LOOP register, but the result is the same - values are correct for the first channel and bogus for channels 2 and 3.
Do I have to configure the chip in some special way to make this feature work? Do I have a buggy revision of the chip? My configuration is as follows:
{FLEX_CH1_CN, 0x11}, //0x01 //IN2 - IN1 {FLEX_CH2_CN, 0x13}, //0x02 //IN2 - IN3 {FLEX_CH3_CN, 0x0B}, //0x03 //IN1 - IN3 {LOD_CN, 0x00}, //0x06 {LOD_EN, 0x00}, //0x07 {CMDET_EN, 0x07}, //0x0a {RLD_CN, 0x04}, //0x0c {AFE_RES, 0x3f}, //0x13 {AFE_SHDN_CN, 0x00}, //0x14 {CH_CNFG, 0x70}, //0x2f {R2_RATE, 0x01}, //0x21 {R3_RATE_CH1, 0x80}, //0x22 {R3_RATE_CH2, 0x80}, //0x23 {R3_RATE_CH3, 0x80}, //0x24 {R1_RATE, 0x00}, //0x25 {DRDYB_SRC, 0x20}, //0x27 {FLEX_PACE_CN, 0x00}, //0x04 {FLEX_VBAT_CN, 0x00}, //0x05 {LOD_CURRENT, 0x0a}, //0x08 {LOD_AC_CN, 0x00}, //0x09 {CMDET_CN, 0x00}, //0x0b {WILSON_EN1, 0x00}, //0x0d {WILSON_EN2, 0x00}, //0x0e {WILSON_EN3, 0x00}, //0x0f {WILSON_CN, 0x00}, //0x10 {REF_CN, 0x00}, //0x11 {OSC_CN, 0x04}, //0x12 {AFE_FAULT_CN, 0x00}, //0x15 {AFE_PACE_CN, 0x01}, //0x17 {DIGO_STRENGTH, 0x00}, //0x1F {DIS_EFILTER, 0x00}, //0x26 {SYNCB_CN, 0x00}, //0x28 {MASK_DRDYB, 0x00}, //0x29 {MASK_ERR, 0x00}, //0x2a {ALARM_FILTER, 0x33}, //0x2e