中级会员
- 积分
- 317
- 威望
- 159
- 贡献
- 102
- 兑换币
- 100
- 注册时间
- 2015-11-25
- 在线时间
- 28 小时
- 毕业学校
- 天津工业大学
|
uint8 DATA_H,DATA_L;
//*********mpu6050初始化*************************
uint8 mpu6050_init() //mpu6050初始化
{
int data;
i2c_init(I2C_n, baud_n); //I2C0 波特率9600
DELAY_MS(1000);
i2c_write_reg(I2C_n,SlaveAddress,PWR_MGMT_1,0x00); //解除休眠状态
DELAY_MS(60);
i2c_write_reg(I2C_n,SlaveAddress,SMPLRT_DIV,0x07);
DELAY_MS(60);
i2c_write_reg(I2C_n,SlaveAddress,CONFIG,0x06);
DELAY_MS(60);
//下面两个寄存器可以设置转换后数据的精度 0x08 最大值为 8192 (2^13)
i2c_write_reg(I2C_n,SlaveAddress,GYRO_CONFIG,0x08); //
i2c_write_reg(I2C0,SlaveAddress,ACCEL_CONFIG,0x08); //
data = i2c_read_reg(I2C_n,SlaveAddress,WHO_AM_I);
if(data == 0x68)
return 1;
else
return 0;
}
AD0接地,SlaveAddress地址为0xD0,PWR_MGMT_1地址为0x6B
卡在了解除休眠那句话上且是卡在下面程序的第二句话上(发送从机地址和写位)
void i2c_write_reg(I2Cn_e i2cn, uint8 SlaveID, uint8 reg, uint8 Data)
{
i2c_Start(i2cn); //发送启动信号
i2c_write_byte(i2cn, ( SlaveID << 1 ) | MWSR); //发送从机地址和写位
i2c_write_byte(i2cn, reg); //发送从机里的寄存器地址
i2c_write_byte(i2cn, Data); //发送需要写入的数据
i2c_Stop(i2cn);
i2c_delay(); //延时太短的话,可能写出错
}
求大神怎么解决
|
|