查看: 217|回复: 6
打印 上一主题 下一主题

【F030 Nucleo】4.连接HMC5883L(硬件I2C)

[复制链接] qrcode

27

主题

50

帖子

132

积分

注册会员

Rank: 2

积分
132
楼主
跳转到指定楼层
发表于 2015-8-14 07:28 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    都说STM32的I2C是有Bug的,以前为了省事一直用模拟方式来实现I2C,所以没有遇到。

    这次为了验证一下这个Bug,特意使用了硬件方式操作I2C,经过了两个晚上的摸索,终于能够得到数据了。不敢独享,拿出来给遇到问题的朋友做参考。


    图片就不上了,就是从taobao上买的HMC5883L的模块,I2C的两个脚和一个VCC、一个GND,连接很简单。


    同样封装成了C++的类,其实和C是一样的

    其他的不用理会,主要的地方是地址。

    硬件I2C配置是要的地址是8位的,而不是7位的,所以我特意写成了0x1E << 1 这个样子,着重表示。

    STM32在操作时会自动右移完成+0或+1的操作。


初始化配置:

    全部初始化配置的过程,就这么几句话,翻来覆去折腾了好多遍才成功。

    WriteByte的是HMC5883L的初始化,和硬件I2C的配置没有关系,可以不看。


读写的代码:

    虽然看着很简单,但是不知道应在怎样写的时候可是很头疼的。

    最常见的问题就是在I2C_SendData之后,死在了while里,也就是说I2C_FLAG_TC始终为0。

    这个问题其实就是初始化配置的不对造成的,一定要注意。


最后附上整个文件供大家参考:

    

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

81

主题

176

帖子

292

积分

中级会员

Rank: 3Rank: 3

积分
292
沙发
发表于 2015-8-14 09:18 PM | 只看该作者
多谢分享。。学习了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

0

主题

91

帖子

4

积分

新手上路

Rank: 1

积分
4
板凳
发表于 2015-8-14 11:21 PM | 只看该作者
谢谢分享顶一个
回复 支持 反对

使用道具 举报

21

主题

288

帖子

437

积分

中级会员

Rank: 3Rank: 3

积分
437
地板
发表于 2015-8-15 11:25 AM | 只看该作者
你是不是出教程的那个刘洋老师啊
回复 支持 反对

使用道具 举报

0

主题

71

帖子

18

积分

新手上路

Rank: 1

积分
18
5#
发表于 2015-8-15 01:10 PM | 只看该作者
我是LiuYang,写过连载的东西,老师不敢当啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

2

主题

85

帖子

10

积分

新手上路

Rank: 1

积分
10
6#
发表于 2015-8-15 03:39 PM | 只看该作者
出过视频教程吗
回复 支持 反对

使用道具 举报

1

主题

81

帖子

23

积分

新手上路

Rank: 1

积分
23
7#
发表于 2015-8-15 03:50 PM | 只看该作者
没有视频的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表