Picproje Elektronik Sitesi

PICPROJE PROGRAMLAMA DERSLERİ => STM32 Örnekleri => Konuyu başlatan: huseyink - 09 Ekim 2019, 18:45:29

Başlık: MPU9255 haberleşme kesilmesi
Gönderen: huseyink - 09 Ekim 2019, 18:45:29
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);

}