搜索
bottom↓
回复: 3

ADXL345读出数据,但是怎么这么大

[复制链接]

出0入0汤圆

发表于 2012-12-15 22:36:36 | 显示全部楼层 |阅读模式

驱动写好了,就是参考网上最多的那个模式。主要代码就这些:

/*初始化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, 杜汶泽)

出0入0汤圆

发表于 2013-5-23 20:21:03 | 显示全部楼层
查一下DataFormat寄存器中的Justify

出0入8汤圆

发表于 2013-5-23 20:32:17 | 显示全部楼层
哇!
你这个有点大啊

出0入8汤圆

发表于 2013-5-23 20:38:27 | 显示全部楼层
给你上传一个IIC 读取的

(ADXL345驱动函数.RAR)

STM32 下模拟IIC 驱动

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表