MPU9250の設定

MPU9250について実際に使用した時の各設定について書いておきます。

 

1)chip select

 0x6Bに0x80を送信

(100ms のdelay)

 

2)wakeup device

 0x6Bに0x01を送信

 

3)Active function

 0x6Aに0x30を送信

 

4)加速度センサ測定レンジ設定(±8g)

 0x1Cに0x10を送信

 

5)加速度サンプリング設定(4kHz sampling)

 0x1Dに0x08を送信

 

6)ジャイロセンサ測定レンジ設定(±1000dps)

 0x1Bに0x10を送信

 

7)地磁気センササンプリング設定(100Hz)

 0x19に0x09を送信

 

8)I2Cクロック設定(400kHz)

 0x24に0x0Dを送信

(MPU9250は地磁気のみ内部にある別センサAK8963とのI2C通信によって接続されている。従って、MPU9250とSPI通信するにしてもこの設定が必要?)

 

9)AK8963スレーブアドレス

 0x31に0x0Cを送信

 

10)CTRL2の設定(なんの設定かは忘れたデータシートを参照)

 0x32に0x0Bを送信

 

11)reset enable

 0x33に0x01を送信

 

12)send data

 0x34に0x80を送信

(20ms待つ)

 

13)CTRL1の設定(これも何の設定だったか忘れた)

 0x32に0x0Aを送信

 

14)地磁気を100Hzで連続測定するための設定

 0x33に0x16を送信

 

15)send data

 0x34に0x80を送信

(20ms待つ)

 

16)AK8963のデータを読む

 0x25に0x8Cを送信

 

17)hxl (hxlが何を意味するのか忘れたデータシート参照)

 0x26に0x03を送信

 

18)7byte data receive -> ext_sens_data_00

 0x27に0x87を送信

 

 

以上18項目の設定

 

コメント

・一つ送信するたびに1msのdelayを入れないとうまくいかなかった。

・send dataのところは20ms のdelay

・私はARMマイコンのnRF52832チップに対してEmbedded studioにてプログラムを行なった。通信方式はSPI通信。

従って、送信の書き方は

 

uint8_t reg_chipreset[2] = {PWR_MGMT_1,0x80};
nrf_drv_spi_transfer(&spi,reg_chipreset,sizeof(reg_chipreset),NULL,0);//chip reset
nrf_delay_ms(100);

 

のようになる。