OpenEdv-开源电子网

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

关于mpu6050发送数据函数,为什么要这么设置数组?

[复制链接]

5

主题

15

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2017-6-30
在线时间
6 小时
发表于 2017-7-1 16:00:18 | 显示全部楼层 |阅读模式
5金钱
mpu6050发送数据函数,为什么要这么设置数组?tbuf[0]=(aacx>>8)&0XFF;tbuf[1]=aacx&0XFF;tbuf[0]与tbuf[1]是干嘛用的啊?
void mpu6050_send_data(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz)
{
        u8 tbuf[12];
        tbuf[0]=(aacx>>8)&0XFF;
        tbuf[1]=aacx&0XFF;
        tbuf[2]=(aacy>>8)&0XFF;
        tbuf[3]=aacy&0XFF;
        tbuf[4]=(aacz>>8)&0XFF;
        tbuf[5]=aacz&0XFF;
        tbuf[6]=(gyrox>>8)&0XFF;
        tbuf[7]=gyrox&0XFF;
        tbuf[8]=(gyroy>>8)&0XFF;
        tbuf[9]=gyroy&0XFF;
        tbuf[10]=(gyroz>>8)&0XFF;
        tbuf[11]=gyroz&0XFF;
        usart1_niming_report(0XA1,tbuf,12);//自定义帧,0XA1
}       

最佳答案

查看完整内容[请看2#楼]

因为6050的X,Y,Z的加速度与陀螺仪原始数据都放在寄存器中,每个方位的原始数据分两个寄存器存放,并且其3个方位寄存器地址连续,所以在读取采用一个数组来连续读取保存原始数据,然后整合成aacx,aacy等等,便于在LCD上显示,发送给上为机是又拆分,tbuf[0]=(aacx>>8)&0XFF;tbuf[1]=aacx&0XFF;tbuf[0]与tbuf[1],这一句就是把aacx拆分,我认为是拆分的原因是因为串口一次只能发送八bit的数据,所以aacx,,,,等拆分成tbuf数组在发送 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2659
金钱
2659
注册时间
2017-2-20
在线时间
250 小时
发表于 2017-7-1 16:00:19 | 显示全部楼层
因为6050的X,Y,Z的加速度与陀螺仪原始数据都放在寄存器中,每个方位的原始数据分两个寄存器存放,并且其3个方位寄存器地址连续,所以在读取采用一个数组来连续读取保存原始数据,然后整合成aacx,aacy等等,便于在LCD上显示,发送给上为机是又拆分,tbuf[0]=(aacx>>8)&0XFF;tbuf[1]=aacx&0XFF;tbuf[0]与tbuf[1],这一句就是把aacx拆分,我认为是拆分的原因是因为串口一次只能发送八bit的数据,所以aacx,,,,等拆分成tbuf数组在发送给上位机
电子之路漫漫兮,吾将任总而道远。http://www.openedv.com/static/image/smiley/default/lol.gif
回复

使用道具 举报

5

主题

15

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2017-6-30
在线时间
6 小时
 楼主| 发表于 2017-7-3 15:36:27 | 显示全部楼层
学霸君 发表于 2017-7-1 16:00
因为6050的X,Y,Z的加速度与陀螺仪原始数据都放在寄存器中,每个方位的原始数据分两个寄存器存放,并且其3个 ...

大神,太厉害了,非常感谢您的回答
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-17 05:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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