OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9299|回复: 14

ADXL345三轴加速度

[复制链接]

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-7-22
在线时间
0 小时
发表于 2013-7-24 14:53:31 | 显示全部楼层 |阅读模式
如题:用ADXL345倾角时发现一个问题:
测得的结果虽然是对的,但是在出来芯片传过来的数据处理上有点不理解
*x=(short)((u16)(BUF[1]<<8)+BUF[0]); //l两个8位数据构成16位x轴数据
 *y=(short)((u16)(BUF[3]<<8)+BUF[2]);
 *z=(short)((u16)(BUF[5]<<8)+BUF[4]);
 printf("x=%d\ty=%dz=%d",x,y,z);
BUF[0]-BUF[5]是我读取的值

我用串口打印出BUF[0]-BUF[5],发现高位BUF[1],BUF[3],BUF[5]呈现两个极端值0,或255【因为数据传过来的是补码,所以感觉高位就是起着正负的作用】
然后我将X,Y,Z值打印出来,却是

x=536872648 y=536872644z=53687264034
问题1:这超出了short类型能表示的范围啊???,不知为何是这数
问题2:在判断测得倾角正负值时,就是将x,y,z与0比较。这是补码,怎么可以实现的呢?

求解答,







正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2013-7-24 15:03:13 | 显示全部楼层
我们不是有例程么?用我们的例程测试下先.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-7-22
在线时间
0 小时
 楼主| 发表于 2013-7-24 15:32:20 | 显示全部楼层
回复【2楼】正点原子:

我们不是有例程么?用我们的例程测试下先.

---------------------------------
回复【2楼】正点原子:
---------------------------------
不是测的准不准的问题,是这中间的数据处理过程不明白
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2013-7-24 16:30:11 | 显示全部楼层
stm32的short就是2个字节,ADXL规定的输出格式就是带符号的short类型了.
所以你只需要将得到的内容组合一下,就是x,y,z的具体值.
打印超出了short范围,估计是你打印错了,打印x,y,z和*x,*y,*z你可得搞明白了,x,y,z是指针类型,你直接打印,那就是指针的地址了...
ADXL输出的值就是带符号的了,不需要你和0去比较,判断正负.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-7-24 17:17:56 | 显示全部楼层
(u16)(BUF[?]<<8)
改为:
((u16)BUF[?]<<8)
业余程序玩家。
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-7-22
在线时间
0 小时
 楼主| 发表于 2013-7-24 20:14:30 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
谢谢指点,辛苦了。
但是还是想再问一下,
比如我的x轴 BUF[[0]=23,BUF[1]=0那么我得到的是一个x轴值就是23
但是如果是负的比如说BUF[0]=23,BUF[1]=255,那么得到的值是-(256-23)=-233
即如果是正数,即为本身,负数则取反+1(补码转换为原码)这就证实了我题目说的ADSL传过来的是16位补码,


但问题是这部分补码转换为原码的工作是谁做了,我原以为是需要程序员来编码实现,但是通过测试,并不需要程序员干这活。
数据手册上也没找到相关的描述。烦请指点
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2013-7-24 20:39:03 | 显示全部楼层
回复【6楼】FS1360472174:
---------------------------------
编译器做了....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-7-22
在线时间
0 小时
 楼主| 发表于 2013-7-25 08:48:38 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
不是很信服,等再查查资料看看
回复 支持 反对

使用道具 举报

15

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2013-4-27
在线时间
0 小时
发表于 2013-7-25 21:26:48 | 显示全部楼层
哥,我的三轴加速度传感器传来的数据,更新的太慢,不知到是怎么搞的,可以更新,但是更新的非常慢。各位大神,可以指导小弟不
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-7-22
在线时间
0 小时
 楼主| 发表于 2013-7-26 09:07:55 | 显示全部楼层
回复【9楼】小明:
---------------------------------
更新的太慢,估计是你采集的时候延时太长了吧
回复 支持 反对

使用道具 举报

15

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2013-4-27
在线时间
0 小时
发表于 2013-7-27 22:20:41 | 显示全部楼层
哥们,小弟昨天采集好了,有空多交流,谢谢
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-7-22
在线时间
0 小时
 楼主| 发表于 2013-7-28 09:09:27 | 显示全部楼层
回复【11楼】小明:
---------------------------------
哦,好的。问题解决了就好
回复 支持 反对

使用道具 举报

15

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2013-4-27
在线时间
0 小时
发表于 2013-8-1 08:43:46 | 显示全部楼层
现在发现一个问题,在程序刚开始运行的时候,角度可以测,在程序while循环里,不能测0-90度的角度
这是通过按复位键瞬时显示正常角度,按过复位键后,角度在0-90度显示0,这是怎么搞的 怎么办 
如果可以的话,请哥发一个stm32的ADXL345测倾角的程序,谢谢
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-8-1 09:10:38 | 显示全部楼层
想问楼主一个问题,你同时采集三路adc,你是怎么设置的?因为ADC_DR只能存放一个数据,然后你是用DMA
传输还是什么的?ADC交替模式,最近在研究这个,希望给点意见
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-2-19
在线时间
0 小时
发表于 2014-3-3 14:05:00 | 显示全部楼层
回复【楼主位】FS1360472174:
---------------------------------
我在主函数里面测的值也很大啊
一代龙影-KPL
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 07:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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