在modus3.0.0开发Psoc4获取sensor raw diff

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Jaime
Level 1
Level 1
Distributor - Weikeng(GC)
10 replies posted 10 sign-ins 5 replies posted

Hi,

我在用modus3.0.0开发psoc4时,想要获取sensor的数据,比如:raw、diff、status,我查到有个结构体包含这些数据cy_stc_capsense_sensor_context_t,但是没有找到对应的API,请问下如何获取这个结构体的数据,有没有参考示例?谢谢。

0 点赞
1 解答
Vison_Zhang
Moderator
Moderator
Moderator
First comment on KBA 750 replies posted 250 sign-ins

如果每一个 Button 是一个独立的 widget, 可以使用下面三个API。status 分几类,建议你直接从 CapSense_RegisterMap.h 中拷贝宏定义名称来获取你需要的 status,这样比写一个 API 更方便。

uint16 BtnGetRaw(uint8 widget)
{
uint16 raw = 0u;

CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;
ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];

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

return (raw);
}


uint16 BtnGetBaseline(uint8 widget)
{
uint16 bsln = 0u;

CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;
ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];
bsln = ((CapSense_RAM_SNS_STRUCT *)ptrFlashWdgt->ptr2SnsRam)->bsln[0];

return (bsln);
}

CapSense_THRESHOLD_TYPE BtnGetDiff(uint8 widget)
{
CapSense_THRESHOLD_TYPE diff = 0u;

CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;
ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];
diff = ((CapSense_RAM_SNS_STRUCT *)ptrFlashWdgt->ptr2SnsRam)->diff;

return (diff);
}

如果是一个 widget 下有等多个 sensor 的情况,比如 touchpad, 那么就需要使用下面这三个 API 来获取每个 sensor 的 rw/bl/df 信息, 但需要吧 touchpad0 更换为实际的 widget 名称

uint16 TouchpadGetRaw(uint8 sensor)
{
uint16 raw = 0u;

CapSense_RAM_STRUCT *ptrDsRam;
ptrDsRam = &CapSense_dsRam;

raw = ptrDsRam->snsList.touchpad0[sensor].raw[0];

return (raw);
}

uint16 TouchpadGetBaseline(uint8 sensor)
{
uint16 bsln = 0u;

CapSense_RAM_STRUCT *ptrDsRam;
ptrDsRam = &CapSense_dsRam;

bsln = ptrDsRam->snsList.touchpad0[sensor].bsln[0];

return (bsln);
}

CapSense_THRESHOLD_TYPE TouchpadGetDiff(uint8 sensor)
{
CapSense_THRESHOLD_TYPE diff = 0u;

CapSense_RAM_STRUCT *ptrDsRam;
ptrDsRam = &CapSense_dsRam;

diff = ptrDsRam->snsList.touchpad0[sensor].diff;

return (diff);
}

在原帖中查看解决方案

0 点赞
4 回复数
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

这几个参数没有API可以直接读出来,但是你可以参考链接的方法:

https://community.infineon.com/t5/Knowledge-Base-Articles/Output-PSoC-6-CapSense-Data-Through-EZI2C-...

 

0 点赞
Jaime
Level 1
Level 1
Distributor - Weikeng(GC)
10 replies posted 10 sign-ins 5 replies posted

好的,谢谢。

0 点赞
Vison_Zhang
Moderator
Moderator
Moderator
First comment on KBA 750 replies posted 250 sign-ins

如果每一个 Button 是一个独立的 widget, 可以使用下面三个API。status 分几类,建议你直接从 CapSense_RegisterMap.h 中拷贝宏定义名称来获取你需要的 status,这样比写一个 API 更方便。

uint16 BtnGetRaw(uint8 widget)
{
uint16 raw = 0u;

CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;
ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];

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

return (raw);
}


uint16 BtnGetBaseline(uint8 widget)
{
uint16 bsln = 0u;

CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;
ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];
bsln = ((CapSense_RAM_SNS_STRUCT *)ptrFlashWdgt->ptr2SnsRam)->bsln[0];

return (bsln);
}

CapSense_THRESHOLD_TYPE BtnGetDiff(uint8 widget)
{
CapSense_THRESHOLD_TYPE diff = 0u;

CapSense_FLASH_WD_STRUCT const * ptrFlashWdgt;
ptrFlashWdgt = &CapSense_dsFlash.wdgtArray[widget];
diff = ((CapSense_RAM_SNS_STRUCT *)ptrFlashWdgt->ptr2SnsRam)->diff;

return (diff);
}

如果是一个 widget 下有等多个 sensor 的情况,比如 touchpad, 那么就需要使用下面这三个 API 来获取每个 sensor 的 rw/bl/df 信息, 但需要吧 touchpad0 更换为实际的 widget 名称

uint16 TouchpadGetRaw(uint8 sensor)
{
uint16 raw = 0u;

CapSense_RAM_STRUCT *ptrDsRam;
ptrDsRam = &CapSense_dsRam;

raw = ptrDsRam->snsList.touchpad0[sensor].raw[0];

return (raw);
}

uint16 TouchpadGetBaseline(uint8 sensor)
{
uint16 bsln = 0u;

CapSense_RAM_STRUCT *ptrDsRam;
ptrDsRam = &CapSense_dsRam;

bsln = ptrDsRam->snsList.touchpad0[sensor].bsln[0];

return (bsln);
}

CapSense_THRESHOLD_TYPE TouchpadGetDiff(uint8 sensor)
{
CapSense_THRESHOLD_TYPE diff = 0u;

CapSense_RAM_STRUCT *ptrDsRam;
ptrDsRam = &CapSense_dsRam;

diff = ptrDsRam->snsList.touchpad0[sensor].diff;

return (diff);
}

0 点赞
Jaime
Level 1
Level 1
Distributor - Weikeng(GC)
10 replies posted 10 sign-ins 5 replies posted

Hi Vison,

收到,感谢。

0 点赞