高级会员
- 积分
- 693
- 威望
- 400
- 贡献
- 159
- 兑换币
- 10
- 注册时间
- 2012-4-10
- 在线时间
- 67 小时
|
求助各路神人!!!帮忙看看加速度计的初始化和读取子程序哪里有问题,不胜感激!!!
我用的是K60的I2C模块...
/*************************************************************/
/* 初始化加速度传感器MMA845x */
/*************************************************************/
void hw_init_MMA845x(void)
{
uint8 WriteData[6]; //存放设置寄存器的值,设置量程2g,设置测量模式
uint8 ReadData[6]; //存放读取的Z轴加速度值
i2c0_Start();
hw_iic_writen(I2C0,0xA4, 0x1c, WriteData, 6); //发送从机地址,写入操作
hw_wait(65,0); //‘A’的ASCII码65 表示等待应答
delay();
//hw_iic_readn(I2C0,0xA5, 0x98, ReadData, 6);
hw_iic_writen(I2C0,0xA4, 0x00, WriteData, 6); //写入寄存器地址
hw_wait(65,0);
delay();
//hw_iic_readn(I2C0,0xA5, 0x98, ReadData, 6);
hw_iic_writen(I2C0,0xA4, 0x17, WriteData, 6); //设置寄存器的值,设置量程2g,设置测量模式
hw_wait(65,0);
delay();
//hw_iic_readn(I2C0,0xA5, 0x98, ReadData, 6);
i2c0_Stop();
}
/*************************************************************/
/**********************读取3轴加速度***************************/
/*************************************************************/
void read3axle(void)
{
uint8 ReadData[6]; //存放读取的Z轴加速度值
uint8 WriteData[6]; //存放设置寄存器的值,设置量程2g,设置测量模式
i2c0_Start();
hw_iic_writen(I2C0,0xA4, 0x1c, WriteData, 6);//发送从机地址,写入操作
hw_wait(65,0);
//hw_iic_readn(I2C0,0xA5, 0x1c, ReadData, 6);
hw_iic_writen(I2C0,0xA4, 0x00, WriteData, 6); //写入待读取的第一个寄存器地址
hw_wait(65,0);
//hw_iic_readn(I2C0,0xA5, 0x98, ReadData, 6);
i2c0_Start();
hw_iic_writen(I2C0,0xA4, 0x1c, WriteData, 6); //发送从机地址,读取操作
hw_wait(65,0);
//hw_iic_readn(I2C0,0xA5, 0x1d, ReadData, 6);
//X_value = hw_iic_read1(I2C0,0xA5, 0x05, ReadData); //读取X轴加速度
//hw_wait(84,0); //'T'的ASCII码84 表示等待一个字节数据传输完成
//Y_value =hw_iic_read1(I2C0,0xA5, 0x03, ReadData); //读取Y轴加速度
//hw_wait(84,0);
Z_value = hw_iic_read1(I2C0,0xA5, 0x00, ReadData); //读取Z轴加速度
i2c0_Stop();
//将采集到的数据转换到-32~31之间
//X_value= X_value<<2;
//X_value_final = X_value /4;
//Y_value= Y_value<<2;
//Y_value_final = Y_value /4;
Z_value= Z_value<<2;
Z_value_final = Z_value /4;
}
|
|