This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] FDC2212:状态读数始终为0

Guru**** 2587365 points
Other Parts Discussed in Thread: FDC2212, FDC2214EVM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/642541/fdc2212-status-reads-always-0

器件型号:FDC2212
主题中讨论的其他器件: FDC2214EVM

我遵循了 fdc2212手册(http://www.ti.com/lit/gpn/fdc2212)第42页上的应用示例

我从 stm32f303 uC 连接 FDC2212、FDC2212对 i2c 通信做出正确响应(返回正确的 manufacturer_ID)、但在读取状态时、我得到0、并且所有值 DATA_CH0和 DATA_LSB_CH0都始终为0。


我出了什么问题?

代码位于:

github.com/.../FDC2212.cpp



在示波器上、我可以清楚地看到18uH 电感器上的信号。 随附示波器图片。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我现在似乎正在读取一些值。 但我得到的是 ERR_ALW。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更改器件的起始位后、I 开始读取值:

    因此此行:

    //0b0 0 1 0 0 0 0 0 00 0001   器件处于激活状态-无睡眠

    固定读数...

    FDC2212_CONFIG_REGADDR 的整个设置        0x1A 寄存器:

        //复位设备

    write16FDC (FDC2212_reset_dev、0b1000000000000000); //重置设备

    //0b00 00 0001            保留

    //0b0 00 0001           正常电流驱动(启用自动扫描)

    //0b0 0 0 00 0001          禁用中断引脚

    //0b0 0 0 00 0001         保留

    //0b0 0 0 0 00 0001        使用内部振荡器

    //0b1 0 0 0 00 0001       保留

    //0b0 1 0 0 0 0 00 0001      全电流模式

    //0b1 0 1 0 0 0 0 00 0001    保留

    //0b0 0 1 0 0 0 0 0 00 0001   器件处于激活状态-无睡眠

    //0b00 0 1 0 0 0 0 0 00 0001  对 CH0进行连续读取

    //FDC2212_CONFIG_REGADDR        0x1A

    write16FDC (FDC2212_CONFIG_REGADDR、0b0001010000000001); //设置配置

    现在、我想扩展 FDC2212的范围-我似乎只能检测3厘米范围内的移动。

    我能否以某种方式调整 PCB (线圈或电容修改?) 还是可以通过软件实现它?

    下面是我使用的原理图:

    感测面积为矩形1cm 宽、长度为9cm。

    此感测区域在 PCB 的另一侧通过栅格接地层进行 GND 屏蔽。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    要扩展 FDC2214EVM 的范围、您可以执行以下操作之一:

    • 使用较大的传感器
    • 请勿在传感器正下方使用接地平面
      • 如果您确实使用接地平面、请使用网格图案而不是实心覆铜、并增加接地平面和传感器之间的间隔
    • 使用较大的 RCOUNT 值来降低系统中的噪声
    • 使用外部40MHz 参考时钟来降低系统中的噪声

    希望这有助于您找到正确的方向!

    此致、

    Luke

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Luke、

    我已经完成了您建议的前两个要点、但这并没有提高灵敏度、并且在初始化芯片时、我已经在代码中使用了 maximal r_count:

       ///rcount 最大化、以实现最高精度
       write16FDC (FDC2212_RCOUNT_CH0_REGADDR、0xFFFF);

    您可以看到视频、其中我显示的灵敏度仍然很小...

    www.youtube.com/watch

    根据 TI webench 站点的说法、使用 fdc2212应该可以实现30cm 的距离感测-或者我缺少什么? 请参阅 webench 的屏幕截图:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Zhivko、

    我们建议使用外部振荡器以获得最佳分辨率。 您如何测量灵敏度?

    您是否从器件中读取 DATAX 寄存器并观察代码变化、因为示波器测量不会非常精确。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上、我还没有预测在硬件上使用外部振荡器。

    这是我从传感器获得的读数。

    由于值有点漂移-我需要找到良好的示例代码来检测手触摸。 因此、当传感器附近没有手时、实际上需要调整 CapSense 的值。

    在底部的图片中、您可以看到手靠近传感器5次。 那么、我如何定义哪个模块应该是用于检测手部触摸的触发值呢? 有什么想法吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我通过计算值的长移动平均值和短移动平均 ov 值来解决这个最新问题。
    通过这种方法、软件可以适应新的(drfting)值。 它现在运行良好。