文章目录

  • 代码实现
    • JY901.h
    • JY901.c

# 前言

本文主要提供F4系列芯片针对JY901芯片的通讯库,供各位参考


JY901芯片提供的库函数是没有F4芯片的资料的,我对着提供的F1芯片模拟IIC通讯改了一些,使用F4硬件IIC系统实现通讯效果
开发者留意下使用iic的地址,0x50要左移一位
(作者泪奔,调试一下午没出结果就因为这个)
文件LobotServoController.h、bool.h请保存到include文件夹中
文件LobotServoController.c请保存到source文件夹中

代码实现

JY901.h

#ifndef JY901_H
#define JY901_H#define SAVE             0x00
#define CALSW       0x01
#define RSW             0x02
#define RRATE           0x03
#define BAUD            0x04
#define AXOFFSET    0x05
#define AYOFFSET    0x06
#define AZOFFSET    0x07
#define GXOFFSET    0x08
#define GYOFFSET    0x09
#define GZOFFSET    0x0a
#define HXOFFSET    0x0b
#define HYOFFSET    0x0c
#define HZOFFSET    0x0d
#define D0MODE      0x0e
#define D1MODE      0x0f
#define D2MODE      0x10
#define D3MODE      0x11
#define D0PWMH      0x12
#define D1PWMH      0x13
#define D2PWMH      0x14
#define D3PWMH      0x15
#define D0PWMT      0x16
#define D1PWMT      0x17
#define D2PWMT      0x18
#define D3PWMT      0x19
#define IICADDR     0x1a
#define LEDOFF      0x1b
#define GPSBAUD     0x1c#define YYMM                0x30
#define DDHH                0x31
#define MMSS                0x32
#define MS                  0x33
#define AX                  0x34
#define AY                  0x35
#define AZ                  0x36
#define GX                  0x37
#define GY                  0x38
#define GZ                  0x39
#define HX                  0x3a
#define HY                  0x3b
#define HZ                  0x3c
#define Roll                0x3d
#define Pitch               0x3e
#define Yaw                 0x3f
#define TEMP                0x40
#define D0Status        0x41
#define D1Status        0x42
#define D2Status        0x43
#define D3Status        0x44
#define PressureL       0x45
#define PressureH       0x46
#define HeightL         0x47
#define HeightH         0x48
#define LonL                0x49
#define LonH                0x4a
#define LatL                0x4b
#define LatH                0x4c
#define GPSHeight   0x4d
#define GPSYAW      0x4e
#define GPSVL               0x4f
#define GPSVH               0x50#define DIO_MODE_AIN 0
#define DIO_MODE_DIN 1
#define DIO_MODE_DOH 2
#define DIO_MODE_DOL 3
#define DIO_MODE_DOPWM 4
#define DIO_MODE_GPS 5          typedef struct
{float a[3],w[3],h[3],Angle[3];
}JY901_Angle;void JY901_RDDat(JY901_Angle *IMUx);#endif

JY901.c

#include "JY901.h"
#include "stm32f401xc.h"
#include "i2c.h"
#include "usbd_cdc_if.h"unsigned char chrTemp[30];JY901_Angle IMU;void ShortToChar(short sData,unsigned char cData[])
{cData[0]=sData&0xff;cData[1]=sData>>8;
}
short CharToShort(unsigned char cData[])
{return ((short)cData[1]<<8)|cData[0];
}void JY901_RDDat(JY901_Angle *IMUx)
{//HAL_I2C_Mem_Read(&hi2c1, 0x50, AX, I2C_MEMADD_SIZE_8BIT, &chrTemp[0] , 24, 10);//HAL_I2C_Mem_Read(&hi2c1, 0x78, AX, I2C_MEMADD_SIZE_8BIT, &chrTemp[0] , 24, 10);HAL_I2C_Mem_Read(&hi2c1, 0x50<<1, AX, I2C_MEMADD_SIZE_8BIT, &chrTemp[0] , 24, 0xff);(*IMUx).a[0] = (float)CharToShort(&chrTemp[0])/32768*16;(*IMUx).a[1] = (float)CharToShort(&chrTemp[2])/32768*16;(*IMUx).a[2] = (float)CharToShort(&chrTemp[4])/32768*16;(*IMUx).w[0] = (float)CharToShort(&chrTemp[6])/32768*2000;(*IMUx).w[1] = (float)CharToShort(&chrTemp[8])/32768*2000;(*IMUx).w[2] = (float)CharToShort(&chrTemp[10])/32768*2000;(*IMUx).h[0] = CharToShort(&chrTemp[12]);(*IMUx).h[1] = CharToShort(&chrTemp[14]);(*IMUx).h[2] = CharToShort(&chrTemp[16]);(*IMUx).Angle[0] = (float)CharToShort(&chrTemp[18])/32768*180;(*IMUx).Angle[1] = (float)CharToShort(&chrTemp[20])/32768*180;(*IMUx).Angle[2] = (float)CharToShort(&chrTemp[22])/32768*180;
}

