在过往的实验中,串口数据的正确传输问题一直都没有解决,所以电赛的复习我准备从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. ZooKeeper 基本介绍
  2. ADRV902X 启动流程 和 校准 注意事项
  3. json html显示中文乱码,后台请求json文件,中文出现乱码
  4. 20150309+Linux+LAMP安装-02
  5. 千层套路 - Vue 3.0 初始化源码探秘
  6. C语言根据用户输入的3个顶点,【if 语句】根据用户的输入 3 个顶点坐标计算三角形的面积和周长,如果不能构成三角形提示错误....
  7. 【hdu6588】2019多校第一场K题function,反演
  8. Java字符串分割(split)
  9. 赛锐信息:SAP进化论
  10. sublime3中如何快速生成html头部信息
  11. 为何要进入互联网行业做产品经理?
  12. 软考_高级《系统分析师》考试大纲
  13. love2d环境搭配
  14. php项目经验总结,php项目心得以及总结
  15. 全闪存存储 NetApp AFF A 系列 ——引领闪存的未来发展
  16. Cloud一分钟 |小米瞄上电纸书市场;员工《卫报》开专栏控诉亚马逊;拼多多Q3财报:总收入33.724亿元...
  17. 训练fater rcnn时出现path not exist问题
  18. SNIPER: Efficient Multi-Scale Training
  19. 云呐数据备份|什么是结构化数据
  20. (五)R语言入门生物信息学——ORF和序列分析

热门文章

  1. 微信扫码授权登录手游的原理和问题(你使用的浏览器暂不支持微信登录)
  2. 阿里价值观大辩论:低 P 碰红线,低 P 没了;高 P 碰红线,红线没了,其背后……...
  3. 千万别错过!C/C++实现经典围棋大战,秒杀挫败柯洁的AlphaGo
  4. latex的一些常用格式(参考)
  5. 【思否编程公开课】限时免费 网络安全之 Kali 渗透入门实战
  6. Matlab绘图(三)散点图—四维数据、五维数据、六维数据、七维数据散点图可视化绘制
  7. OSChina 周一乱弹 —— 日常生活中心理学小技巧
  8. 食物网的结构动力学和鲁棒性 | Structural dynamics and robustness of food webs
  9. mobaxterm标签页最下方服务器内存硬盘情况信息的状态栏显示与关闭
  10. cropper的基本用法