RT-AICHIP-sample
mpu9150.c ファイル

MPU9150を使えるようにするための関数群
[詳解]

#include "type.h"
#include "mpu9150.h"
#include "i2c.h"
#include "uart.h"
#include "SystemTickTimer.h"
#include "TinyMathFunction.h"
#include "debug.h"
mpu9150.c の依存先関係図:

[ソースコード]

マクロ定義

#define MPU6050_W   0xd0
 
#define MPU6050_R   0xd1
 
#define AK8975_W   0x18
 
#define AK8975_R   0x19
 
#define NUM_REF   (100)
 

関数

void initMPU6050 (void)
 
void initAK8975 (void)
 
void getDataFromMPU6050 (uint8_t *dest_array)
 
void getDataFromAK8975 (uint8_t *dest_array)
 
void getOmega (float *vec)
 
void getMag (float *vec)
 
void getAcc (float *vec)
 
void getTemp (float *temp)
 
void initOmegaRef ()
 
void getOmegaLPF (float *vec)
 
void getMagLPF (float *vec)
 
void getAccLPF (float *vec)
 
void getOmegaStrLPF (float *vec)
 
void getMagStrLPF (float *vec)
 
void getAccStrLPF (float *vec)
 
float getOmegaRef (float *vec)
 
void setOmegaRef_x (float ref_x)
 
void setOmegaRef_y (float ref_y)
 
void setOmegaRef_z (float ref_z)
 
void debugMPU9150 (void)
 

変数

volatile uint8_t I2CMasterBuffer [BUFSIZE]
 
volatile uint8_t I2CSlaveBuffer [BUFSIZE]
 
volatile uint32_t I2CReadLength
 
volatile uint32_t I2CWriteLength
 
volatile float gain_LPF = 0.8
 
volatile float gain_str_LPF = 0.1
 

詳解

MPU9150を使えるようにするための関数群

著者
RTCorp. Ryota Takahashi

mpu9150.c に定義があります。

マクロ定義詳解

#define AK8975_R   0x19

mpu9150.c26 行目に定義があります。

#define AK8975_W   0x18

mpu9150.c25 行目に定義があります。

#define MPU6050_R   0xd1

mpu9150.c24 行目に定義があります。

#define MPU6050_W   0xd0

mpu9150.c23 行目に定義があります。

#define NUM_REF   (100)

関数詳解

void debugMPU9150 ( void  )

デバッグ用関数

引数
void
戻り値
void

mpu9150.c538 行目に定義があります。

呼び出し関係図:

被呼び出し関係図:

void getAcc ( float *  vec)

加速度ベクトルを返す

引数
*vec格納先
戻り値
void

mpu9150.c343 行目に定義があります。

void getAccLPF ( float *  vec)

加速度センサ値にローパスフィルタをかけた値を*vecに格納

引数
*vec
戻り値
void

mpu9150.c445 行目に定義があります。

被呼び出し関係図:

void getAccStrLPF ( float *  vec)

加速度センサ値に強めのローパスフィルタをかけた値を*vecに格納

引数
*vec
戻り値
void

mpu9150.c481 行目に定義があります。

void getDataFromAK8975 ( uint8_t dest_array)

AK8975(MPU9150の地磁気センサ)のデータ(MagXYZ)
をdest_arrayに次のように格納
Asa[]: 工場出荷時にAK8975に書きこまれた補正値
AK8975の初期化の際にAsa[]に格納
byte
0 MagX 下位
1 MagX 上位
2 MagY 下位
3 MagY 上位
4 MagZ 下位
5 MagZ 上位
さらにセンサの読み取り値を物理量に変換しmag_vec[i]に格納する.

引数
*dest_arrayデータの格納先
戻り値
void

mpu9150.c261 行目に定義があります。

呼び出し関係図:

被呼び出し関係図:

void getDataFromMPU6050 ( uint8_t dest_array)

MPU6050のデータ (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 上位
さらに, センサの読み取りデータを物理量に変換し, acc_vec[i]
omega_vec[i]に格納する.

引数
  *dest_array データの格納先
戻り値
void

mpu9150.c147 行目に定義があります。

呼び出し関係図:

被呼び出し関係図:

void getMag ( float *  vec)

地磁気ベクトルを返す

引数
*vec 格納先
戻り値
void

mpu9150.c331 行目に定義があります。

void getMagLPF ( float *  vec)

地磁気センサ値にローパスフィルタをかけた値を*vecに格納

引数
*vec
戻り値
void

mpu9150.c432 行目に定義があります。

void getMagStrLPF ( float *  vec)

地磁気センサ値に強めのローパスフィルタをかけた値を*vecに格納

引数
*vec
戻り値
void

mpu9150.c469 行目に定義があります。

void getOmega ( float *  vec)

角速度ベクトルを返す

引数
*vec
戻り値
void

mpu9150.c319 行目に定義があります。

被呼び出し関係図:

void getOmegaLPF ( float *  vec)

ジャイロセンサ値にローパスフィルタをかけた値を*vecに格納

引数
*vec
戻り値
void

mpu9150.c420 行目に定義があります。

float getOmegaRef ( float *  vec)

現在のジャイロセンサの静止時のリファレンス値を返す

引数
*vec
戻り値
*vec

mpu9150.c493 行目に定義があります。

void getOmegaStrLPF ( float *  vec)

ジャイロセンサ値に強めのローパスフィルタをかけた値を*vecに格納

引数
*vec
戻り値
void

mpu9150.c457 行目に定義があります。

被呼び出し関係図:

void getTemp ( float *  temp)

温度を返す

引数
*vec格納先
戻り値
void

mpu9150.c355 行目に定義があります。

void initAK8975 ( void  )

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

引数
void
戻り値
void

mpu9150.c106 行目に定義があります。

呼び出し関係図:

被呼び出し関係図:

void initMPU6050 ( void  )

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

引数
void
戻り値
void

mpu9150.c54 行目に定義があります。

呼び出し関係図:

被呼び出し関係図:

void initOmegaRef ( void  )

ジャイロの静止時のリファレンス取得用関数

引数
void
戻り値
void

mpu9150.c366 行目に定義があります。

呼び出し関係図:

被呼び出し関係図:

void setOmegaRef_x ( float  ref_x)

ジャイロのリファレンス値ref_xを書き換える.

引数
ref_x
戻り値
void

mpu9150.c505 行目に定義があります。

void setOmegaRef_y ( float  ref_y)

ジャイロのリファレンス値ref_yを書き換える.

引数
ref_y
戻り値
void

mpu9150.c516 行目に定義があります。

void setOmegaRef_z ( float  ref_z)

ジャイロのリファレンス値ref_zを書き換える.

引数
ref_z
戻り値
void

mpu9150.c527 行目に定義があります。

変数詳解

volatile float gain_LPF = 0.8

mpu9150.c45 行目に定義があります。

volatile float gain_str_LPF = 0.1

mpu9150.c46 行目に定義があります。

volatile uint8_t I2CMasterBuffer[BUFSIZE]

i2c.c20 行目に定義があります。

volatile uint32_t I2CReadLength

i2c.c23 行目に定義があります。

volatile uint8_t I2CSlaveBuffer[BUFSIZE]

i2c.c21 行目に定義があります。

volatile uint32_t I2CWriteLength

i2c.c24 行目に定義があります。