1 简述

最近,想学角度融合算法在网上买一个JY61的模块。他们家的模块用起来还不错。模块分为串口通讯和IIC通讯的。串口读取数据他们家有例程,我就不说了。想分享给大家这个模块的IIC是怎么去读取MPU6050芯片数据的。

想要读取MPU6050芯片,其实就是通过IIC去操作读取寄存器。注意模块默认是串口直接输出数据的,需要先将模块设置为IIC模式后,才可以直接访问MPU6050芯片,不过因为角度数据是模块内部算法解出来的,用IIC接口无法获取到传感器角度数据了,如果要用IIC接口访问到角度数据需要选这他家的JY61P或者JY901。

连接的大致过程就是STM32和MPU6050先建立好IIC通讯。再去初始化MPU6050芯片。然后单片机再去读取寄存器,就能把数据读取出来了。

2 配置32单片机的IIC引脚

根据你32单片机的原理图,找到你的IIC引脚。

  • 时钟RCC的配置

以我自己写的为例子。

  • GPIO口的配置

注意:SCL和SDA都得接上两个4.7K的电阻。不然你是读取不到MPU6050的数据。

  • STM32的IIC的配置

3 初始化 MPU6050

     void MPU6050_Initialize()        {        MPU6050_I2C_ByteWrite(0xd0,0x00,MPU6050_RA_PWR_MGMT_1);     MPU6050_I2C_ByteWrite(0xd0,0x07,MPU6050_RA_SMPLRT_DIV);   MPU6050_I2C_ByteWrite(0xd0,0x06,MPU6050_RA_CONFIG);                 MPU6050_I2C_ByteWrite(0xd0,0x01,MPU6050_RA_ACCEL_CONFIG);     MPU6050_I2C_ByteWrite(0xd0,0x18,MPU6050_RA_GYRO_CONFIG);      }

注意:0xD0 表示 MPU6050 的地址。MPU6050有 8 位的地址,前 7 位由 WHO AM I 确定,第 8 位由 AD0 的电平决定。WHO AM I 默认值是 0x68H(1101000B),AD0 接低电平,所以 MPU6050 的 I2C 地址是 0xD0H(11010000B)。

4 核心读取程序

总结: 发送开始信号 -> 起始成功? -> 发送 MPU6050 地址、状态(写)-> 写地址成功? -> 发送 MPU6050内部某个待写寄存器地址 -> 发送成功? -> 发送要写入的内容 -> 发送成功? -> 发送结束信号

void MPU6050_I2C_BufferRead(u8 slaveAddr, u8* pBuffer, u8 readAddr, u16 NumByteToRead)
{while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));I2C_GenerateSTART(I2C1, ENABLE);//发送开始条件while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));//在EV5上测试并清除I2C_Send7bitAddress(I2C1, slaveAddr, I2C_Direction_Transmitter); //发送MOU6050地址进行写操作while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//在EV6上测试并清除I2C_Cmd(I2C1, ENABLE);//通过再次设置PE位来清除EV6I2C_SendData(I2C1, readAddr);//发送MPU6050的内部地址来写入while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));//在EV8上测试并清除I2C_GenerateSTART(I2C1, ENABLE);//第二次发送STRAT条件while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));//在EV5上测试并清除I2C_Send7bitAddress(I2C1, slaveAddr, I2C_Direction_Receiver);//发送MOU6050地址进行写操作while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));//在EV6上测试并清除while(NumByteToRead)//当有数据被读取到的时候{if(NumByteToRead == 1){I2C_AcknowledgeConfig(I2C1, DISABLE);//Acknowledge不使能I2C_GenerateSTOP(I2C1, ENABLE);//发送停止条件}if(I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))//在EV7上测试并清除{*pBuffer = I2C_ReceiveData(I2C1);//从MPU6050读取一个字节pBuffer++;//指向将保存读取的字节的下一个位置NumByteToRead--;//读取字节计数器减一}}I2C_AcknowledgeConfig(I2C1, ENABLE);//启用确认以准备再次接收
}

