最近用Arduino操作AD5933出现了问题,读取状态寄存器的时候 老是读取0x70,有没有知道是什么原因啊。
贴一下我的代码
// AD5933 control
//
#include
void writeAD5933(byte add, byte data)
{
Wire.beginTransmission(13); // this chip address is 0001101 13
Wire.write(add);
Wire.write(data);
Wire.endTransmission(); // stop transmit
ting
}
byte readAD5933(byte add)
{
byte date = 0;
Wire.beginTransmission(13); // 00011011
Wire.write(byte(0xB0)); // Address pointer
Wire.write(add); //
Wire.endTransmission(); // stop transmitting
Wire.requestFrom(13, 1,true);
if(Wire.available())
{
date = Wire.read(); // receive high byte (overwrites previous reading)
}
return date;
}
void setup()
{
Wire.begin();
Serial.begin(9600);
}
int temp = 0;
byte templow = 0;
byte temphigh = 1;
byte statusReg = 0;
float temper = 0.0;
void loop()
{
// writer error.
// step 1: write temperature test control code to register
delay(1000);
delay(1000);
writeAD9777(byte(0x80), byte(0x90));
templow = 0x00;
while(!(templow 0x07))
{
templow = readAD5933(byte(0x8F));
Serial.println(templow,BIN); // print the reading
delay(1000);
}
Serial.println(templow,BIN); // print the reading
Serial.println("success!"); //
delay(1000);
}
读写寄存器的函数应该是没有问题的,因为我通过读写别的寄存器 ,如起始频率寄存器,频率论扫数寄存器等,先写入数据,再读取数据,发现能够读取之前写入的数据。
您好!状态寄存器的含义见数据手册表14。建议对芯片发一个reset命令试一试。