专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
JY-901模块数据解算方法
2019-07-20 22:22
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
6865
6
1728
本帖最后由 supergiant 于 2016-7-20 09:21 编辑
JY-901模块数据解算方法
JY901模块是一款高精度的姿态测量模块,能够测量被测物体的姿态角度,以欧拉角或者四元素的方式输出。
模块的数据采用16进制的方式进行传输,这种方式的优点是效率高,可以用很少的字节传输需要的数据,比如一个数据1.523,如果用16进制方式传送的话,2个字节就够了,而用ascii码的话,需要5个字节,在需要大量数据传输的时候就比较浪费有限的带宽了。而16进制数据的缺点呢,就是可读性不强,不像Ascii码那样,直接就能读出数据了。
16进制数据传输的原理是这样的,先要确定数据的表示范围,然后是每个数据可用的字节数。比如角度的数据,每个角度的数据范围是±180度,而2个字节16进制数的表示范围是-32767~32768之间,那么我们就把±180的数据映射到±32768之间。假设原理的数据是x,变换以后的数据是y,那么y=x/180*32768。2个字节能表示的最小精度是1/32768*180=0.0055°,这对于角度的精度来说也够用了。
下面具体讲解析的方法。
先通过串口调试助手看模块的原始数据,注意要选择好正确的波特率,并且将模块的显示模式勾选为16进制方式。如下图
如果能看到这种以55 51 或者55 52打头的数据,就说明接收到正确的数据了。
以加速度为例,加速度的数据是55 51 开头的数据包,比如上图圈选出来的数据是55 51 78 FD 4E 03 85 F8 FC 0E F3,根据厂家的说明文档,协议的规定是这样的
那么上述数据中,78 FD就是Ax的数据,4E 03就是Ay的数据,85 F8就是Az的数据 FC 0E是温度的数据, F3是校验和。以Ax的数据为例,AxL是78,AxH是FD,那么完整的16进制数据是FD78,转换我们需要使用到Windows的计算器。打开计算器以后,点击这里的标准
然后选择程序员,计算器进入程序员模式,再点击Hex,进入16进制模式。
接着就可以输入数据了,输入FD78,注意这里的WORD模式要调成WORD,这里是定义使用的字节数,如果选择错误将不能获得正确的结果
可以看到转换出来的
结果是-648,然后根据说明书给出的公司计算,得到Ax = -648/32768*16g=-0.316g。至此数据解析就完成了,同理可以算出Ay,Az和温度的数据。
如果使用单片机去解析数据,那么一定要注意数据的强制转换,先将高字节强制转换为有符号的short类型,然后再左移8位,然后再与低字节或,这样才能得到有正负符号的数据。
比如已经将找好包头的数据放置到ucRxBuffer这个数组里面了,然后就可以用下面的方法进行转换。
Ax = (((short)ucRxBuffer[3]<<8)|ucRxBuffer[2])/32768.0*16.0;
或者使用结构体内存拷贝的方法:
先定义一个加速度包的结构体
struct SAcc
{
short a[3];
short T;
};
再定义一个结构体对象
struct SAcc stcAcc;
再用内存拷贝将数据从ucRxBuffer[2]的地址拷贝到结构体中即可。
memcpy(&stcAcc,&ucRxBuffer[2],8);
这样得到的数据是具有符号的-32767~32768之间的数据,如果还需要将数据映射到加速度的量程范围
A[0]= stcAcc.a[0]/32768.0*16.0;
这样就获得了正确的加速度值。
同理可以获得角速度与角度数值。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
mangoball
2019-07-21 01:53
大哥你用的是usart例子是吗,我用I2C的时候用提供的例子读不到数据能否帮忙一下,只能读到一个,而且还是错的
加载中...
查看其它6个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>