Я пытаюсь соединить ADXL 345 с tm4c1294nctpd с использованием energia. Конфигурация контактов следующая: SDA с контактом PB3 и SCL с контактом PB2 (порт I2C0), с использованием J1 (3.3 V) и J21 (5 В) и GND. При последовательном мониторе энергии выходы x=0,y=0, z=0, , схема имеет подтягивающий резистор в выводах SDA и SCL,
Адрес датчика 0x53. Я понимаю, что я делаю устройство подчиненным протоколу I2C ( Wire.begin(ADXAddress);)
Код
#include "Wire.h"
#define Power_Register 0x2D
#define BW_rate 0x2C
#define Int_enable 0x2E
#define dataFormat 0x31
#define X_Axis_Register_DATAX0 0x32
#define X_Axis_Register_DATAX1 0x33
#define Y_Axis_Register_DATAY0 0x34
#define Y_Axis_Register_DATAY1 0x35
#define Z_Axis_Register_DATAZ0 0x36
#define Z_Axis_Register_DATAZ1 0x37
#define fifoCntrl 0x38
int ADXAddress = 0x53;
int X0,X1,X_out;
int Y0,Y1,Y_out;
int Z1,Z0,Z_out;
float Xa,Ya,Za;
void setup() {
Wire.setModule(0);
Wire.begin(ADXAddress);
Serial.begin(9600);
delay(100);
Wire.beginTransmission(ADXAddress);
Wire.write(Power_Register);
Wire.write(8);
Wire.write(BW_rate);
Wire.write(10);
Wire.write(dataFormat);
Wire.write(11);
Wire.write(fifoCntrl);
Wire.write(0);
Wire.endTransmission();
}
void loop() {
Wire.beginTransmission(ADXAddress);
Wire.write(X_Axis_Register_DATAX0);
Wire.write(X_Axis_Register_DATAX1);
Wire.endTransmission();
Wire.requestFrom(ADXAddress,2);
if(Wire.available()<=2) {
X0 = Wire.read();
X1 = Wire.read();
X1=X1<<8;
X_out =X0+X1;
}
Wire.beginTransmission(ADXAddress);
Wire.write(Y_Axis_Register_DATAY0);
Wire.write(Y_Axis_Register_DATAY1);
Wire.endTransmission();
Wire.requestFrom(ADXAddress,2);
if(Wire.available()<=2) {
Y0 = Wire.read();
Y1 = Wire.read();
Y1=Y1<<8;
Y_out =Y0+Y1;
}
Wire.beginTransmission(ADXAddress);
Wire.write(Z_Axis_Register_DATAZ0);
Wire.write(Z_Axis_Register_DATAZ1);
Wire.endTransmission();
Wire.requestFrom(ADXAddress,2);
if(Wire.available()<=2) {
Z0 = Wire.read();
Z1 = Wire.read();
Z1=Z1<<8;
Z_out =Z0+Z1;
}
Serial.print("Xa= ");
Serial.print(Xa);Serial.print("\t");
Serial.print("Ya= ");
Serial.print(Ya);Serial.print("\t");
Serial.print("Za= ");
Serial.println(Za);
delay(1000);
Serial.println();
}