查看: 4530|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-16 05:52
  • 签到天数: 1368 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-8-14 19:58:49 | 显示全部楼层 |阅读模式
    分享到:

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

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


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


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

    1.png

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

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

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


    初始化配置:

    2.png

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

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


    读写的代码:

    3.png

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

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

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


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

    HMC5883.rar (1.6 KB, 下载次数: 24)

    评分

    参与人数 1与非币 +5 收起 理由
    loveeeboard + 5 三周年铜板双倍!

    查看全部评分

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 08:28 , Processed in 0.128445 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.