AnsweredAssumed Answered

Continuous bioimpedance measurement

Question asked by olegsv on Feb 28, 2016
Latest reply on Jul 3, 2017 by devangs3

Hello,

 

We are working with the ADuCM350 and have started off with the ImpedanceMeasurement_4WireBioIsolated example, and would like to perform continuous impedance measurement along the body/skin.

  1. The example code only shows a one-time measurement. The AFE sequence there performs 2 DFTs (one for current via TIA and another for voltage), and waits ~13 msecs in between each one. Does this mean that the sampling rate limit to get both is 39 sps?
  2. In order to perform continuous measurement, a naive method seems to be to call a blocking adi_AFE_RunSequence in a loop once initialized with configuration. However, we'd prefer not to use a loop to minimize overhead and free up the Cortex for other tasks. Can we instead keep WAVEGEN_EN = 1 continuously and have the DMA write to a FIFO that we can then read and process as needed, or do we need to toggle the wave generator at each loop and resent the sequence?
        /* TIA  */
        0x86007788,   /* DMUX_STATE = 8, PMUX_STATE = 8, NMUX_STATE = 7, TMUX_STATE = 7         */
        0xA0000002,   /* AFE_ADC_CFG: TIA, no bypass, offset and gain correction.               */
        0x80024EF0,   /* AFE_CFG: WAVEGEN_EN = 1                                                */
        0x00000C80,   /* Wait 200us                                                             */
        0x8002CFF0,   /* AFE_CFG: ADC_CONV_EN = 1, DFT_EN = 1                                   */
        0x00032340,   /* Wait 13ms ( -148us to stop at midscale)                                */
        0x80020EF0,   /* AFE_CFG: ADC_CONV_EN = 0, DFT_EN = 0                                   */
        /* AN_A */
        0xA0000208,   /* AFE_ADC_CFG: AN_A, Use GAIN and OFFSET AUX                             */
        0x00000640,   /* Wait 100us                                                             */
        0x80024EF0,   /* AFE_CFG: WAVEGEN_EN = 1                                                */
        0x00000C80,   /* Wait 200us                                                             */
        0x8002CFF0,   /* AFE_CFG: ADC_CONV_EN = 1, DFT_EN = 1                                   */
        0x00032340,   /* Wait 13ms                                                              */
        0x80020EF0,   /* AFE_CFG: WAVEGEN_EN, ADC_CONV_EN = 0, DFT_EN = 0                       */
        0x86007788,   /* DMUX_STATE = 0, PMUX_STATE = 0, NMUX_STATE = 0, TMUX_STATE = 0         */
        0x82000002,   /* AFE_SEQ_CFG: SEQ_EN = 0                                                */
  3. We've also been modifying the instruction sequence to the AFE (that we want to use to perform continuous measurements), but are getting underflow errors (via hDevice->seqError). Thoughts?
  4. For development purposes, is it alright to completely disable the CRC to make things easier? Is there a high expected error rate without it?

 

Thanks a bunch!

Outcomes