初探串口输出六轴陀螺仪
在过往的实验中,串口数据的正确传输问题一直都没有解决,所以电赛的复习我准备从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连接 应用领域 模块与单片机的接线表设计 标准 ...
最新文章
- vim设置行号等一系列配置
- java贪吃蛇不能回头,儿时回忆!泪流满面,Java 实现贪吃蛇游戏的示例(附代码)...
- 科技/IT:2019 年 Q3 表现最佳和最差的企业
- (转)Invoke and BeginInvoke
- Zookeeper常用命令操作,javaAPI操作之Curator框架 API
- native html5 区别,H5与Native优劣对比
- 数据中台赋能企业数字化转型的四个关键成功因素
- 技术交流论坛_天气预报|“第一届国家建筑工程与材料测试技术论坛”暨“第七届全国建筑材料测试技术”交流会...
- qt判断读入的字符串是否含有英文_重复的子字符串
- spring web.xml配置服务启动后执行文件
- Predict user model based on genus
- python运维开发实战项目-1
- html css js php常用网页代码汇总合集(一)网页设计入门代码知识汇总1
- 为资产分类定义折旧范围_SAP FICO-AA资产知识要点.doc
- 硬盘打不开了的修复方法?
- DBLE分库分表示例
- 隐函数求导公式(多元隐函数存在定理)
- 如何简单快速去掉电脑桌面图标上的小箭头
- 编程英文单字的标准缩写
- 【素描基础】大师素描及素描抽象明…