在过往的实验中,串口数据的正确传输问题一直都没有解决,所以电赛的复习我准备从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!

资料引自网络

初探串口输出六轴陀螺仪相关推荐

  1. 基于战舰V3的MPU6050六轴陀螺仪实验

    基于战舰V3的MPU6050六轴陀螺仪实验 陀螺仪的分类 3轴传感器指的是3轴的加速度,根据这个加速度我们解算出XY两轴的角度. 6轴传感器指的是3轴的加速度和3轴角速度,根据这两个数据我们解算出XY ...

  2. mpu6050原理图_STM32控制 MPU6050 六轴陀螺仪资料汇总

    一般使用MPU6050的步骤是先驱动I2C总线,然后初始化MPU6050,从MPU6050读取数据,最后是数据的处理.本文档详细介绍有关MPU6050 三维角度传感器电子陀螺仪使用说明.附件内容提供该 ...

  3. Simulink S-Function的使用(以串口接收MPU6050六轴陀螺仪参数为实例)

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  4. 【QT】OpenGL显示六轴陀螺仪3D实时姿态

    参考博客 https://blog.csdn.net/qq_35629971/article/details/126203543?spm=1001.2014.3001.5506 效果图 新建openg ...

  5. K210入门-裸机开发(十)之IIC协议_MPU6050六轴陀螺仪

    开发板:K210 AIRV R3版 widora 开发环境:kendryte IDE 官方的 必须的参考文档:Standalone SDK编程指南v0.5.0,以及widora的原理图 (一) 新建文 ...

  6. FPGA读取MPU6050六轴陀螺仪

    一. 简介 欢迎关注 FPGA之旅 微信公众号 回复 FPGA驱动MPU6050 获取下载链接 本篇文章将介绍如何使用FPGA驱动MPU6050模块. MPU6050模块的接口是IIC,所以驱动的实质 ...

  7. 三轴加速度传感器和六轴惯性传感器_一文读懂三轴,六轴,MEMS陀螺仪(角速率传感器)的区别...

    原标题:一文读懂三轴,六轴,MEMS陀螺仪(角速率传感器)的区别 随着现代科技的不断发展,陀螺仪也被应用到越来越多的领域和行业,例如我们常见纸飞机等飞行类游戏,赛车类游戏等.以陀螺仪为核心的惯性制导系 ...

  8. 【STM32Cube】学习笔记(三):六轴传感器

    文章目录 摘要 一.简介 1.I2C原理 2.MPU6050介绍 3.MPU6050寄存器介绍 4.DMP使用 二.硬件电路设计 三.软件设计 1.CubeMX配置 2.CubeIDE代码 3.结果显 ...

  9. STM32实现六轴姿态测量陀螺仪模块JY61P(标准库与HAL库实现)

    本模块支持串口采用串口实现数据采集和处理 设备型号选择 目录 设备型号选择 六轴姿态测量陀螺仪模块简介 产品概述 产品特点 引脚说明 模块UART与MCU连接 应用领域 模块与单片机的接线表设计 标准 ...

最新文章

  1. vim设置行号等一系列配置
  2. java贪吃蛇不能回头,儿时回忆!泪流满面,Java 实现贪吃蛇游戏的示例(附代码)...
  3. 科技/IT:2019 年 Q3 表现最佳和最差的企业
  4. (转)Invoke and BeginInvoke
  5. Zookeeper常用命令操作,javaAPI操作之Curator框架 API
  6. native html5 区别,H5与Native优劣对比
  7. 数据中台赋能企业数字化转型的四个关键成功因素
  8. 技术交流论坛_天气预报|“第一届国家建筑工程与材料测试技术论坛”暨“第七届全国建筑材料测试技术”交流会...
  9. qt判断读入的字符串是否含有英文_重复的子字符串
  10. spring web.xml配置服务启动后执行文件
  11. Predict user model based on genus
  12. python运维开发实战项目-1
  13. html css js php常用网页代码汇总合集(一)网页设计入门代码知识汇总1
  14. 为资产分类定义折旧范围_SAP FICO-AA资产知识要点.doc
  15. 硬盘打不开了的修复方法?
  16. DBLE分库分表示例
  17. 隐函数求导公式(多元隐函数存在定理)
  18. 如何简单快速去掉电脑桌面图标上的小箭头
  19. 编程英文单字的标准缩写
  20. 【素描基础】大师素描及素描抽象明…

热门文章

  1. web基础知识--简易web服务器的搭建
  2. 技术手册:深入浅析云存储部署三步走
  3. 让chm文件每次都最大化打开的简单方法
  4. Ubuntu修改静态IP详细步骤
  5. 竞赛打卡:糖尿病遗传风险检测挑战赛
  6. STM32软件学习笔记(一)基于HAL库的STM32F429单片机串口打印程序
  7. 【程序员如何买股票 一】 股票基础知识
  8. FreeSWITCH API常用手册
  9. oracle数据库定期备份
  10. 云服务器ECS,你真的懂吗?