电容传感器FDC2214单通道应用寄存器计算

陈拓 2021/03/10-2021/03/14

1. 概述

在《FDC系列电容传感器及FDC2214使用要点》

https://zhuanlan.zhihu.com/p/353481800

https://blog.csdn.net/chentuo2000/article/details/114213785

一文中介绍了多通道应用的寄存器初始值计算。

本文单通道0应用时的寄存器初始值的计算。

计算结果的验证见:

《电容传感器FDC2214计算工具FDC_Tools-development5的使用》

2. FDC2214寄存器设置

在我的应用中使用单通道、单端模式,使用外部参考时钟。

2.1 启动模式

接通FDC电源后,它进入休眠模式Sleep Mode并等待配置。一旦器件被配置,就可以通过设置CONFIG寄存器0x1A的SLEEP_MODE_EN位为b0退出休眠模式。

2.2 休眠模式

建议在睡眠模式下配置FDC。如果需要更改FDC的设置,要先设置CONFIG寄存器0x1A的SLEEP_MODE_EN位为b1返回休眠模式,更改相应的寄存器,然后再退出休眠模式。

2.3 原理图

传感器极板连接到通道0的IN0A引脚,IN0B引脚悬空,如图所示。

2.4 传感器工作频率

传感器使用18µH电感器和33pF电容器。另外,引脚、走线和导线电容约为20pF,因此总电容约为53pF。LC震荡频率:

fSENSOR=1/2π√(LC)=1/2π√(18*10-6*53*10-12)=5.15MHz

这表示传感器频率的最大值。当传感器电容增加时,频率会降低。也就是被测量的电容越大,fSENSOR值越小。

2.5 系统时钟

可以从CLKIN引脚输入使用外部系统主时钟,也可以灵活设置内部时钟频率。我们使用40MHz的外部时钟,即fCLK=40MHz。fREFx=fCLK/CHx_FREF_DIVIDER。

2.6 输出数据

由数据手册可知:

即输出数据是传感器频率与参考频率的比值。被测量的电容越大,输出值DATA越小。

3. 寄存器初始值计算

设置测量时间,确定设备的最佳时序设置在很大程度上取决于应用和传感器设计,但一般应考虑以下几点:

  • 每个通道应尽可能具有最大参考频率。
  • 转换计数需要足够长,但增加任意计数数量不会产生任何价值,只会降低采样率。 参考数据手册以计算最佳转换计数。
  • 参考计数对测量精度的影响最大。增加参考计数会使测量结果更准确,但代价是降低采样率。基于参考计数,计算每个通道的有效位数。

3.1 时钟配置

  • 确定参考时钟分配器CH0_FREF_DIVIDER的值

在图中,关键时钟是fIN、fREF和fCLK(在图中用粗体显示)。fCLK可以从内部时钟源或外部时钟源(CLKIN)中选择,由寄存器0x1A的REF_CLK_SRC位设置。频率测量基准时钟fREF由fCLK源导出,由寄存器0x14-0x17的CHx_FREF_DIVIDER位对应通道0-通道3设置。精密应用建议使用外部主时钟,以提供应用所需的稳定性和准确性。内部振荡器可用于不需要高精度,要求低成本的应用中。fINx时钟由通道x的传感器频率fSENSORx导出,由寄存器0x14-0x17的CHx_FIN_SEL位对应通道0-通道3设置。fREFx和fINx必须满足表1中列出的要求,这取决于fCLK(主时钟)是内部还是外部时钟外部时钟。

我们的应用选择单通道0,从表中可以看出不论外部还是内部时钟源,都要求fREF0≤35MHz,因此CH0_FREF_DIVIDER设置为b10,即除以2。

fREF0=fCLK/CH0_FREF_DIVIDER=40/2=20MHz

  • 确定传感器通道0的分频器CH0_FIN_SEL的值

对于单端传感器配置寄存器0x14的CH0_FIN_SEL域为b10。

  • 确定寄存器0x14的值

15:14 b00保留

13:12 对于单端传感器配置,前面计算过传感器频率fSENSOR<5.15 MHz,所以选b10

11:10 b00保留

9:2 CH0_FREF_DIVIDER b00’0000’0010

寄存器0x14的综合值为0x2002(b0010’0000’0000’0010)

  • 时钟约束

从table 1可知fINx < fREFx/4

在寄存器0x14中已设置CH0_FIN_SEL为b10,所以

fIN0=fSENSOR0/2=5.15/2=2.58MHz

fREF0/4=20/4=5MHz

满足约束fIN0 < fREF0/4

3.2 传感器驱动电流

CHx_IDRIVE域的编程应确保传感器振幅在1.2Vpk(VSENSORMIN)和1.8Vpk(VSENSORMAX)之间。通过设置通道的电流驱动值来控制电压幅度,测量示波器上的振荡幅度,并调整IDRIVE值以确定最佳设置。在这种情况下,IDRIVE值应设置为15(十进制),相应的振幅为1.68 V(pk)。DRIVE_CURRENT_CH0寄存0x1E的合并值为0x7800(b0111’1000’0000’0000)。

寄存器0x1E的15:11位为b01111时对应的电流IDRIVE0为0.146mA。

可以使用较低的VSENSORMIN振荡幅度,但会导致较低的信噪比。

高于VSENSORMAX的振荡幅度不建议使用,因为这时ESD钳位将转换为LC振荡电路的一部分,导致频移。

3.3 时间序列

在单通道连续采样的情况下,当FDC序列以单通道模式通过通道时,第一次转换之前有一个传感器激活时间sensor activation time,之后次转换时间间隔是由二个部分组成的:

1) 转换时间conversion

2) 振幅校正时间Amplitude Correction

为了降低功耗,我们不需要连续采样,在一次采样之后让器件进入休眠模式Sleep Mode。这样每次转换的时间间隔就由三部分组成:

1) 传感器激活时间sensor activation

2) 转换时间conversion

3) 振幅校正Amplitude Correction

传感器激活时间是传感器振荡所需的稳定时间(tS0),这个时间是可编程的,并且应设置足够长以获得稳定的振荡。

3.4 计算稳定时间(tS0)

  • 计算CH0_SETTLECOUNT

约束条件:CH0_SETTLECOUNT > Vpk*fREF0*C*π2/(32*IDRIVE0)

Vpk*fREF0*C*π2/(32*IDRIVE0)=

1.68*20*106*53*10-12 * 3.142/(32*146*10-6)=3.76

四舍五入为4。为了提供冗余以保证系统公差,选择更高的值10。所以,寄存器0x10的CH0_SETTLECOUNT域应至少编程为10(0x0A)。

这也满足Table 1中给出约束:CHx_SETTLECOUNT > 3

  • 稳定时间

从Table 5和Table 28的说明可知,通道0的稳定等待时间tS0(settle time)由下式给出:

(tS0)= (CH0_SETTLECOUNTˣ16) ÷ fREF0 =

(10*16)/20,000,000=8µs

注意:图中Address 0x11应为Address 0x10。

3.5 振幅校正时间

手册中未给出振幅校正时间,我们参考多通道应用的通道切换时间,当fREF=20MHz时,信道切换延迟channel switching delay约为2μs,参考数据手册:

3.6 计算转换时间

应用需要100SPS(TSAMPLE=10ms),通道0转换时间为:

 (tC0)=(TSAMPLE - settle time - channel switching delay) =

(10,000-8-1) = 9991 = 9.991ms

由Table 20,转换时间(tC0)=(CH0_RCOUNT*16)/fREF0

CH0_RCOUNT=(tC0)*fREF0/16=9.991*10-3*20*106/16=12488(0x30C8)

设置CH0_RCOUNT寄存器(0x08)为0x30C8

有效位数ENOB

必须选择参考计数值以支持所需的有效位数(ENOB)。例如,如果需要13位的ENOB,则最小转换时间为 个时钟周期。8192个时钟周期对应于CHx_ RCOUNT值0x0200。

3.7 设置ERROR_CONFIG寄存器

设置DRDY_2INT=b1,用断言INTB引脚报告数据准备好标志,同时更新STATUS. DRDY寄存器域。

设置ERROR_CONFIG寄存器0x19为0x0001。

3.8 编程MUX_CONFIG寄存器0x1B

  • 将AUTOSCAN_EN设置为b0,在由CONFIG.ACTIVE_CHAN寄存器域选定的单通道上的连续转换模式。
  • 将RR_SEQUENCE设置为b00以启用通道0上的数据转换
  • 将DEGLITCH设置为b101,将输抗尖峰脉冲滤波器带宽设置为10MHz,这是超过振荡腔频率的最低设置。
  • MUX_CONFIG寄存器(地址0x1B)的综合值是:
    0x020D(b0000’0010’0000’1101)

3.9 对CONFIG寄存器编程

(a) 将ACTIVE_CHAN域设置为b00以选择信道0

(b) 将SLEEP_MODE_EN域设置为b0以启动转换。

(c) 设置SENSOR_ACTIVATE_SEL = b1

低功率活动模式,在传感器运行期间,FDC使用在DRIVE_CURRENT_CHx寄存器(0x1E)中编程的最小功耗。

(d) 将REF_CLK_SRC域设置为b1以使用外部时钟源。

(e) INTB_DIS=0,当状态寄存器更新时断言中断引脚INTB。

(f) HIGH_CURRENT_DRV=b1,用>1.5mA的电流驱动通道0。

CONFIG寄存器(地址0x1A)的组合值为:

使用内部时钟0x1C01(b0001’1100’0000’0001)

使用外部时钟0x1E01(b0001’1110’0000’0001)

4. 寄存器的值和写入顺序

建议采用以下顺序写入寄存器:

寄存器地址

寄存器名字

说明

0x08

RCOUNT_CH0

0x30C8

RCOUNT=12488 (9.991ms转换时间)

0x10

SETTLECOUNT_CH0

0x000A

传感器最小稳定时间

0x14

CLOCK_DIVIDERS_CH0

0x2002

CH0_FIN_DIVIDER = 2, CH0_FREF_DIVIDER = 2

0x19

ERROR_CONFIG

0x0001

启用中断

0x1B

MUX_CONFIG

0x020D

启用CH0,将输入抗尖峰脉冲带宽设置为10MHz

0x1E

DRIVE_CURRENT_CH0

0x7800

通道0的传感器驱动电流设置为0.146mA

0x1A

CONFIG

0x1C01(内部时钟) 0x1E01(外部时钟)

低功耗活动模式,断言中断引脚,0x1E设置的正常驱动电流

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值