RT-AICHIPV3-sample
関数
mpu9250.h ファイル
被依存関係図:

[ソースコード]

関数

void initMPU9250 (void)
 
void initAK8963 (void)
 
void updateMPU9250Data ()
 
void updateAK8963Data ()
 
void getDataFromMPU9250 (uint8_t *dest_array)
 
void getDataFromAK8963 (uint8_t *dest_array)
 
void whoAmI (void)
 
void getOmega (float *vec)
 
void getMag (float *vec)
 
void getAcc (float *vec)
 
void getTemp (float *temp)
 
void getOmegaOffset (int16_t *vec)
 
void getAccOffset (int16_t *vec)
 
void getMagOffset (int16_t *vec)
 
void setOmegaOffset (int16_t *offset_vec)
 
void setAccOffset (int16_t *offset_vec)
 
void setMagOffset (int16_t *offset_vec)
 
void setOmegaOffset_x (int16_t offset_x)
 
void setOmegaOffset_y (int16_t offset_y)
 
void setOmegaOffset_z (int16_t offset_z)
 
void setAccOffset_x (int16_t offset_x)
 
void setAccOffset_y (int16_t offset_y)
 
void setAccOffset_z (int16_t offset_z)
 
void setMagOffset_x (int16_t offset_x)
 
void setMagOffset_y (int16_t offset_y)
 
void setMagOffset_z (int16_t offset_z)
 
void getAsa (int16_t *vec)
 
void getOmegaInt (int16_t *vec)
 
void getACCInt (int16_t *vec)
 
void getMagInt (int16_t *vec)
 
void getTempInt (int16_t *temp)
 
void getRawOmegaInt (int16_t *vec)
 
void getRawAccInt (int16_t *vec)
 
void getRawMagInt (int16_t *vec)
 
void getRawTempInt (int16_t *temp)
 
void calibOmegaOffset ()
 
void calibAccXYOffset ()
 
void calibAccZOffset ()
 
void calibMagOffset ()
 
void debugMPU9250 (void)
 
void writeEEPROMOffsetAccInt (int16_t *vec)
 
void writeEEPROMOffsetOmegaInt (int16_t *vec)
 
void writeEEPROMOffsetMagInt (int16_t *vec)
 
void readEEPROMOffsetAccInt (int16_t *vec)
 
void readEEPROMOffsetOmegaInt (int16_t *vec)
 
void readEEPROMOffsetMagInt (int16_t *vec)
 
void initOffsetByEEPROM ()
 

関数詳解

◆ calibAccXYOffset()

void calibAccXYOffset ( )

加速度センサのXY方向ロオフセット設定用関数
センサを水平にした状態でNUM_REF回のサンプルを取り, そのデータの上位25と下位25の値を クイックソートによって取り除く残りの50で平均値を求めオフセットとする. (メディアンフィルタと平均の組み合わせ)

引数
void
戻り値
void

◆ calibAccZOffset()

void calibAccZOffset ( )

加速度センサのZ方向ロオフセット設定用関数
センサを垂直にした状態でNUM_REF_ACCZ回のサンプルを取り, そのデータの上位25と下位25の値を クイックソートによって取り除く残りの50で平均値を求めオフセットとする. (メディアンフィルタと平均の組み合わせ)

引数
void
戻り値
void

◆ calibMagOffset()

void calibMagOffset ( )

地磁気センサのオフセット設定用関数
センサをしばらくの時間色々な方向に動かした後にすべての各軸の(最大値+最小値)/2を オフセット値とする. 地磁気の影響が少ない環境でオフセット調整をすること.

引数
void
戻り値
void

◆ calibOmegaOffset()

void calibOmegaOffset ( )
被呼び出し関係図:

◆ debugMPU9250()

void debugMPU9250 ( void  )

デバッグ用関数

引数
void
戻り値
void
呼び出し関係図:
被呼び出し関係図:

◆ getAcc()

void getAcc ( float *  vec)

加速度ベクトルを返す. 単位は[1G]

引数
*vec格納先
戻り値
void

◆ getACCInt()

void getACCInt ( int16_t vec)

 加速度を整数値で返す

引数
*vec

◆ getAccOffset()