工程文件参考——CubeMX+STM32F4+FreeRTOS+IIC实现JY901通讯相关推荐

  1. 工程文件参考——STM32F4+幻尔LSC舵机控制板 四足机器人足端逆解控制器

    文章目录 代码实现 Quadruped_huaner.h Quadruped_huaner.c # 前言 本文主要提供使用F4系列芯片针对幻尔LSC舵机控制板的四足机器人足端坐标逆解库,供各位参考 请 ...

  2. 课设舵机狗总结文——CubeMX+STM32F4+FreeRTOS+USART2+幻尔舵机控制板 实现动作组稳定运动

    课设舵机狗总结文系列文章目录 这里罗列了系列文章链接 总述 课设舵机狗总结文--总集篇 机械部分 课设舵机狗总结文--Solidworks舵机狗机械结构设计方案 F4控制部分 课设舵机狗总结文--Cu ...

  3. STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)

    本文也适合STM32CubeMX 支持的所有芯片的设置 ..调整文章结构,添加图文说明 2022.2 ..增加其他应用章节,增加 ADC 设置说明 2023.3 CubeMX生成工程步骤 前言 一.时 ...

  4. fifo介绍及fifo IP核使用(工程文件获取请参考文末)

    一.fifo简介 1.fifo first in first out的缩写,先进先出数据缓存器. 与普通存储器的区别:对外接口没有地址线. 由此所带来的优点是:不用处理地址信号,时序较简单. 缺点是: ...

  5. STM32之添加工程文件(参考洋桃电子视频)

    添加工程文件步骤 与添加固件库相似. 1.点击右键,新建文件夹并取名字 2.在文件夹中新建子文件夹并命名 3.在子文件夹里建立文本文档,把名字改为xxx.c和xxx.h 4.在keil软件中添加驱动程 ...

  6. 这些优质级C4D工程文件,免费分享,值得参考

    工欲善其事必先利其器!! 今天我们为你精选了精选12套C4D工程文件 下面是图片预览,详情可在某宝搜索得知 C4D Redshift半透明橙色塑料科幻造型创意工程场景3D模型 C4D Redshift ...

  7. STM32移植LVGL8.0.2超详细的保姆级教程附移植好的工程文件

    文章目录 前言 一.什么是LVGL? 二.先看效果 三.移植前准备工作 1.准备原有工程 2.下载LVGL源码 四.开始移植 1.把源码搬运到工程文件夹里 2.把搬运好的代码添加到keil工程 3.动 ...

  8. CubeMX+STM32F4+DHT11模块

    文章目录 前言 一.CubeMX配置 二.代码 总结 前言 本文主要介绍利用CubeMX配置STM32F4系列芯片读取DHT11温湿度采集模块,仅作于学习 一.CubeMX配置 1.新建工程,配置相关 ...

  9. VS2010 ,工程文件减肥

    写一个bat文件来清理VS2010工程文件. 将其放入到工程文件夹下,双击即可自动将sdf,ipch等占用空间很大的文件删除. 这样的方式较之于转移浏览数据库文件的位置而言更为灵活一些,不用特别的设置 ...

最新文章

  1. python代码根据时间获取周数(week of the year)
  2. [Google Guava] 12-数学运算
  3. Linux 进程管理命令
  4. 利用Flask来构建项目的大概步骤
  5. 9_InfluxDB常用函数(二)选择类函数(TOP() BOTTOM() FIRST() LAST() MAX() MIN() PERCENTILE())
  6. B. Complete the Word (尺取法)
  7. java面试题24 关于Java中的数组,
  8. Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)
  9. 存储器是计算机的记忆装置,存储器(Memory)
  10. Magento教程 24:如何发送电子报! (Newsletter)
  11. 外部接口需求怎么写_怎么写财务工作报告?送你16套高逼格财务工作报告范文PPT模板,满足不同行业会计需求!...
  12. tf2多种方式对图像数据集进行预处理
  13. 动态卷积:自适应调整卷积参数,显著提升模型表达能力
  14. 快门速度,光圈,感光度
  15. [leetcode]初级算法——动态规划
  16. 【Photoshop实用教程】如何用魔术棒工具替换背景?
  17. Matplotlib画折线图
  18. 包子笔记 - 三知道原则
  19. qemu stm32环境搭建教程
  20. Qt之QSqlDatabase 添加自定义物理键盘输入法

热门文章

  1. 浅谈yolov4中的一部分数据增强
  2. 小程序里说的冷启动和热启动是什么
  3. 【前端学习项目】web前端#001网页点名器(html+css+js实现用户交互)
  4. linux NM 命令使用介绍
  5. 巧妇居家过日子的妙招
  6. 【python】django实现扫码签到
  7. 聊聊上海嘉定办居住证
  8. 计算机软件企业申请商标,软件商标注册申请流程
  9. AXI中READY与VALID之间握手关系
  10. 计算机内存容量影响游戏的吗,内存容量对整机游戏性能影响有多大?看完秒懂...