|
驱动写好了,就是参考网上最多的那个模式。主要代码就这些:
/*初始化ADX345*/
void Init_ADX345(void)
{
I2C_WriteReg(0x31,0x0B); //测量范围,正负16g,13位模式
I2C_WriteReg(0x2C,0x08); //速率设定为12.5 参考pdf13页
I2C_WriteReg(0x2D,0x08); //选择电源模式 参考pdf24页
I2C_WriteReg(0x2E,0x80); //使能 DATA_READY 中断
I2C_WriteReg(0x1E,0x00); //X 偏移量 根据测试传感器的状态写入pdf29页
I2C_WriteReg(0x1F,0x00); //Y 偏移量 根据测试传感器的状态写入pdf29页
I2C_WriteReg(0x20,0x05); //Z 偏移量 根据测试传感器的状态写入pdf29页
}
/*连续读取加速度数据*/
void Multiple_read_ADX345(void)
{
unsigned char i;
I2C_Start();
I2C_Send(SlaveAddress_ADX345);
I2C_Send(0x32);
I2C_Start();
I2C_Send(SlaveAddress_ADX345+1);
for(i=0;i<6;i++)
{
BUF[i] = TWDR;
if(i == 5)
I2C_NoneAck();
else
I2C_Ack();
}
I2C_Stop();
}
//发送数据
void Send_XYZ(unsigned char xyz)
{
float temp;
int xyz_data;
switch (xyz)
{
case 0: Send_Data(X_BUF);
xyz_data = (BUF[1]<<8)+BUF[0];
break;
case 1: Send_Data(Y_BUF);
xyz_data = (BUF[3]<<8)+BUF[2];
break;
case 2: Send_Data(Z_BUF);
xyz_data = (BUF[5]<<8)+BUF[4];
break;
default : break;
}
if(xyz_data<0)
{
xyz_data = -xyz_data;
Uart_Tx('-');
}
else Uart_Tx(' ');
temp = (float)xyz_data*3.9;
dis_data =ftoa(temp, 0);
Send_Data(dis_data);
}
但是读出来数据不对劲啊,模块放那没有动,读出来的数据怎么是这样:
X : 5643.2998046 Y : 10982.399414 Z : 20966.4003906
X : 5643.2998046 Y : 11980.7998046 Z : 21964.7988281
X : 5643.2998046 Y : 11980.7998046 Z : 21964.7988281
X : 5643.2998046 Y : 11980.7998046 Z : 20966.4003906
X : 7640.0996093 Y : 11980.7998046 Z : 19968.0
X : 5643.2998046 Y : 11980.7998046 Z : 20966.4003906
X : 6641.699707 Y : 11980.7998046 Z : 21964.7988281
X : 5643.2998046 Y : 11980.7998046 Z : 19968.0
X : 6641.699707 Y : 11980.7998046 Z : 19968.0
X : 6641.699707 Y : 10982.399414 Z : 21964.7988281
X : 5643.2998046 Y : 10982.399414 Z : 20966.4003906
X : 4644.899414 Y : 11980.7998046 Z : 20966.4003906
X : 5643.2998046 Y : 11980.7998046 Z : 20966.4003906
X : 6641.699707 Y : 10982.399414 Z : 20966.4003906
X : 5643.2998046 Y : 10982.399414 Z : 19968.0
X : 6641.699707 Y : 10982.399414 Z : 20966.4003906
X : 6641.699707 Y : 10982.399414 Z : 19968.0
X : 5643.2998046 Y : 11980.7998046 Z : 19968.0
X : 6641.699707 Y : 10982.399414 Z : 20966.4003906
X : 5643.2998046 Y : 11980.7998046 Z : 20966.4003906
X : 5643.2998046 Y : 10982.399414 Z : 20966.4003906
X : 6641.699707 Y : 10982.399414 Z : 20966.4003906
X : 5643.2998046 Y : 10982.399414 Z : 21964.7988281
X : 6641.699707 Y : 10982.399414 Z : 20966.4003906
没有人出现过这个情况啊。求助下~今晚在看看,能不能解决。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|