void getAccOffset ( int16_t offset_vec)

現在の加速度のオフセット値を返す

引数
*offset_vec

◆ getAsa()

void getAsa ( int16_t vec)

地磁気センサのAsa値を返す

引数
*vec

◆ getDataFromAK8963()

void getDataFromAK8963 ( uint8_t dest_array)

AK8963(MPU9250の地磁気センサ)のデータ(MagXYZ)
をdest_arrayに次のように格納
byte
0 MagX 下位
1 MagX 上位
2 MagY 下位
3 MagY 上位
4 MagZ 下位
5 MagZ 上位

引数
*dest_arrayデータの格納先

◆ getDataFromMPU9250()

void getDataFromMPU9250 ( uint8_t dest_array)

MPU9250のデータ (AccXYZ , GyroXYZ , temperature)
dest_arrayに次のように格納
byte
0 accX 下位
1 accX 上位
2 accY 下位
3 accY 上位
4 accZ 下位
5 accZ 上位
6 temp 下位
7 temp 上位
8 gyroX 下位
9 gyroX 上位
10 gyroY 下位
11 gyroY 上位
12 gyroZ 下位
13 gyroZ 上位

引数
  *dest_array データの格納先

◆ getMag()

void getMag ( float *  vec)

地磁気ベクトルを返す. 単位は [uT]

引数
*vec 格納先
戻り値
void

◆ getMagInt()

void getMagInt ( int16_t vec)

地磁気を整数値で返す

引数
*vec

◆ getMagOffset()

void getMagOffset ( int16_t offset_vec)

現在の地磁気のオフセット値を返す

引数
*offset_vec

◆ getOmega()

void getOmega ( float *  vec)

角速度ベクトルを返す. 単位は[rad/s]

引数
*vec

◆ getOmegaInt()

void getOmegaInt ( int16_t vec)

角速度を整数値で返す

引数
*vec

◆ getOmegaOffset()

void getOmegaOffset ( int16_t offset_vec)

現在のジャイロセンサのオフセット値を返す

引数
*offset_vec

◆ getRawAccInt()

void getRawAccInt ( int16_t vec)

加速度の生データを整数値で返す

引数
*vec

◆ getRawMagInt()

void getRawMagInt ( int16_t vec)

地磁気の生データを整数値で返す

引数
*vec

◆ getRawOmegaInt()

void getRawOmegaInt ( int16_t vec)

角速度の生データを整数値で返す

引数
*vec

◆ getRawTempInt()

void getRawTempInt ( int16_t temp)

温度の生データを整数値で返す

引数
*temp

◆ getTemp()

void getTemp ( float *  temp)

温度を返す. 単位は[℃]

引数
*vec格納先
戻り値
void

◆ getTempInt()

void getTempInt ( int16_t temp)

温度を整数値で返す

引数
*vec

◆ initAK8963()

void initAK8963 ( void  )

Asa[]に感度調整値を格納.

引数
void
戻り値
void
呼び出し関係図:
被呼び出し関係図:

◆ initMPU9250()

void initMPU9250 ( void  )

MPU9250の初期化(MPU9250のジャイロ,加速度センサ)

引数
void
戻り値
void
呼び出し関係図:
被呼び出し関係図:

◆ initOffsetByEEPROM()

void initOffsetByEEPROM ( )

EEPROMから角速度, 加速度, 地磁気のオフセット値を読み取り オフセット格納用の配列にセットする.

引数
void
戻り値
void
呼び出し関係図:
被呼び出し関係図:

◆ readEEPROMOffsetAccInt()

void readEEPROMOffsetAccInt ( int16_t vec)

EEPROMから読み出した加速度のオフセット値を配列に読み込む

引数
*vec加速度のオフセット値を格納する先の配列
呼び出し関係図:
被呼び出し関係図:

◆ readEEPROMOffsetMagInt()

void readEEPROMOffsetMagInt ( int16_t vec)

EEPROMから読み出した地磁気のオフセット値を配列に読み込む

引数
*vec地磁気のオフセット値を格納する先の配列
呼び出し関係図:

◆ readEEPROMOffsetOmegaInt()

void readEEPROMOffsetOmegaInt ( int16_t vec)

