初探串口输出六轴陀螺仪
在过往的实验中,串口数据的正确传输问题一直都没有解决,所以电赛的复习我准备从USART串口的应用开始,以JY61模块为实践客体,尝试掌握熟练收发数据的能力。倘若成功,串行总线电机PID以及openmv联动都能够有较大的突破。
串口间数据的传送是十六进制的形式,JY61模块的主要通讯协议如下:
1.默认波特率为115200,也可设为9600 |
2.默认使用UART模式,也可设为I2C模式 |
3.角度初始化指令:0xFF 0xAA 0x52 |
4.输出角度的数据格式如下: |
角度计算公式:
滚转角(x轴)Roll=((RollH<<8)|RollL)/32768*180(°)
俯仰角(y轴)Pitch=((PitchH<<8)|PitchL)/32768*180(°)
偏航角(z轴)Yaw=((YawH<<8)|YawL)/32768*180(°)
校验和:
Sum=0x55+0x53+RollH+RollL+PitchH+PitchL+YawH+YawL+TH+TL
整合数据的函数如下:
void getData(unsigned char ucData)
{static unsigned char ucRxBuffer[250];static unsigned char ucRxCnt = 0; ucRxBuffer[ucRxCnt++]=ucData; //将收到的数据存入缓冲区中if (ucRxBuffer[0]!=0x55) //数据头不对,则重新开始寻找0x55数据头{ucRxCnt=0;return;}if (ucRxCnt<11) {return;}//数据不满11个,则返回else{switch(ucRxBuffer[1])//判断数据是哪种数据,然后将其拷贝到对应的结构体中,有些数据包需要通过上位机打开对应的输出后,才能接收到这个数据包的数据{//memcpy为编译器自带的内存拷贝函数,需引用"string.h",将接收缓冲区的字符拷贝到数据结构体里面,从而实现数据的解析。case 0x51: memcpy(&stcAcc,&ucRxBuffer[2],8);break;case 0x52: memcpy(&stcGyro,&ucRxBuffer[2],8);break;case 0x53: memcpy(&stcAngle,&ucRxBuffer[2],8);break;}ucRxCnt=0;//清空缓存区}
}
串口1的中断函数如下:
void DEBUG_USART_IRQHandler1(void)
{if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET){ USART_SendData(USART1, TxBuffer[TxCounter++]); if(TxCounter == count) {USART_ITConfig(USART1, USART_IT_TXE, DISABLE);// 全部发送完成}USART_ClearITPendingBit(USART1, USART_IT_TXE); }else if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){CopeSerial2Data((unsigned char)USART1->DR);//处理数据USART_ClearITPendingBit(USART1, USART_IT_RXNE);}USART_ClearITPendingBit(USART1,USART_IT_ORE);}
串口1至3都已配置完成,测试通过,收发都能触发中断。
此时,发现旧的模块可能坏了,反正没有亮灯,无法得知其内部状况。且新旧模块的协议略有差异,待明日新模块到了,即可测试。
May the force be with us!
资料引自网络
初探串口输出六轴陀螺仪相关推荐
- 基于战舰V3的MPU6050六轴陀螺仪实验
基于战舰V3的MPU6050六轴陀螺仪实验 陀螺仪的分类 3轴传感器指的是3轴的加速度,根据这个加速度我们解算出XY两轴的角度. 6轴传感器指的是3轴的加速度和3轴角速度,根据这两个数据我们解算出XY ...
- mpu6050原理图_STM32控制 MPU6050 六轴陀螺仪资料汇总
一般使用MPU6050的步骤是先驱动I2C总线,然后初始化MPU6050,从MPU6050读取数据,最后是数据的处理.本文档详细介绍有关MPU6050 三维角度传感器电子陀螺仪使用说明.附件内容提供该 ...
- Simulink S-Function的使用(以串口接收MPU6050六轴陀螺仪参数为实例)
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- 【QT】OpenGL显示六轴陀螺仪3D实时姿态
参考博客 https://blog.csdn.net/qq_35629971/article/details/126203543?spm=1001.2014.3001.5506 效果图 新建openg ...
- K210入门-裸机开发(十)之IIC协议_MPU6050六轴陀螺仪
开发板:K210 AIRV R3版 widora 开发环境:kendryte IDE 官方的 必须的参考文档:Standalone SDK编程指南v0.5.0,以及widora的原理图 (一) 新建文 ...
- FPGA读取MPU6050六轴陀螺仪
一. 简介 欢迎关注 FPGA之旅 微信公众号 回复 FPGA驱动MPU6050 获取下载链接 本篇文章将介绍如何使用FPGA驱动MPU6050模块. MPU6050模块的接口是IIC,所以驱动的实质 ...
- 三轴加速度传感器和六轴惯性传感器_一文读懂三轴,六轴,MEMS陀螺仪(角速率传感器)的区别...
原标题:一文读懂三轴,六轴,MEMS陀螺仪(角速率传感器)的区别 随着现代科技的不断发展,陀螺仪也被应用到越来越多的领域和行业,例如我们常见纸飞机等飞行类游戏,赛车类游戏等.以陀螺仪为核心的惯性制导系 ...
- 【STM32Cube】学习笔记(三):六轴传感器
文章目录 摘要 一.简介 1.I2C原理 2.MPU6050介绍 3.MPU6050寄存器介绍 4.DMP使用 二.硬件电路设计 三.软件设计 1.CubeMX配置 2.CubeIDE代码 3.结果显 ...
- STM32实现六轴姿态测量陀螺仪模块JY61P(标准库与HAL库实现)
本模块支持串口采用串口实现数据采集和处理 设备型号选择 目录 设备型号选择 六轴姿态测量陀螺仪模块简介 产品概述 产品特点 引脚说明 模块UART与MCU连接 应用领域 模块与单片机的接线表设计 标准 ...
最新文章
- ZooKeeper 基本介绍
- ADRV902X 启动流程 和 校准 注意事项
- json html显示中文乱码,后台请求json文件,中文出现乱码
- 20150309+Linux+LAMP安装-02
- 千层套路 - Vue 3.0 初始化源码探秘
- C语言根据用户输入的3个顶点,【if 语句】根据用户的输入 3 个顶点坐标计算三角形的面积和周长,如果不能构成三角形提示错误....
- 【hdu6588】2019多校第一场K题function,反演
- Java字符串分割(split)
- 赛锐信息:SAP进化论
- sublime3中如何快速生成html头部信息
- 为何要进入互联网行业做产品经理?
- 软考_高级《系统分析师》考试大纲
- love2d环境搭配
- php项目经验总结,php项目心得以及总结
- 全闪存存储 NetApp AFF A 系列 ——引领闪存的未来发展
- Cloud一分钟 |小米瞄上电纸书市场;员工《卫报》开专栏控诉亚马逊;拼多多Q3财报:总收入33.724亿元...
- 训练fater rcnn时出现path not exist问题
- SNIPER: Efficient Multi-Scale Training
- 云呐数据备份|什么是结构化数据
- (五)R语言入门生物信息学——ORF和序列分析
热门文章
- 微信扫码授权登录手游的原理和问题(你使用的浏览器暂不支持微信登录)
- 阿里价值观大辩论:低 P 碰红线,低 P 没了;高 P 碰红线,红线没了,其背后……...
- 千万别错过!C/C++实现经典围棋大战,秒杀挫败柯洁的AlphaGo
- latex的一些常用格式(参考)
- 【思否编程公开课】限时免费 网络安全之 Kali 渗透入门实战
- Matlab绘图(三)散点图—四维数据、五维数据、六维数据、七维数据散点图可视化绘制
- OSChina 周一乱弹 —— 日常生活中心理学小技巧
- 食物网的结构动力学和鲁棒性 | Structural dynamics and robustness of food webs
- mobaxterm标签页最下方服务器内存硬盘情况信息的状态栏显示与关闭
- cropper的基本用法