跨届大侠
- 积分
- 6490
- 威望
- 4804
- 贡献
- 650
- 兑换币
- 1264
- 注册时间
- 2014-3-19
- 在线时间
- 518 小时
|
有你不孤单 发表于 2014-12-4 20:36
我的读出来为什么是255,而且一直是255,也不变化!!
一直是255,,看看IIC接口是不是对的,,我用的是C10 C11,即IIC1,,,,
//宏定义调用底层的I2C接口
#define L3G4200_OPEN(baud) i2c_init(L3G4200_DEVICE,baud)
#define L3G4200_WR(reg,value) i2c_write_reg(L3G4200_DEVICE,L3G4200_ADRESS,reg,value) //L3G4200 写寄存器
#define L3G4200_RD(reg) i2c_read_reg(L3G4200_DEVICE,L3G4200_ADRESS,reg) //L3G4200 读寄存器
void L3G4200_init(void)
{
L3G4200_OPEN(400 * 1000); //初始化L3G4200接口,设置波特率 400k
L3G4200_WR(CTRL_REG1, 0x0b); //启用X和Y轴z,//禁用Z轴
L3G4200_WR(CTRL_REG2, 0x00); //
L3G4200_WR(CTRL_REG3, 0x08); //
L3G4200_WR(CTRL_REG4, 0x30); //+-2000dps
L3G4200_WR(CTRL_REG5, 0x00);
}
void L3G4200_write_reg(uint8 reg, uint8 Data)
{
L3G4200_WR(reg, Data);
}
uint8 L3G4200_read_reg(uint8 reg)
{
return L3G4200_RD(reg);
}
void L3G4200_get(int16 W[4]) //角速度信号采集
{
uint8 BUF[6];
int16 GYRO_data;
BUF[0]= L3G4200_read_reg(OUT_X_L);
BUF[1]= L3G4200_read_reg(OUT_X_H); //读取X轴数据
BUF[2]= L3G4200_read_reg(OUT_Y_L);
BUF[3]= L3G4200_read_reg(OUT_Y_H); //读取Y轴数据
//BUF[4]= L3G4200_read_reg(OUT_Z_L);
//BUF[5]= L3G4200_read_reg(OUT_Z_H); //读取Z轴数据
//W[3]=L3G4200_read_reg(OUT_TEMP); //读取温度
GYRO_data=(BUF[1]<<8)+BUF[0]; //合成数据
W[0]=(int16)(GYRO_data*0.07); //数据手册 第9页,2000度/秒量程
GYRO_data=(BUF[3]<<8)+BUF[2];
W[1]=(int16)(GYRO_data*0.07);
//GYRO_data=(BUF[5]<<8)+BUF[4];
//W[2]=(int16)GYRO_data*7;
}
以上是我的加速度计数据采集的程序,,或许对你有帮助!
|
|