当前位置: 首页 > news >正文

JY61P.C

/**


  • File Name : JY61P.c
  • Description :

  • @attention
  • © Copyright (c) 2020 STMicroelectronics.

  • All rights reserved.
  • This software component is licensed by ST under Ultimate Liberty license
  • SLA0044, the “License”; You may not use this file except in compliance with
  • the License. You may obtain a copy of the License at:
  •                         www.st.com/SLA0044
    

*/

/* Includes ------------------------------------------------------------------/
#include “JY61P.h”
#include “stdio.h”
#include <string.h>
/
USER CODE BEGIN 0 /
#define MPU_ADDR 0x50<<1
#define MPU_ADDR_Read (0x50<<1)|0x01
/
USER CODE END PFP */

/* Private user code ---------------------------------------------------------/
/
USER CODE BEGIN 0 /
//static void ShortToChar(short sData,unsigned char cData[])
//{
// cData[0]=sData&0xff;
// cData[1]=sData>>8;
//}
static short CharToShort(unsigned char cData[])
{
int temp =cData[1];
return (temp<<8)|cData[0];
}
/
USER CODE END 0 /
//fun:功能字. 0XA0~0XAF
//data:数据缓存区,最多28字节!!
//len:data区有效数据个数
//void RDSS_CRC(uint8_t fun,uint8_t
data,uint8_t len)

char RDSS_CRC_xor(char*data,uint8_t len){
int i;
unsigned char xor;
xor = data[1];
for(i=2;i<len;i++)
{
xor = xor ^ data[i];
}
return xor;

}

//得到加速度值
//gx,gy,gz:陀螺仪x,y,z轴的原始读数(带符号)
//返回值:0,成功
// 其他,错误代码
static uint8_t MPU_Get_Accelerometer(float a,char Register_add)
{
uint8_t buf[6];
//float temp[3];
//HAL_I2C_Mem_Read(&hi2c1, MPU_ADDR_Read,Register_add,1,&buf[0],6, 0x20);
if(HAL_I2C_Mem_Read(&hi2c1, MPU_ADDR_Read,Register_add,1,&buf[0],6, 0x20)==HAL_OK){
a[0] = (float)CharToShort(&buf[0])/32768
16;
a[1] = (float)CharToShort(&buf[2])/3276816;
a[2] = (float)CharToShort(&buf[4])/32768
16;
}else {
return 1;
}
return 0;
}
//得到陀螺仪值
//gx,gy,gz:陀螺仪x,y,z轴的原始读数(带符号)
//返回值:0,成功
// 其他,错误代码
static uint8_t MPU_Get_Gyroscope(float w,char Register_add)
{
uint8_t buf[6];
if(HAL_I2C_Mem_Read(&hi2c1, MPU_ADDR_Read,Register_add,1,&buf[0],6, 0x20)==HAL_OK){
w[0] = (float)CharToShort(&buf[0])/32768
2000;
w[1] = (float)CharToShort(&buf[2])/327682000;
w[2] = (float)CharToShort(&buf[4])/32768
2000;
}else{
return 1;
}
return 0;
}
//得到dmp处理后的数据(注意,本函数需要比较多堆栈,局部变量有点多)
//pitch:俯仰角 精度:0.1° 范围:-180.0° <—> +180.0°
//roll:横滚角 精度:0.1° 范围:-180.0°<—> +180.0°
//yaw:航向角 精度:0.1° 范围:-180.0°<—> +180.0°
//返回值:0,正常
// 其他,失败
char mpu_dmp_get_data(float Angle,char Register_add){
uint8_t buf[6];
if(HAL_I2C_Mem_Read(&hi2c1, MPU_ADDR_Read,Register_add,1,&buf[0],6, 0x20)==HAL_OK){
Angle[0] = (float)CharToShort(&buf[0])/32768
180;
Angle[1] = (float)CharToShort(&buf[2])/32768180;
Angle[2] = (float)CharToShort(&buf[4])/32768
180;
}else{
return 1;
}
return 0;
}
//返回值:0,正常
// 其他,失败
static void RDSS_Transmit_Protocols(unsigned char str,float aa,float gy,float Angle_){
static unsigned char frame_count;
//unsigned char arr_str[100],checksum;
unsigned char checksum;
unsigned char array_temp[2];
//str=arr_str;
frame_count=frame_count+1;//帧计数
sprintf((char
)str,"$MEMS,%02d,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f
",frame_count,aa[0],aa[1],aa[2],gy[0],gy[1],gy[2],Angle_[0],Angle_[1],Angle_[2]);
checksum = RDSS_CRC_xor((char
)str,strlen((char
)str)-1);
sprintf((char*)array_temp,“%02x”,checksum);
strcat((char*)str,(char*)array_temp);

}

/* USER CODE BEGIN 2 /
void JY61P_Angle_data_sampling(){
float a[3],w[3],Angle[3];
unsigned char str[100];
if(MPU_Get_Accelerometer(a,AX)==0){
//HAL_Delay(5);
}
if(MPU_Get_Gyroscope(w,GX)==0){
//HAL_Delay(5);
}
if(mpu_dmp_get_data(Angle,Roll)==0){
//HAL_Delay(5);
}
RDSS_Transmit_Protocols(str,a,w,Angle);
HAL_UART_Transmit(&huart1,str,strlen((char
)str),0XFFFF);
}
/* USER CODE END 2 /
/
*********************** © COPYRIGHT STMicroelectronics *END OF FILE/

http://www.lryc.cn/news/197964.html

相关文章:

  • Go编程:使用 Colly 库下载Reddit网站的图像
  • 高性能日志脱敏组件:已支持 log4j2 和 logback 插件
  • 一文读懂PostgreSQL中的索引
  • windows的批量解锁
  • Nginx配置微服务避免actuator暴露
  • GEE——在GEE中计算地形位置指数TPI
  • 树的基本操作(数据结构)
  • Python复刻游戏《贪吃蛇大作战》
  • SpringCloud之Gateway整合Sentinel服务降级和限流
  • 深度学习——深度卷积神经网络(AlexNet)
  • 提高编程效率-Vscode实用指南
  • ES 数据库
  • 面试经典150题——Day14
  • Pika v3.5.1发布!
  • Kotlin中的数组
  • (3) OpenCV图像处理kNN近邻算法-识别摄像头数字
  • 上海亚商投顾:沪指震荡调整 转基因概念股逆势大涨
  • abap中程序跳转(全)
  • 启动速度提升 10 倍:Apache Dubbo 静态化方案深入解析
  • PCB命名规则-allegro
  • [架构之路-240]:目标系统 - 纵向分层 - 应用层 - 应用层协议与业务应用程序的多样化,与大自然生物的丰富多彩,异曲同工
  • 探索数字时代的核心:服务器如何塑造未来并助你成就大业
  • spring6-资源操作:Resources
  • C语言 内存
  • Java设计模式之备忘录模式
  • 深度学习 | Pytorch深度学习实践
  • Elasticsearch7.9.3保姆级安装教程
  • 深入使用探讨 PuppeteerSharp 抓取 LinkedIn 页面的步骤
  • 联合体(共用体)
  • 从零开始:GitFlow详细教程,轻松掌握分支策略