ArterySW 发表于 2023-10-30 14:06

SC0123 AT32硬件I2C与MPU6050通信

SC0123 AT32硬件I2C与MPU6050通信示例目的
演示AT32硬件I2C与MPU6050通信。
注:本应用笔记对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发,对于其他版本BSP,需要注意使用上的区别。

支持型号列表:
AT32F403xx
AT32F403Axx
AT32F407xx
AT32F413xx
AT32F415xx
AT32F421xx
AT32A403Axx
AT32F423xx
AT32F402xx
AT32F405xx
AT32F435xx
AT32F437xx
AT32F423xx
AT32F425xx
AT32L021xx

主要使用外设列表:
I2C
DMA

快速使用方法
硬件资源
1) AT-START-F403A V1.0开发板(其他型号请使用对应的开发板)
2) 串口PA9, PA10
3) PB6连接MPU6050的SCL
4) PB7连接MPU6050的SDA
5) PB8连接MPU6050的AD0
6) PB9连接MPU6050的INT
https://img.anfulai.cn/dz/attachment/forum/202310/30/140308gyykllgkomsag0py.png

软件资源
1) SourceCode
AT32F403A (F403、AT32F407、F421、F413、F415、A403A 参考此程序)
AT32F435(AT32F437、F423、F402、F405、F425、L021参考此程序)
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
示例使用
1) 软件件包一共有以下两个例程
dmp:该例程使用官方DMP库,得到四元数,最后算出欧拉角
fusion_filter:该例程使用软件融合滤波算法,软件算出四元数,最后算出欧拉角
2) 打开源程序,编译后下载到实验板
3) 通过串口查看角度数据
https://img.anfulai.cn/dz/attachment/forum/202310/30/140308l9ope6kez2vf0p2x.png

ceiven 发表于 2023-10-31 11:57

终于等到了 哈哈 最近一直在415START上玩mpu6050,刚开始还在论坛发了求助帖,没想到这么快就有例程了,虽然自己也调通了,但还是可以拿过来学习学习

bartonalfred 发表于 2023-11-6 22:05

MPU6050具有可配置的I2C地址,默认地址为0x68。

ccook11 发表于 2023-11-6 22:15

进行进一步的数据处理和转换,以获得实际的物理量。

tpgf 发表于 2023-11-7 11:23

楼主说的是这个工程能支持这么多的型号吧

heimaojingzhang 发表于 2023-11-7 11:59

bartonalfred 发表于 2023-11-6 22:05
MPU6050具有可配置的I2C地址,默认地址为0x68。

可以在运行过程中进行地址更改吗

keaibukelian 发表于 2023-11-7 12:30

heimaojingzhang 发表于 2023-11-7 11:59
可以在运行过程中进行地址更改吗

我觉得如果操作好的话应该是可以实现的

zerorobert 发表于 2023-11-7 12:50

在通信过程中可能会出现错误,例如设备无响应或数据传输错误。务必对这些错误进行适当的处理

paotangsan 发表于 2023-11-7 12:59

可以使用一个外设来模拟多个外设吗

renzheshengui 发表于 2023-11-7 14:13

bartonalfred 发表于 2023-11-6 22:05
MPU6050具有可配置的I2C地址,默认地址为0x68。

这种可配置是通过什么进行配置的呢

51xlf 发表于 2023-11-7 15:41

STM32 MPU6050硬件I2C程序可作为参考实现。

nomomy 发表于 2023-11-7 16:02

在I2C通讯中,需要指定数据地址,即发送或接收数据的地址。

sdCAD 发表于 2023-11-7 16:24

在可变多主机模式下,多个设备可能会同时占用I2C总线,此时需要使用总线仲裁机制来决定主从设备的优先级。

biechedan 发表于 2023-11-7 16:45

通常,MPU6050支持400kHz的I2C时钟速率。

mickit 发表于 2023-11-7 17:08

MPU6050具有多个寄存器,需要了解各个寄存器的功能及映射关系

belindagraham 发表于 2023-11-7 17:33

在I2C通讯中,起始信号是连接I2C总线的第一步,需要正确生成起始信号以便后续的数据传输。

mnynt121 发表于 2023-11-7 17:53

MPU6050设备具有唯一的地址,通常为0x68或0x69。

cemaj 发表于 2023-11-7 18:11

为了避免总线没协调好导致电源短路,配置为开漏输出,所有设备输出低电平不输出高电平。同时,总线外接上拉电阻(弱上拉)可以避免短路问题和引脚模式频繁切换。

averyleigh 发表于 2023-11-7 18:31

I2C总线是半双工的,所以在发送数据和接收数据时需要特别注意时序问题。确保在发送完数据后,等待设备回应后再进行下一次发送。

1988020566 发表于 2023-11-7 18:53

在I2C通讯中,需要选择合适的主机模式,即选择是作为主设备还是从设备。
页: [1] 2
查看完整版本: SC0123 AT32硬件I2C与MPU6050通信