2 Replies Latest reply on Mar 21, 2019 6:50 PM by huxu_3301281

    how to get baseline data and raw data in capsense project?

    huxu_3301281

      我在项目中需要用到rawdata和baseline的数值,我应该怎么获取?我需要用这些数值做一些计算。

      另外,产品在工作中遇到突发干扰会被误触发,这个应该如何避免?

        • 1. Re: how to get baseline data and raw data in capsense project?
          XiaoweiZ_71

          如果你使用的 CapSense 组件版本为 V2_60 或更早,你可以该组件生成的 CapSense_CSHL.h 中看到如下几个数组的定义,这几个数组分别存放 sensor 的 rawdata, baseline 和 signal, 索引值就是每个 sensor 对应的 ID,在 CapSense.h 中可以看到每个 Sensor 对应的 ID。

          CapSense_sensorRaw[]

          CapSense_sensorBaseline[]

          CapSense_sensorSignal[]

           

           

          如果你使用的是CapSense  V3.0 或更高的版本,那么你可以直接读取 CapSense_RegisterMap.h 中对应的宏定义项来直接读取,比如一个命名为 button0 的 sensor 对应的 rawdata, baseline 和signal 宏定义为,直接读取这些宏定义就可以读取到对应的数据。

          #define CapSense_BUTTON0_SNS0_RAW0_VALUE                  (CapSense_dsRam.snsList.button0[0u].raw[0u])

          #define CapSense_BUTTON0_SNS0_BSLN0_VALUE                 (CapSense_dsRam.snsList.button0[0u].bsln[0u])

          #define CapSense_BUTTON0_SNS0_DIFF_VALUE                  (CapSense_dsRam.snsList.button0[0u].diff)

           

          你也可以考虑使用以下 API 来进行读取, 但是仅限 widget 类型的传感器。

          /********************************************************/

          uint16 GetRaw(uint8 widget)

          {

              uint16 raw = 0;

              CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;

              ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];

              raw = ((CapSense_RAM_SNS_STRUCT *)ptrFlashWdgt->ptr2SnsRam)->raw[0];

             

              return raw;

          }

          uint16 GetBaseline(uint8 widget)

          {

              uint16 baseline = 0;

              CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;

              ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];

              baseline = ((CapSense_RAM_SNS_STRUCT *)ptrFlashWdgt->ptr2SnsRam)->bsln[0];

             

              return baseline;

          }

          uint16 GetSig(uint8 widget)

          {

              uint16 diff = 0;

              CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;

              ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];

              diff = ((CapSense_RAM_SNS_STRUCT *)ptrFlashWdgt->ptr2SnsRam)->diff;

             

              return diff;

          }

          /********************************************************/

           

          产品在工作中遇到突发干扰会被误触发,请问你说的干扰指的是什么干扰? 建议你利用以上方法把误触 sensor 的 rawdata 和 baseline 打印出来,这样才方便分析问题。