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.

LDC1000寄存器问题



根据LDC1000的特性,制作了一款车辆检测测试板。使用的处理器是STM32F103,与LDC1000的SPI读写操作正常,LDC1000的时钟有外部晶振提供,晶振频率为8Mhz.。在测量外部线圈的电感时,从LDC1000的寄存器Frequency Counter LSB、Frequency Counter Mid-Byte和Frequency Counter MSB读到的值一直为0!外部线圈的电感值为6mH,请问这个问题怎么解决?

  • 与拔码开关设置有关?

  • 无关啊!读LDC1000的Status寄存器的数值一直为:0x70。

  • 是不是晶振那边有问题,看看是否连接好,那块的电路也顺便检查一下。

  • You can downgrade using the firmware attached "LDC1000 Firmware 0x0208," but afterwards, you will have to reinstall version 1.0.2.0, force install the older drivers, and restart your system. 

    I find it strange how modifying Rpmin and Rpmax would freeze the GUI.  Can you describe in more detail your steps to reproduce the problem before the downgrade?

    7242.LDC1000 Firmware 0x0208.txt

  •   LDC1000GUI,1.0.4.1 LDC1000,0 x0300寄存器配置文件
      地址值,默认情况下,类型,注册名字
      0 x00、字节、修订ID
      0 x01,     0x10,0 x10,Rp_MAX字节
      0 x02,     0 x3f,0 x3f,Rp_MIN字节
      0 x03,    0 x15,0 x15,字节,传感器的频率
      0 x04,0 x17,0×17字节,LDC配置
      0 x05,0 x00,0 x00字节,时钟配置
      0 x06,0 x00、0 x00 LSB字节,比较器阈值高
      0 x07,0 x14,0 x14,字节,比较器阈值高的最高有效位
      0x08,0 x00、0 x00 LSB字节,比较器阈值低
      0 x09,0 x15,0 x15,最高有效位字节,比较器阈值低

            0 x0a,0 x04、字节、INT销配置

      0 x0b,0 x01、字节、权力配置
      0 x20、字节、状态
      0 x21,,,字节,接近LSB数据
      0 x22,,,最高有效位字节,距离数据
      0 x23,,,字节,频率计数器LSB
      0 coats,,,字节,频率计数器Mid-Byte
      0 25,,,字节,频率计数器最高有效位

     然后,单击“保存值作为默认值”

  • 1:读取时候有数据返回吗?没有返回可能是硬件问题。

    2:电感量6mH是不是太大了?你用了多少匝?

    3:STM32的SPI是用硬件SPI还是IO口SPI?如果是IO口模拟的SPI,可能时许有问题。

  • 改用100uH的线圈,从LDC1000寄存器Statis读到的值依旧是0x70。检查了一下LDC1000,没有发现焊接不良的地方。STM32使用硬件SPI,能正常读写LDC1000各个寄存器。LC谐振电路有正常工作,接220uH的线圈,频率大约为100Khz,不过随着频率的升高,振幅会一直下降。外部晶振工作正常。

  • 你好,我这几天也在调试LDC-1000,用的是STM32的SPI通信,将硬件电路焊接好之后,下载程序,用金属片感应测试,在示波器上有正确的波形出现,不过杂波很多,LDC的INT引脚也有高低电平的变化,可就是没有读出ProximityData和FrequencyData的值,KEIL4软件仿真和串口打印都是0,不知道是不是SPI通信的问题,SPI的时钟频率和LDC的DCLK时钟频率应该没有关系吧?DCLK的时钟我是这样设置的:

    TIM_TimeBaseStructure.TIM_Period = 143; //当定时器从0计数到143,即为144次,为一个定时周期
    TIM_TimeBaseStructure.TIM_Prescaler =99; //设置预分频:
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ; //设置时钟分频系数:不分频
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式

    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

    LDC与SPI通信部分是参考官方例程写的,如下:

    SPI_I2S_SendData(SPI1, LDC1000_CMD_RPMAX<<8|TEST_RPMAX_INIT);//配置Rp_MAX(0x01)寄存器
    SPI_I2S_SendData(SPI1, LDC1000_CMD_RPMIN<<8|TEST_RPMIN_INIT);//配置Rp_MIN(0x02)寄存器
    SPI_I2S_SendData(SPI1, LDC1000_CMD_SENSORFREQ<<8|0x94); //配置Sensor Frequency(0x03)寄存器
    SPI_I2S_SendData(SPI1, LDC1000_CMD_LDCCONFIG<<8|0x17); //配置LDC Configuration(0x04)寄存器
    SPI_I2S_SendData(SPI1, LDC1000_CMD_CLKCONFIG<<8|0x00); //配置Clock Configuration(0x05)寄存器,
    //使用TBCLK作为时钟源

    SPI_I2S_SendData(SPI1, LDC1000_CMD_INTCONFIG<<8|0x02); //配置INTB Pin Configuration(0x0A),
                                                                                                                           //配置INTB为比较输出标志位(status of Comparator output)
    SPI_I2S_SendData(SPI1, LDC1000_CMD_THRESHILSB<<8|0x50); //配置Comparator Threshold High(0x06)寄存器低8位
    SPI_I2S_SendData(SPI1, LDC1000_CMD_THRESHIMSB<<8|0x14); //配置Comparator Threshold High(0x07)寄存器高8位
    SPI_I2S_SendData(SPI1, LDC1000_CMD_THRESLOLSB<<8|0xC0); //配置Comparator Threshold Low(0x08)寄存器低8位
    SPI_I2S_SendData(SPI1, LDC1000_CMD_THRESLOMSB<<8|0x12); //配置Comparator Threshold Low(0x09)寄存器高8位
    SPI_I2S_SendData(SPI1, LDC1000_CMD_PWRCONFIG<<8|0x01);

    问题比较多,但因为实在没找出解决办法,还请探花解答一下,不胜感激!

  • 当MAX_Rp和MIN_Rp寄存器设置的值与你的线圈不配合是时.是没有数值输出的.

  • When the resonance impedance Rp of the sensor drops below the programed Rp_MIN, the Rp output of the
    LDC will clip at its full scale output.   这是LDC1000手册上说的,貌似没有说输出是0  我也遇到楼主相似的问题,可惜我手头上没有阻抗分析仪,但从手册上不应该输出为零吧。