13 Replies Latest reply on Dec 15, 2019 6:18 PM by XiaoweiZ_71

    触摸基线数值获取

    yach_4179311

      你好:

              我的客户有个调试需求,就是在I2C中传送触摸的每一个按键的基线数值,我在程序中给他传的是

        /**

           *  The sensor baseline.

           */

          uint16 bsln [CapSense_NUM_SCAN_FREQS];

      这个值不知道是不是跟TUNER中获取的基线值是一样的?谢谢

        • 1. Re: 触摸基线数值获取
          XiaoweiZ_71

          这个参数就是 sensor baseline 的放置位置。不过你可以直接用下面的函数来获取 rc/bl/df, 方便一些。

           

          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 GetDiff(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;

          }

          • 2. Re: 触摸基线数值获取
            yach_4179311

            dear sir

                     感谢回复,是这个数据就好,但是我的客户在实际使用时遇到个问题,就是他的这个获取基线值功能是一个特殊功能,他在平时正常操作时是不会切换到这个功能的,但是在切换到这个功能后这个基线数据会一直向上飘,我正常用TUNER看某一个按键的基线是2400-2403左右,但是用这个功能读取基线时就会一直升高从2433升到2490,客户提出他是正常上电后使用了1个小时左右,如果有不稳定升高这一个小时时间也该稳定了,为什么是切换到他这个获取基线数值功能时才会有这个上升的变化?

            • 3. Re: 触摸基线数值获取
              XiaoweiZ_71

              Baseline 是通过 Rawdata  的增长趋势计算得出的,你可以把它理解为是 Rawdata 经过特定滤波之后的输出值,Baseline 自身的增加和减小均是由 Rawdata 的波动来决定。你看到的现象应该是 sensor  rawdata 缓慢增长导致的结果,至于 sensor rawdata 的缓慢增长,常见的因素有环境温度的增加,环境湿度的增加等。 请问你的产品中 sensor pad 周围是否有大屏幕,功率LED灯等发热源,会导致结构温升?

              • 4. Re: 触摸基线数值获取
                yach_4179311

                dear sir

                        这个项目没有您说的大屏幕,客户使用的是LED灯IO口扫描显示的数字,客户是2个控制芯片,我们的是4014SXI-421,我们这个只负责触摸按键功能,而数字显示和控制是另外一个主芯片操作的,他们之间是I2C通信的。环境温度这个也是正常的室温。

                • 5. Re: 触摸基线数值获取
                  XiaoweiZ_71

                  按键的扫描周期与是否打印 baseline 数据是否有关系,比如使能 baseline 打印功能以后,按键的扫描周期会比之前更小?

                   

                  请问目前的产品是否有低功耗设计,如果芯片会进入深睡眠的话,EZI2C 被主机 ping 时,触摸芯片也会被唤醒(使能 EZI2C Wakeup from deepsleep 功能),此时芯片的正常扫描周期就被打断了,每一次正常唤醒和每一次EZI2C 被主机 ping 都会让芯片唤醒并执行一遍按键扫描逻辑,按键本身扫描周期从固定值变为不定值,此时 sensor 的 rawdata 可能会从之前的一个数值过度到另一个数值,因为按键的寄生电容 CP 并不是恒定不变的, 如果周围的电场环境发生了变化,CP也会发生微弱的变化,并最终导致 rawdata 从一个稳态过渡到另一个稳态。 

                   

                  同样的道理,默认情况下 baseline 数据不打印,固件执行一套逻辑, baseline 数据开始打印,固件执行的是另一套逻辑。这两套逻辑如果差别很大的话,也会导致 sensor 周围场环境发生变化。 你可以让客户从板子上电开始一直使能打印,看这个问题是否还可以复现。

                  • 6. Re: 触摸基线数值获取
                    yach_4179311

                    1,按键的扫描周期不变,唯一的差别就是在进入获取基线功能后主控芯片获取的数据要多些(增加了基线的数值),4010一共10个按键,就丢10个基线的数据,主控的板子要获取哪个自己获取就可以。

                     

                    2,低功耗功能不在这个逻辑操作里跑,只在主芯片待机后会执行。

                    3,2个功能逻辑差别不大,只是在正常逻辑下增加了显示基线的逻辑

                    • 7. Re: 触摸基线数值获取
                      XiaoweiZ_71

                      把数据改成打印 rawdata 把, 这个才是电容转换的量化值,比较直观,然后查看一下 rawdata 是否也存在同样的特征,一打印数据就上升(不打印的话数据在回归之前水平?)

                      • 8. Re: 触摸基线数值获取
                        yach_4179311

                        rawdata值变化比较快,在显示时低2位一直在跳动,不能稳定显示,也不好确认这个问题。

                        • 9. Re: 触摸基线数值获取
                          XiaoweiZ_71

                          我们看的是 RAWDATA 的增长趋势,不是具体数值,波动不影响判断,只要采集的窗口时间够长就可以。 如果所有 sensor 的 rawdata 都存在上电缓慢上涨并最终保持稳定的情况,那么就判定上涨与温漂相关,否则的话就需要更深入的判断了,比如触摸走线上如果有 TVS 管的话,有时也会引起此类现象,因为 TVS管的工作电压与结电容有一定的相关性。

                          • 10. Re: 触摸基线数值获取
                            yaxi_1543386

                            Hi VisonZ_71,

                                   客户这边把整个板子都涂了防水胶,4014 芯片也被封在内部,厚度大约在3mm 左右,这种情况下,会导致基线漂移这种情况么?

                                   Thanks.     

                            • 11. Re: 触摸基线数值获取
                              XiaoweiZ_71

                              灌胶和 rawdata 漂移之前没有必然联系。TVS 管在触摸走线上有使用吗?

                              • 12. Re: 触摸基线数值获取
                                yaxi_1543386

                                Hi Vison ,

                                    没有使用TVS 。

                                    Thanks.

                                • 13. Re: 触摸基线数值获取
                                  XiaoweiZ_71

                                  基本确定是温漂导致的,长时间打印 rawdata 数据,如果rawdata 缓慢上升,然后最终区域稳定,这就是典型的温漂。鉴于客户的温漂范围很小,且增长斜率缓慢,所以无风险。