EEPROMから読み出した角速度のオフセット値を配列に読み込む

引数
*vec角速度のオフセット値を格納する先の配列
呼び出し関係図:

◆ setAccOffset()

void setAccOffset ( int16_t offset_vec)

加速度のオフセット値をセットする

引数
*offset_vec

◆ setAccOffset_x()

void setAccOffset_x ( int16_t  offset_x)

加速度のx方向のオフセットをセットする

引数
offset_x

◆ setAccOffset_y()

void setAccOffset_y ( int16_t  offset_y)

加速度のy方向のオフセットをセットする

引数
offset_y

◆ setAccOffset_z()

void setAccOffset_z ( int16_t  offset_z)

加速度のz方向のオフセットをセットする

引数
offset_x

◆ setMagOffset()

void setMagOffset ( int16_t offset_vec)

地磁気のオフセット値をセットする

引数
*offset_vec

◆ setMagOffset_x()

void setMagOffset_x ( int16_t  offset_x)

地磁気のx方向のオフセットをセットする

引数
offset_x

◆ setMagOffset_y()

void setMagOffset_y ( int16_t  offset_y)

地磁気のy方向のオフセットをセットする

引数
offset_y

◆ setMagOffset_z()

void setMagOffset_z ( int16_t  offset_z)

地磁気のz方向のオフセットをセットする

引数
offset_z

◆ setOmegaOffset()

void setOmegaOffset ( int16_t offset_vec)

角速度のオフセット値をセットする

引数
*offset_vec

◆ setOmegaOffset_x()

void setOmegaOffset_x ( int16_t  offset_x)

角速度のx方向のオフセットをセットする

引数
offset_x

◆ setOmegaOffset_y()

void setOmegaOffset_y ( int16_t  offset_y)

角速度のy方向のオフセットをセットする

引数
offset_y

◆ setOmegaOffset_z()

void setOmegaOffset_z ( int16_t  offset_z)

角速度のz方向のオフセットをセットする

引数
offset_z

◆ updateAK8963Data()

void updateAK8963Data ( )

MPU9250からデータを読み出し各種変数を更新する
更新する対象は以下

  • mag_vec[3]
  • mag_vec_raw_int[3]
  • mag_vec_int[3]
  • ak8963ArrayData[6]
呼び出し関係図:

◆ updateMPU9250Data()

void updateMPU9250Data ( void  )

MPU9250からデータを読み出し各種変数を更新する
更新する対象は以下

  • omega_vec[3]
  • acc_vec[3]
  • temperatur
  • omega_vec_int[3]
  • acc_vec_int[3]
  • temperature_int
  • omega_vec_raw_int[3]
  • acc_vec_raw_int[3]
  • temperature_raw_int
  • mpu9250ArrayData[14]
呼び出し関係図:

◆ whoAmI()

void whoAmI ( void  )

MPU9250とAK8963(MPU9250の地磁気センサ)のwho am iを読む
1秒ごとにwho am iを呼びだし続ける無限ループが記述されている

引数
void
戻り値
void
呼び出し関係図:

◆ writeEEPROMOffsetAccInt()

void writeEEPROMOffsetAccInt ( int16_t vec)

加速度のオフセット値をEEPROMへ書き込む
加速度のオフセット値はEEPROMの0ブロック目,0x0番地から6byte分 にX,Y,Zの順で書き込まれる

引数
*vec加速度のオフセット値が格納されている配列
呼び出し関係図:

◆ writeEEPROMOffsetMagInt()

void writeEEPROMOffsetMagInt ( int16_t vec)

地磁気のオフセット値をEEPROMへ書き込む
地磁気のオフセット値はEEPROMの0ブロック目,0x0C番地から6byte分 にX,Y,Zの順で書き込まれる

引数
*vec地磁気のオフセット値が格納されている配列
呼び出し関係図:

◆ writeEEPROMOffsetOmegaInt()

void writeEEPROMOffsetOmegaInt ( int16_t vec)

角速度のオフセット値をEEPROMへ書き込む
角速度のオフセット値はEEPROMの0ブロック目,0x6番地から6byte分 にX,Y,Zの順で書き込まれる

引数
*vec角速度のオフセット値が格納されている配列
呼び出し関係図: