FDC2212检测不到数据?

Other Parts Discussed in Thread: FDC2212

目前遇到的问题:

1、INTB引脚检测不到中断状态,INTB引脚具体是如何变化的?

2、读取寄存器STATUS,bit6没有读出高电平

芯片的ID可以正常读出,下图所示原理图,不知道哪里出错了

FDC2212的初始化配置

    I2C0_example_write2ByteRegister(ADDR,ClkDivCH0,0x2001);//0x14
    I2C0_example_write2ByteRegister(ADDR,ClkDivCH1,0x2001);//0x15
    //Chx_idrive 000 0000 0000 -->15-01111-0.146mA
    I2C0_example_write2ByteRegister(ADDR,DcurtCH0,0x7800);//0x1E驱动电流 1.2V<pk<1.8V
    I2C0_example_write2ByteRegister(ADDR,DcurtCH1,0x7800);//0x1F
    //Chx_settlecount>Vpk*fref*C*Pai^2/(32*Idrive)=1.68*43.4*10^6*53*10^(-12)*3.14*3.14/(32*0.146*10^(-3))=8.155<10
    //switching delay:692ns+5/fref=692+5/43.4=0.807-->1us
    I2C0_example_write2ByteRegister(ADDR,SetCntCH0,0x000A);//0x10稳定时间ts0=16*X/fref=160/43.4=3.68<4us
    I2C0_example_write2ByteRegister(ADDR,SetCntCH1,0x000A);//0x11
    I2C0_example_write2ByteRegister(ADDR,RcountCH0,0xFFFF);//0x08间隔时间tc0=16*X/fref=24.16ms
    I2C0_example_write2ByteRegister(ADDR,RcountCH1,0xFFFF);//0x09
    
    I2C0_example_write2ByteRegister(ADDR,ErrConf,0x0001);//0x19 Data ready flag to INTB 0x0001
    I2C0_example_write2ByteRegister(ADDR,MuxConfig,0x820D);//0x1B 101-10MHz
    I2C0_example_write2ByteRegister(ADDR,Config,0x1401);//0x1A

  • 您好,
    请参照数据手册10.2.3.2 Recommended Initial Register Configuration Values部分设置寄存器值。
    然后回读一下配置的寄存器,确认一下是否按期望值将寄存器值写进去了。
  • 数据手册里面都是错误,并且很多内容都没有表达清楚
  • 回读配置的寄存器,是否按期望的值写进去了?
    “数据手册里面都是错误,并且很多内容都没有表达清楚”-----非常抱歉,对您的设计造成了不便。可以详细说明哪里是错误的或没有表达清楚吗
  • 初始化后再读取寄存器的值,跟写入的值不一样,已经找到问题。
    10.2.3.2 关于寄存器0x1E的设置为0x7C00,实际应当为0x7800
    一、关于Sensor drive current的设置,如何对应到1.2V<振幅<1.8V,没有搞明白?
    二、关于稳定时间和转换时间的设置,没有搞明白?
  • 对的,寄存器0x1E的设置应当为0x7800,这是一个错误。谢谢您的反馈。
    关于Sensor drive current的设置,如何对应到1.2V<振幅<1.8V:在示波器上测量振荡幅度并调整IDRIVE值,或使用FDC GUI确定最佳设置。
    settle time 和onversion time在datasheet 10.2.3.2章节也有说明,可以细说哪里不明白吗
  • The reference count value must be chosen to support the required number of effective bits (ENOB). For example, if an ENOB of 13 bits is required, then a minimum conversion time of 213 = 8192 clock cycles is required.

    CHx_RCOUNT最大设置16bits

    现在使用FDC2212,用到数据DATA[27:0],需要28bits,实际采集数据用到25bits,那么此时的CHx_RCOUNT至少需要设置为多少合适?

    另外的问题:这颗芯片一直采集数据,间断性的去读取数据,是不是读取的最新数据?未读数据已被覆盖?

  • CHx_RCOUNT是用来设置转换时间的,转换时间计算公式1/N * (T SAMPLE– settling time– channel switching delay)
    转换时间还满足于这个公式ConversionTime(tC0)= (CH0_RCOUNTˣ16)/fREF0
    这样根据上面两个公式就可以计算出CH0_RCOUNT的值了。
  • 上述回复根本没有理解问题的关键,再品一下原文:
    The reference count value must be chosen to support the required number of effective bits (ENOB). For example, if an ENOB of 13 bits is required, then a minimum conversion time of 213 = 8192 clock cycles is required.
    计算公式仅仅只是计算公式,关键是ENOB为什么是13bits

    并且公式1/N * (T SAMPLE– settling time– channel switching delay)是因为实例要求10ms采样,我的程序里没有这条要求,我只需要可以产生DATA[27:0]的最小转换时间,即设置CHxRCOUNT值的正确解读。
  • The reference count value must be chosen to support the required number of effective bits (ENOB). For example, if an ENOB of 13 bits is required, then a minimum conversion time of 213 = 8192 clock cycles is required. 这里是说转换时间所表示的参考时钟周期数,必须满足您设计需要的有效位数(ENOB),如果您设计要求ENOB是13bit,那么则需要213=8192个时钟周期的最小转换时间。如果不满足则需从新选择采样周期。

    FDC器件是通过测量LC的谐振频率来工作。为了测量频率,你需要花时间。测频时间越长,测频越准确。RCOUNT本质上是给FDC测量传感器频率的时间。要获得给定的ENOB,您需要最小的RCOUNT值,以便给FDC足够的时间来测量传感器频率以达到所需的精度。

    转换时间是表示用于测量传感器频率的参考时钟周期数(摘自数据手册“The conversion time represents the number of reference clock cycles used to measure the sensor frequency.”),即ConversionTime(tC0)= (CH0_RCOUNTˣ16)/fREF0

    采样周期包括稳定时间settling time+转换时间conversion time+通道切换时间channel switching delay,其中settling time即是sensor activation time,参见数据手册figure13,单通道的话就是figure14.

    您需要的采样频率是多少,根据您需要的采样频率换算为采样周期,即可计算出转换时间,再计算出CHxRCOUNT值。

  • 使用FDC2212芯片,检测引脚IN0A和IN1A

    现在编写的程序是将CH0_RCOUNT=0xFFFF,主程序运行约1ms读取状态寄存器0x18,如果DRDY位为1,则读取数据寄存器0x00~0x03。

    读取到的数据范围是0x0000 0000~0x01FF FFFF

    那么CH0_RCOUNT和CH1_RCOUNT可以设置的最小数值是多少?