Estoy intentando usar el giroscopio FXAS21002C en BRKT-STBC-AGM04 tablero de distribución .
Como primera prueba, intenté leer el registro de WHO_AM_I en 0x0C, que se supone debe dar 0xD7 como resultado de acuerdo con la documentación. Pero en cambio estoy leyendo 0x00.
Supervisé la comunicación I2C y no estoy notando ninguna irregularidad allí. El FXAS21002C está respondiendo con ACK. etc
(La línea superior es SCL; la línea inferior es SDA; ambas se ajustaron a 3.3V)
Laconversaciónaquíes:010000000000011000010000010000000001
YestoyejecutandoelsiguientecódigoenmiArduinoUno:
#include<Wire.h>#include<math.h>#include"Arduino.h"
#define GyrAddress 0x20
#define pullupPin 4
#define gyr_WHO_AM_I 0x0C
#define gyr_WHO_AM_I_RSP 0xD7
#define I2C_address GyrAddress
#define WHO_AM_I gyr_WHO_AM_I
#define WHO_AM_I_RSP gyr_WHO_AM_I_RSP
uint8_t readRegister(uint8_t address) {
uint8_t output;
Wire.beginTransmission(I2C_address);
Wire.write(address);
Wire.endTransmission();
delayMicroseconds(4);
Wire.requestFrom(I2C_address, 1);
while (Wire.available()) {
Serial.println("reading a thing");
output = Wire.read();
}
return output;
}
void writeRegister(uint8_t address, uint8_t value){
Wire.beginTransmission(I2C_address);
Wire.write(address);
Wire.write(value);
Wire.endTransmission();
}
bool initialize() {
Wire.begin();
Wire.setClock(400000); // I2C fast mode, 400kHz
uint8_t reg;
if ((reg = readRegister(WHO_AM_I)) != WHO_AM_I_RSP) { //Could not find MAG3110
Serial.println(reg);
Serial.println(WHO_AM_I_RSP);
Serial.println("Could not find gyro connected!");
return false;
} else //Successfully initialized
{
Serial.println("found gyro!");
return true;
}
}
void setup() {
pinMode(pullupPin, INPUT_PULLUP);
Serial.begin(57600);
Serial.println("begun");
Serial.println(initialize());
}
int pullup;
void loop() {
// test code to rerun when I press a button.
int input = digitalRead(pullupPin);
if(input ^ pullup){
pullup = input;
if(input){
Serial.println(initialize());
}
}
}
Esquema de mi configuración actual:
¿Alguien sabe por qué el FXAS21002C no está devolviendo la respuesta WHO_AM_I que figura en la documentación?