This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

FDC2214: sleep mode/active mode for low power application

Part Number: FDC2214
Other Parts Discussed in Thread: LDC1614

Trying to use FDC2214 for low power application and switching from sleep mode to active mode for read of all 4 sensors then back to sleep mode. Using the EVM and python code, this does not seem to work. I need to introduce delay for serial reads or all the data comes back as 0. If i make the delay 4ms i can reliably read channel 1 and sometimes channel 2, but 3 and 4 return 0. If i make the delay 5ms i can occasionally read channel 3 but also sometime have a 650ms delay on one of the channel data reads. Cannot find conditions to read all 4 channels. If i try to use the status.dataready flag reading in a loop until it returns 1 then it always takes ~650ms for flag to be set and data read to start. I should be able to put in active mode, wait ~10ms and collect data from all 4 sensors. How can i make this work? Main loop of python code is below. Thanks.

def main():
    serial_port = serial.Serial(port='COM4', baudrate=115200, timeout=5)
    device_id   = read_reg  (serial_port, LDC1614_DEVICE_ID)
    print("device_id=%s" % (device_id))
    fRaw = open("test_210502" + ".txt",'w')
    FDC_Init(serial_port)

    try:
      while 1:
        time.sleep(0.988)
        status= read_reg(serial_port, LDC1614_STATUS)
        t1=time.time()

        write_reg(serial_port, LDC1614_CONFIG, '1401')

        time.sleep(.005)
        data0=getDataCH(serial_port, 0
        data1=getDataCH(serial_port, 2
        data2=getDataCH(serial_port, 4
        data3=getDataCH(serial_port, 6
        write_reg(serial_port, LDC1614_CONFIG, '3401')      
        t2=time.time()
        tsArr[0]=t2-t1

        cap[0]=getCap(data0)
        cap[1]=getCap(data1)
        cap[2]=getCap(data2)
        cap[3]=getCap(data3)
        
        print(tsArr[0])
        print(cap[0])
        print(cap[1])
        print(cap[2])
        print(cap[3])
        
        fRaw.write("\t ".join(str(x) for x in tsArr) + "\t " + "\t ".join(str(x) for x in cap)+'\n')

  • Hi Joshua,

    Thank you for posting.

    The data registers will read back as 0 when in sleep mode, however conversions should start again when in normal mode. You should be able to write 0x1E01 to the Config register to put the device in active mode, and then write 0x3E01 to switch to sleep mode.

    Do you have oscilloscope captures of the I²C read that you could share?

    Best regards,
    Nicole