尊敬的所有人:
我无法通过 I2C 使用 Arduino 设置转换器芯片 ADS122C04的配置寄存器。
Arduino 具有用于 i2c 通信的线库。 代码包含以下内容
1重置芯片(一个字节)
2写入所有四个寄存器的寄存器命令(WREG)和寄存器数据(数据表的图59)
3-开始转换(一个字节)
总之、在一个 i2c 帧中使用一个字节数组发送十(10)个字节、如下所示:
///----------------------------------------------------------
int ADR_THeiz_Aitt = 0x40; //器件的十六进制地址
字节 InitArray[10]={6、64、54、68、10、 72、5、76、112、8}; //配置数组
Wire.beginTransmission(ADR_THeiz_Austritt); // 与从属设备通信
Wire.write (InitArray、10); //字节数组在 ACK 握手时发送到从设备
Status = Wire.endTransmission (); //status 请参阅 https://www.arduino.cc/en/Reference/WireEndTransmission
serial.print ("状态初始化=");
serial.println (status);
///----------------------------------------------------------
STATUS 是一个字节、表示传输的状态:
0:成功
1:数据太长、无法放入发送缓冲区
2:地址发送时接收到 NACK
3:发送数据时接收到 NACK
4:其他错误
配置后,当读取寄存器0等值时,结果为0!!
对 for 循环执行了第二次尝试
///----------------------------------------------------------
对于(int i=0;i<10;i++)
{
Wire.beginTransmission(ADR_THeiz_Austritt);
Wire.write (InitArray[i]);
//延迟(10);
状态= Wire.endTransmission ();
serial.print ("状态初始化");
serial.print(i); //打印数组元素号
serial.println (status); //打印 transmersion 的状态
}
///----------------------------------------------------------
打印功能结果如下:00、10、23、30、43、50、63、70、83、90、这意味着:
i=0、InitArray[i]=6、status =0 ->芯片复位成功
i=1、InitArray[i]=64、status =0 ->调整寄存器0成功
i=2、InitArray[i]=54、status =3 --> 寄存器0的值未传输!! (同样适用于所有寄存器)
i=9、InitArray[i]=8、status =0 ->启动芯片成功
我的问题:您知道我为什么不能在寄存器中输入值吗?
非常感谢!
是的