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.

[参考译文] LDC1614:CH0输出始终为零

Guru**** 2563960 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/639778/ldc1614-ch0-output-is-always-zero

器件型号:LDC1614

我已经为该芯片创建了一个具有单个线圈的双层测试 PCB (来自 WebBench)。 它只是具有芯片、电容器(330pF X7R)和线圈。 请参阅随附的照片。 当我将传感器连接到 tensy 3.2并运行 Kylie Chesner 编写的代码时、芯片和 MCU 成功通信、但输出始终为零。

 

代码运行如下:  

#include
INT LDC = 0x2A;
INT CH0MSB = 0x00;
INT CH0LSB = 0x01;
长初始值0 = 0;

unsigned long readChannel0(){
无符号长整型 val = 0;
字 c = 0;//a 字存储16位无符号数
字 d = 0;
C = readValue (LDC、CH0MSB);
D = readValue (LDC、CH0LSB);
Val = c;
Val <<= 16;
Val += d;
返回 val;

void Calibrate(){
初始值0 = readChannel0();

字 readValue (int LDC、int reg){
INT A = 0;
int b = 0;
字值= 0;
Wire.beginTransmission(LDC);
Wire.write (reg);
wire.endTransmission ();
Wire.RequestFrom (LDC、2);
while (Wire.available ()){
a = Wire.read();
b = Wire.read();

值= A;
值<<= 8;
值+= b;
返回值;

void writeConfig (int ldc、int reg、int msb、int LSB){
Wire.beginTransmission(LDC);
Wire.write (reg);
Wire.write (MSB);
Wire.write (LSB);
wire.endTransmission ();

void Configuration(){
writeConfig (LDC、0x1A、0x16、0x01);//config
writeConfig (LDC、0x14、0x10、0x02);//clock_dividers_CH0
writeConfig (LDC、0x1E、0x90、0x00);//drive_curry_ch0
writeConfig (LDC、0x10、0x00、0x0A);//SETTLECOUNT_CH0
writeConfig (LDC、0x08、0x04、0xD6);//RCOUNT_CH0
writeConfig (LDC、0x19、0x00、0x00);//error_config
writeConfig (LDC、0x1B、0x02、0x0C);//MUX_CONFIG

void setup(){
Wire.begin();
Serial.begin(9600);
配置();
延迟(500);
calibrate();
引脚模式(13、输出);

void loop(){
unsigned long Data0 = readChannel0();
serial.println (Data0);
digitalWrite (13、HIGH);//闪烁板载 LED 以显示生命体征
延迟(200);
digitalWrite (13、low);
延迟(200);

输出如下:

无论我的金属测试对象与传感器的关系如何、示波器始终显示输出 MSB 和 LSB 保持为零。 我将 SD、INTB、ADDR 和 CLKIN 引脚连接到 GND。  

我已经尝试更改时钟分频器和 RCount、但这并未显示输出中的任何更改。

为了使这个芯片启动并运行、我还可以采取哪些其他可能的步骤?

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您是否使用了示波器来探测 IN0A 和 IN0B 引脚? 如果布局中的某个位置存在短路、则传感器可能不会振荡、然后为数据寄存器提供全0。 此外、您能否读取状态寄存器? 确定是否出现任何错误将会很有帮助。 有关状态寄存器中值含义的更多信息、请参阅以下应用手册: www.ti.com/.../SNOA959
    此致、
    Luke Lapointe
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    此外、您似乎要将配置寄存器设置为0x1601。 这将设置 REF_CLK_SRC [9]= 1、这意味着器件将从 CLKIN 引脚接收一个基准频率。 如果您在布局中将其接地短路、则器件将无法正常工作。 尝试通过向 CONFIG 寄存器写入0x1401将该位设置为0、该位使用内部振荡器、并查看这是否有用。
    此致、
    Luke Lapointe
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试了您的所有建议。 感谢您指出配置寄存器。 我已经完成并使用了这些值、但我想我忘记了对其进行的更改。

    将 CLK SRC 更改为内部后、现在逻辑分析仪报告以下数据:

    状态寄存器在串行监控器中显示8 (有时为0)、因此如果我理解正确、这意味着它正在执行将电感值转换为数字的任务、但是、位6 (DRDY)似乎永远不会变为高电平、 或者、我的串行监视器只是轮询速度不够快、看不到它。   

    我的示波器的带宽仅为25MHz、因此当我探测 IN0引脚时、它看起来就像是一组噪声。 但是、当我将每个 CH0_FREF_divider 位提升为高电平时、我可以看到生命体征、尽管噪声很大。   

    但是问题仍然存在。 我似乎仍然无法获得数据值随金属物体的接近而变化。