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.

[参考译文] LDC1612:LDC1612

Guru**** 2391415 points
Other Parts Discussed in Thread: LDC1612

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/708226/ldc1612-ldc1612

器件型号:LDC1612
大家好, 

我尝试将 LDC1612芯片连接到 Arduino 微控制器。
我已按照以下方式编写代码、I2C 读取和写入操作已正确完成。
但我的接收持续为0。 有人能解决我的问题。



#include 

int LDC = 0x2A;

int CH0MSB = 0x00;

int CH0LSB = 0x01;

int CH1MSB = 0x02;

int CH1LSB = 0x03;

long 初始化0 = 0;

long 初始化1 = 0;


unsigned long readChannel0 ()

{

unsigned long val = 0;

word c = 0; //字存储16位无符号数字

字 d = 0;

c = readValue (LDC、CH0MSB);

d = readValue (LDC、CH0LSB);

Val = c;

val <<= 16;

val += d;

return val;

}


unsigned long readChannel1()

{

unsigned long val = 0;

word c = 0;//a word 存储16位无符号数字

字 d = 0;

c = readValue (LDC、CH1MSB);

d = readValue (LDC、CH1LSB);

Val = c;

val <= 16;

val += d;

return val;

}



void Calibrate ()

{

草初始0 = readChannel0 ();

草初始1 = readChannel1 ();

}



字 readValue (int LDC、int reg)

{

int a = 0;

int b = 0;

word value = 0;

Wire.beginTransmission(LDC);

Wire.write (reg);



Froendm (ldc); 2);

while (Wire.available ()

){

a = Wire.read();

b = Wire.read();

}

value = a;

value <= 8;

value += 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、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、0x15、0x10、0x02);//clock_dividers_CH1

writeConfig (LDC、0x1F、 0x90、0x00);//drive_curry_ch1

writeConfig (LDC、0x11、0x00、0x0A);//SETTLECOUNT_CH1

writeConfig (LDC、 0x09、0x04、0xD6);//RCOUNT_CH1

writeConfig (LDC、0x19、0x00、0x00);//error_config

writeConfig (LDC、0x1B、0x82、0x0C);//MUX_CONFIG

}



void setup ()

{

Wire.begin();

Serial.begin(9600);

// writeConfig (LDC、0x1C、0x10、 0x00);//复位器件

延迟(200);

//writeConfig (LDC、0x1C、0x00、0x00);//复位设备

configuration ();

delay (500);

Calibrate ();

}



void loop ()

{

unsigned long Data0 = readChannel0 ();

// unsigned long data1 = readChannel1 ();

Serial.println (Data0);

// Serial.println (data1);

// word deviceid = readChannel1 (0x2A、0x7E);

serial.println (deviceid、hex);

字器件= readValue (0x2A、0x7F);

serial.println (device、hex);*/
delay (5000);

} 

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

    最好是从关注 Arduino 代码的某个位置获得帮助。 您可以尝试堆栈溢出。 我们可以帮助您解决 LDC1612特定问题。

    如果您在检查代码后仍有问题、请再次在此处发帖。

    谢谢、

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

    尊敬的 Clancy:

    我的代码中没有问题。 我无法从 LDC1612芯片获取读数。

    所有硬件都是正确的、但在输出寄存器中没有响应。

    您能为我提供2通道读数的寄存器特定值吗 没有 中断或有中断。

    voidConfiguration()
    {
      writeConfig(LDC, 0x14, 0x10, 0x02);
      writeConfig(LDC, 0x1E, 0x90, 0x00);
      writeConfig(LDC, 0x10, 0x00, 0x0A);
      writeConfig(LDC, 0x08, 0x04, 0xD6);
      
      writeConfig(LDC, 0x15, 0x10, 0x02);
      writeConfig(LDC, 0x1F, 0x90, 0x00);
      writeConfig(LDC, 0x11, 0x00, 0x0A);
      writeConfig(LDC, 0x09, 0x04, 0xD6);
        
      writeConfig(LDC, 0x19, 0x00, 0x00);
      
      writeConfig(LDC, 0x1B, 0x82, 0x0C);
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    配置完设备后,是否将设备置于正常模式? 我在您的代码中没有看到这一点。

    器件在启动后默认为睡眠模式、此时您可以写入寄存器。 配置完成后、必须将 CONFIG 寄存器(0x1A)中的 SLEEP_MODE_EN 字段设置为0以启动转换。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我必须将 LDC1612设计为金属探测器。
    距离为500mm 至1000mm。
    请建议 L 和 C 值
    还建议单通道和多通道的配置寄存器值......