stm32 iic接口 进入busy_STM32通过IIC接口读取JY61模块MPU6050陀螺仪芯片数据核心程序...相关推荐

  1. stm32读取目标芯片_STM32通过IIC读取MPU6050陀螺仪芯片数据核心程序

    1  简 介 最近,想学角度融合算法在网上买一个JY61的模块.他们家的模块用起来还不错.模块分为串口通讯和IIC通讯的.串口读取数据他们家有例程,我就不说了.想分享给大家这个模块的IIC是怎么去读取 ...

  2. STM32读取MPU6050陀螺仪芯片数据核心程序

    1 简 介 最近,想学角度融合算法在网上买一个JY61的模块.他们家的模块用起来还不错.模块分为串口通讯和IIC通讯的.串口读取数据他们家有例程,我就不说了.想分享给大家这个模块的IIC是怎么去读取M ...

  3. 接口自动化实战之注册接口

    接口介绍 excel测试用例 代码实操 问题1:excel中数据类型的转换 test_register.py import unittest import ddt import os from com ...

  4. (123)FPGA面试题-介绍低速接口(UART、IIC、SPI),SPI有几根线,每根线的作用?(三)

    1.1 FPGA面试题-介绍低速接口(UART.IIC.SPI),SPI有几根线,每根线的作用?(三) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-介 ...

  5. 物联网开发笔记(80)- 使用Micropython开发ESP32开发板之通过IIC接口控制TM1650四位共阴数码管模块

    一.目的 这一节我们学习如何使用我们的ESP32开发板来通过IIC接口控制TM1650四位共阴数码管模块.  二.环境 ESP32 + Thonny + TM1650四位共阴数码管模块 + 几根杜邦线 ...

  6. STM32笔记20--电容触摸实验/IIC协议

    1.电容触摸按键实验 参考资料:<STM32开发指南-库函数版本>第16章 电容触摸按键实验 1.1.电容触摸按键实验原理 首先是模电的相关知识,如下图所示,当开关断开时,没有电流经过,电 ...

  7. STM32学习笔记(二)——常用接口

    (二)接口 64KB SRAM.512KB FLASH.2 个 基本定时器.4 个通用定时器.2 个高级定时器.2 个 DMA 控制器(共 12 个通道).3 个 SPI. 2 个 IIC.5 个串口 ...

  8. stm32 hal库 AS5600磁编码器IIC通信读取角度

    stm32 hal库 AS5600磁编码器IIC通信读取角度 下载

  9. IIC 差异电平传输 和 IIC 地址

    IIC双向电平转换电路设计 现代的集成电路工艺加工的间隙可达0.5μm 而且很少限制数字I/O 信号的最大电源电压和逻辑电平. 为了将这些低电压电路与已有的5V或其他I/O电压器件连接起来,接口需要一 ...

最新文章

  1. MySQL 乐观锁与悲观锁
  2. linux系统中怎么复制,linux下如何屏幕拷贝?
  3. Qt之QPropertyAnimation
  4. layui 读取本地excel内容_layui之数据表格--与后台交互获取数据的方法
  5. 协方差矩阵(covariance matrix)
  6. 用MFC消息映射机制自定义消息
  7. Java编程:普里姆算法(已知起点求最小生成树)
  8. magisk下载里显示没有模块_太极Magisk模块
  9. 前端H5面试题(vue为主)
  10. 几个不知道算不算经典的游戏
  11. iOS亮屏解锁命令【iOS自动化测试】--使用ssh
  12. Codeforces Round #490 (Div. 3) C. Alphabetic Removals
  13. 魔百盒M301H-九联(JL)代工-强刷固件及教程
  14. char*data和char data[]
  15. C++刷题的一些小tips
  16. 航班信息管理系统java_java实现航班信息查询管理系统
  17. MagickNet 缩图工具
  18. typedef and define
  19. 利用Python实现自动扫雷小脚本
  20. 【前端开发】关于图片/使用/下载/切图

热门文章

  1. 2018 年 ACM-ICPC 焦作站现场赛感受
  2. Acwing第 11 场周赛【未完结】
  3. 【AC Saber】高精度
  4. Java之主数据类型的包装
  5. Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/ibatis/io/Resources
  6. Keepalived设置开机自启
  7. python 避免多重条件嵌套_如何避免多层嵌套函数
  8. 2021- 10 -13 AVL树的平衡调整(有parent指针) 代码逻辑
  9. 【Spring注解系列10】SpringBean的生命周期
  10. hdu2147 kiki's game(巴什博弈java)