MPU9255 haberleşme kesilmesi

Başlatan esdevhk, 09 Ekim 2019, 15:45:29

esdevhk

Cümleten kolay gelsin,

STM32F4 Disco ile MPU9255 sensör board'dan veri okuma işlemi yapıyorum. Okuma/yazma işlemlerinde bir sorunum yok. Sorun şu ki; haberleşme esnasında mikrodenetleyiciyi resetlediğimde (hep değil ama genel olarak 4-5 kere resetlendiğinde bazen ilk resette) haberleşme kesilmekte. Sensör ile haberleşme kesildikten sonra sensörün gücünü kesmeden haberleşme hattı düzelmemektedir.

Sensörün dökümanını dikkatlice okudum ve çoğu örneğe baktığımda sensörün power işlemleri ile ilgili registerlarına doğru müdahele ettiğimi düşünüyorum. Mikrodenetleyiciyi resetlediğimden dolayı haberleşme hattı mı çöküyor? Fikir ve düşüncelerinizi bekliyorum.

Teşekkürler.

Merak edenler için sensörün başlangıç ayarlarını yaptığım fonksiyon.
void MPU9255_Init()
{
		 uint8_t giden_veri_u8 = 0;

		 giden_veri_u8 = 0x80;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,PWR_MGMT_1,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50); // register adresleri default degerlerine cekilir.
		 HAL_Delay(100);

		 giden_veri_u8 = 0x01;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,PWR_MGMT_1,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50); // uyku modundan çikartilir.

		 giden_veri_u8 = 0x00;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,PWR_MGMT_2,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50); 
		 HAL_Delay(200);

		 giden_veri_u8 = 0x0D;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,I2C_MST_CTRL,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50);

		 giden_veri_u8 = 0x03;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,CONFIG,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50);

		 giden_veri_u8 = 0x04;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,SMPLRT_DIV,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50); // sample rate 1kHz ayarlanir.

		 giden_veri_u8 = 0x10;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,GYRO_CONFIG,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50); // gyro +/-1000dps

		 giden_veri_u8 = 0x00;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,ACCEL_CONFIG,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50); // accel +/-2g

		 giden_veri_u8 = 0x03;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,ACCEL_CONFIG2,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50);

		 giden_veri_u8 = 0x02;
	 	 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,INT_PIN_CFG,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50); // magnetometer aktif edilir.

		 giden_veri_u8 = 0x01;
		 HAL_I2C_Mem_Write(&hi2c2,MPU9255_ADDRESS,INT_ENABLE,I2C_MEMADD_SIZE_8BIT,&giden_veri_u8,1,50);

}