我已经为该芯片创建了一个具有单个线圈的双层测试 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、但这并未显示输出中的任何更改。
为了使这个芯片启动并运行、我还可以采取哪些其他可能的步骤?