- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
我在项目中需要用到rawdata和baseline的数值,我应该怎么获取?我需要用这些数值做一些计算。
另外,产品在工作中遇到突发干扰会被误触发,这个应该如何避免?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
如果你使用的 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 打印出来,这样才方便分析问题。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
如果你使用的 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 打印出来,这样才方便分析问题。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
谢谢您的答疑解惑。