1赞

6回答

0收藏

STM32陀螺仪MPU6050/MPU9150数据读取I2C总线波形和分析

#开源分享 #开源分享 13665 人阅读 | 6 人回复 | 2014-03-09

STM32陀螺仪MPU6050/MPU9150数据读取I2C总线波形和分析:



1.首先是起始操作(图中红色线条处)
2.接下来是设备地址,共9个时钟,前面7个是地址,然后是读写标志,最后是MPU6050/MPU9150应答标志。我们看到,前面7个数是:1101000,换算成16进制,就是0x68。第8个是0,表明是写传输,第9个是0,是由MPU6050/MPU9150芯片驱动的,表明MPU6050/MPU9150芯片应答了这个地址。如果MPU6050/MPU9150芯片没有应答这个0x68地址信号,那么第9个数会显示1。
3.接下来是STM32发送要读的MPU6050/MPU9150芯片寄存器地址,共9个时钟。前面8个依次是:01110101,换算成16进制,就是0x75。第9个是0,是由MPU6050/MPU9150芯片驱动的,表明MPU6050/MPU9150芯片应答了这个操作。
4.前面STM32发送完MPU6050/MPU9150芯片设备地址0x68,,寄存器地址0x75后,要告诉MPU6050/MPU9150芯片,接下来STM32要读数据了。所以STM32重新发送了一个起始操作,表示在上图中的一个时钟。
5.接下来,STM32重复发送MPU6050/MPU9150芯片地址,在图中,我们看到9个数据位,前面7个依次是1101000,即0x68,第8个数据位变成了1,表明接下来的是读操作。第9个是0,表明MPU6050/MPU9150芯片应答了这个地址。
6.接下来总线上出现了9个时钟,前面8个时钟对应的数据01101000,换算成16进制,就是0x68。这个刚好是MPU6050/MPU9150芯片的ID.即MPU6050/MPU9150芯片的WHOAMI寄存器。第9个时钟对应的数据是1,表明STM32不再需要读数据,即I2C总线中的NACK.
7.由于数据读取结束,STM32发送结束标志。至此,通讯完成。

点评

点个赞  发表于 2015-8-17 00:35
分享到:
回复

使用道具 举报

回答|共 6 个

倒序浏览

沙发

fj1161

发表于 2014-3-9 14:58:26 | 只看该作者

顶一个~~~~~~~~~~~~~~·
第五年了,这次一定要坚持到底,不留遗憾!!!
板凳

GY@艳

发表于 2014-3-11 08:51:55 | 只看该作者

力邀 更多更详尽的内容哟
爱板  爱板  爱板     https://www.cirmall.com
地板

jj1989

发表于 2014-3-13 17:42:44 | 只看该作者

感谢分享,刚看过芯片手册,再看这个,很清晰。
5#

我擦

发表于 2014-10-22 20:59:26 | 只看该作者

你这个是模拟的I2C啊
6#

有一点心动

发表于 2014-12-23 23:04:08 | 只看该作者

很不错
7#

党国特派员

发表于 2015-8-16 22:06:11 | 只看该作者

ARM Cortex-M4体系结构与外设接口实战开发
喜欢在构思妙想,电子产品DIY是工作,也是一种爱好。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条